diff --git a/.travis.yml b/.travis.yml index 75d81c0645..cea5f854c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ env: global: - BASENAME="vorestation" # $BASENAME.dmb, $BASENAME.dme, etc. - BYOND_MAJOR="513" - - BYOND_MINOR="1513" + - BYOND_MINOR="1520" - MACRO_COUNT=4 cache: diff --git a/ATTRIBUTIONS.md b/ATTRIBUTIONS.md new file mode 100644 index 0000000000..de1166543f --- /dev/null +++ b/ATTRIBUTIONS.md @@ -0,0 +1,39 @@ +**File:** `maps/tether/submaps/om_ships/aro2.dmi`
+**Creator:** Nia Tahl, deriv by Aronai.
+**License:** [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/)
+**URL:** [Forum Thread](http://fractalsoftworks.com/forum/index.php?topic=14935.0)
+**Notes:** Permission to use assets also given in writing.
+
+**File:** `maps/tether/submaps/om_ships/cruiser.dmi`
+**Creator:** Gwyvern & Tartiflette
+**License:** [CC BY-NC-SA (Unspecified Version)](https://creativecommons.org/licenses/by-nc-sa/4.0/)
+**URL:** [Forum Thread](http://fractalsoftworks.com/forum/index.php?topic=13667.0)
+**Notes:** Permission to use assets also given in writing.
+
+**File:** `icons/mecha/fighters64x64.dmi`
+**Icon-States:** `baron`, derivs by Aronai.
+**Creator:** Gwyvern & Tartiflette
+**License:** [CC BY-NC-SA (Unspecified Version)](https://creativecommons.org/licenses/by-nc-sa/4.0/)
+**URL:** [Forum Thread](http://fractalsoftworks.com/forum/index.php?topic=13667.0)
+**Notes:** Permission to use assets also given in writing.
+
+**File:** `icons/mecha/fighters64x64.dmi`
+**Icon-States:** `pinnace`, derivs by Aronai.
+**Creator:** Tartiflette
+**License:** [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/)
+**URL:** [Forum Thread](http://fractalsoftworks.com/forum/index.php?topic=17856.0)
+**Notes:** Permission to use assets also given in writing.
+
+**File:** `icons/mecha/fighters64x64.dmi`
+**Icon-States:** `allure`, derivs by Aronai.
+**Creator:** Tartiflette
+**License:** [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/)
+**URL:** [Forum Thread](http://fractalsoftworks.com/forum/index.php?topic=11646.0)
+**Notes:** Permission to use assets also given in writing.
+
+**File:** `icons/mecha/fighters64x64.dmi`
+**Icon-States:** `scoralis`, derivs by Aronai.
+**Creator:** Nia Tahl
+**License:** [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/)
+**URL:** [Forum Thread](http://fractalsoftworks.com/forum/index.php?topic=14935.0)
+**Notes:** Permission to use assets also given in writing.
diff --git a/README.md b/README.md index f60ad141eb..7fb49ca3dd 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,8 @@ Creative Commons 3.0 BY-NC-SA license All assets including icons and sound are under a [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) license unless otherwise indicated. +Attributions and other licenses with links to original works are noted in [ATTRIBUTIONS.md](./ATTRIBUTIONS.md). + ### GETTING THE CODE The simplest way to obtain the code is using the github .zip feature. If you do this, you won't be able to make a Pull Request later, though. You'll need to use the git method. diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index 809cc987eb..86a87223eb 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -200,8 +200,9 @@ set_frequency(frequency) /obj/machinery/atmospherics/binary/dp_vent_pump/examine(mob/user) - if(..(user, 1)) - to_chat(user, "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W") + . = ..() + if(Adjacent(user)) + . += "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W" /obj/machinery/atmospherics/unary/vent_pump/power_change() diff --git a/code/ATMOSPHERICS/components/shutoff.dm b/code/ATMOSPHERICS/components/shutoff.dm index 87d2698841..d7d8076214 100644 --- a/code/ATMOSPHERICS/components/shutoff.dm +++ b/code/ATMOSPHERICS/components/shutoff.dm @@ -15,8 +15,8 @@ GLOBAL_LIST_EMPTY(shutoff_valves) icon_state = "vclamp[open]" /obj/machinery/atmospherics/valve/shutoff/examine(var/mob/user) - ..() - to_chat(user, "The automatic shutoff circuit is [close_on_leaks ? "enabled" : "disabled"].") + . = ..() + . += "The automatic shutoff circuit is [close_on_leaks ? "enabled" : "disabled"]." /obj/machinery/atmospherics/valve/shutoff/Initialize() . = ..() diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm index 21e1a34d33..bde060a11a 100755 --- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm @@ -185,7 +185,7 @@ var/new_flow_rate = input(usr,"Enter new flow rate (0-[air1.volume]L/s)","Flow Rate Control",src.set_flow_rate) as num src.set_flow_rate = max(0, min(air1.volume, new_flow_rate)) if(href_list["power"]) - use_power=!use_power + update_use_power(!use_power) src.update_icon() src.updateUsrDialog() /* diff --git a/code/ATMOSPHERICS/components/unary/cold_sink.dm b/code/ATMOSPHERICS/components/unary/cold_sink.dm index f665ba987a..b4c1e30fba 100644 --- a/code/ATMOSPHERICS/components/unary/cold_sink.dm +++ b/code/ATMOSPHERICS/components/unary/cold_sink.dm @@ -178,6 +178,6 @@ ..() /obj/machinery/atmospherics/unary/freezer/examine(mob/user) - ..(user) + . = ..() if(panel_open) - to_chat(user, "The maintenance hatch is open.") + . += "The maintenance hatch is open." diff --git a/code/ATMOSPHERICS/components/unary/heat_source.dm b/code/ATMOSPHERICS/components/unary/heat_source.dm index 7fbe881891..3537082ada 100644 --- a/code/ATMOSPHERICS/components/unary/heat_source.dm +++ b/code/ATMOSPHERICS/components/unary/heat_source.dm @@ -165,6 +165,6 @@ ..() /obj/machinery/atmospherics/unary/heater/examine(mob/user) - ..(user) + ..() if(panel_open) - to_chat(user, "The maintenance hatch is open.") + . += "The maintenance hatch is open." diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 5b0fd20efb..e687eac639 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -47,7 +47,7 @@ var/radio_filter_out var/radio_filter_in - var/datum/looping_sound/air_pump/soundloop //Yawn Edit + var/datum/looping_sound/air_pump/soundloop /obj/machinery/atmospherics/unary/vent_pump/on use_power = USE_POWER_IDLE @@ -77,7 +77,7 @@ /obj/machinery/atmospherics/unary/vent_pump/Initialize() . = ..() - soundloop = new(list(src), FALSE) //Yawn Edit + soundloop = new(list(src), FALSE) /obj/machinery/atmospherics/unary/vent_pump/New() ..() @@ -95,7 +95,7 @@ if(initial_loc) initial_loc.air_vent_info -= id_tag initial_loc.air_vent_names -= id_tag - QDEL_NULL(soundloop) //Yawn Edit + QDEL_NULL(soundloop) return ..() /obj/machinery/atmospherics/unary/vent_pump/high_volume @@ -181,15 +181,15 @@ /obj/machinery/atmospherics/unary/vent_pump/proc/can_pump() if(stat & (NOPOWER|BROKEN)) - soundloop.stop() //Yawn Edit + soundloop.stop() return 0 if(!use_power) - soundloop.stop() //Yawn Edit + soundloop.stop() return 0 if(welded) - soundloop.stop() //Yawn Edit + soundloop.stop() return 0 - soundloop.start() //Yawn Edit + soundloop.start() return 1 /obj/machinery/atmospherics/unary/vent_pump/process() @@ -414,12 +414,13 @@ ..() /obj/machinery/atmospherics/unary/vent_pump/examine(mob/user) - if(..(user, 1)) - to_chat(user, "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W") + . = ..() + if(Adjacent(user)) + . += "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W" else - to_chat(user, "You are too far away to read the gauge.") + . += "You are too far away to read the gauge." if(welded) - to_chat(user, "It seems welded shut.") + . += "It seems welded shut." /obj/machinery/atmospherics/unary/vent_pump/power_change() var/old_stat = stat diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 1c1c696b98..2c51eecfc6 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -287,7 +287,8 @@ deconstruct() /obj/machinery/atmospherics/unary/vent_scrubber/examine(mob/user) - if(..(user, 1)) - to_chat(user, "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W") + . = ..() + if(Adjacent(user)) + . += "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W" else - to_chat(user, "You are too far away to read the gauge.") + . += "You are too far away to read the gauge." diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index dd68782bc5..3ded7b7388 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -307,5 +307,5 @@ deconstruct() /obj/machinery/atmospherics/valve/examine(mob/user) - ..() - to_chat(user, "It is [open ? "open" : "closed"].") + . = ..() + . += "It is [open ? "open" : "closed"]." diff --git a/code/ATMOSPHERICS/pipes/he_pipes.dm b/code/ATMOSPHERICS/pipes/he_pipes.dm index 843d349633..8b1b800830 100644 --- a/code/ATMOSPHERICS/pipes/he_pipes.dm +++ b/code/ATMOSPHERICS/pipes/he_pipes.dm @@ -88,6 +88,8 @@ if(!parent) ..() else + if(leaking) + parent.mingle_with_turf(loc, volume) var/datum/gas_mixture/pipe_air = return_air() if(istype(loc, /turf/simulated/)) var/environment_temperature = 0 diff --git a/code/ZAS/Atom.dm b/code/ZAS/Atom.dm index 0457dce1a5..b395c4551e 100644 --- a/code/ZAS/Atom.dm +++ b/code/ZAS/Atom.dm @@ -16,13 +16,19 @@ // Inputs: The turf the airflow is from, which may not be the same as loc. is_zone is for conditionally disallowing merging. // Outputs: Boolean if airflow can pass. /atom/proc/CanZASPass(turf/T, is_zone) + // Behaviors defined here so when people directly call c_airblock it will still obey can_atmos_pass switch(can_atmos_pass) + if(ATMOS_PASS_YES) + return TRUE + if(ATMOS_PASS_NO) + return FALSE if(ATMOS_PASS_DENSITY) return !density + if(ATMOS_PASS_PROC) + // Cowardly refuse to recursively self-call CanZASPass. The hero BYOND needs? + CRASH("can_atmos_pass = ATMOS_PASS_PROC but CanZASPass not overridden on [src] ([type])") else - return can_atmos_pass - -/turf/can_atmos_pass = ATMOS_PASS_NO + CRASH("Invalid can_atmos_pass = [can_atmos_pass] on [src] ([type])") /turf/CanPass(atom/movable/mover, turf/target) if(!target) return FALSE @@ -89,6 +95,15 @@ turf/c_airblock(turf/other) var/result = 0 for(var/mm in contents) var/atom/movable/M = mm - result |= M.c_airblock(other) + switch(M.can_atmos_pass) + if(ATMOS_PASS_YES) + continue + if(ATMOS_PASS_NO) + return BLOCKED + if(ATMOS_PASS_DENSITY) + if(M.density) + return BLOCKED + if(ATMOS_PASS_PROC) + result |= M.c_airblock(other) if(result == BLOCKED) return BLOCKED return result diff --git a/code/__defines/ZAS.dm b/code/__defines/ZAS.dm index 8712dd2bf7..1760505f3a 100644 --- a/code/__defines/ZAS.dm +++ b/code/__defines/ZAS.dm @@ -4,3 +4,10 @@ #define BLOCKED 3 // Blocked, zone boundaries will not cross even if opened. #define ZONE_MIN_SIZE 14 // Zones with less than this many turfs will always merge, even if the connection is not direct + +// Used for quickly making certain things allow airflow or not. +// More complicated, conditional airflow should override CanZASPass(). +#define ATMOS_PASS_YES 1 // Always blocks air and zones. +#define ATMOS_PASS_NO 2 // Never blocks air or zones. +#define ATMOS_PASS_DENSITY 3 // Blocks air and zones if density = 1, allows both if density = 0 +#define ATMOS_PASS_PROC 4 // Call CanZASPass() using c_airblock diff --git a/code/__defines/__513_compatibility.dm b/code/__defines/__513_compatibility.dm index 7f8d7eb4e6..78583570ff 100644 --- a/code/__defines/__513_compatibility.dm +++ b/code/__defines/__513_compatibility.dm @@ -1,6 +1,6 @@ #if DM_VERSION < 513 -#define ismovableatom(A) (istype(A, /atom/movable)) +#define ismovable(A) (istype(A, /atom/movable)) #define islist(L) (istype(L, /list)) @@ -18,8 +18,6 @@ #else -#define ismovableatom(A) ismovable(A) - #define CLAMP01(x) clamp(x, 0, 1) #define CLAMP(CLVALUE, CLMIN, CLMAX) clamp(CLVALUE, CLMIN, CLMAX) diff --git a/code/__defines/atmos.dm b/code/__defines/atmos.dm index 56055273e4..424f2a2639 100644 --- a/code/__defines/atmos.dm +++ b/code/__defines/atmos.dm @@ -94,9 +94,3 @@ #define ATMOSTANK_CO2 25000 // CO2 and PH are not critically important for station, only for toxins and alternative coolants, no need to store a lot of those. #define ATMOSTANK_PHORON 25000 #define ATMOSTANK_NITROUSOXIDE 10000 // N2O doesn't have a real useful use, i guess it's on station just to allow refilling of sec's riot control canisters? - -// Used for quickly making certain things allow airflow or not. -// More complicated, conditional airflow should override CanZASPass(). -#define ATMOS_PASS_YES 1 -#define ATMOS_PASS_NO 0 -#define ATMOS_PASS_DENSITY -1 // Just checks density. \ No newline at end of file diff --git a/code/__defines/construction.dm b/code/__defines/construction.dm index 33d558497d..36073ca4f8 100644 --- a/code/__defines/construction.dm +++ b/code/__defines/construction.dm @@ -81,10 +81,28 @@ #define DISPOSAL_PIPE_TAGGER 13 #define DISPOSAL_PIPE_TAGGER_PARTIAL 14 +// Disposals Construction +// Future: Eliminate these type codes by adding disposals equivilent of pipe_state. +#define DISPOSAL_PIPE_STRAIGHT 0 +#define DISPOSAL_PIPE_CORNER 1 +#define DISPOSAL_PIPE_JUNCTION 2 +#define DISPOSAL_PIPE_JUNCTION_FLIPPED 3 +#define DISPOSAL_PIPE_JUNCTION_Y 4 +#define DISPOSAL_PIPE_TRUNK 5 +#define DISPOSAL_PIPE_BIN 6 +#define DISPOSAL_PIPE_OUTLET 7 +#define DISPOSAL_PIPE_CHUTE 8 +#define DISPOSAL_PIPE_SORTER 9 +#define DISPOSAL_PIPE_SORTER_FLIPPED 10 +#define DISPOSAL_PIPE_UPWARD 11 +#define DISPOSAL_PIPE_DOWNWARD 12 +#define DISPOSAL_PIPE_TAGGER 13 +#define DISPOSAL_PIPE_TAGGER_PARTIAL 14 + #define DISPOSAL_SORT_NORMAL 0 #define DISPOSAL_SORT_WILDCARD 1 #define DISPOSAL_SORT_UNTAGGED 2 -//YW Additions end + // Macro for easy use of boilerplate code for searching for a valid node connection. #define STANDARD_ATMOS_CHOOSE_NODE(node_num, direction) \ for(var/obj/machinery/atmospherics/target in get_step(src, direction)) { \ diff --git a/code/__defines/gamemode.dm b/code/__defines/gamemode.dm index 02f1b11ee1..5f67308094 100644 --- a/code/__defines/gamemode.dm +++ b/code/__defines/gamemode.dm @@ -35,8 +35,13 @@ #define BE_RAIDER 0x800 #define BE_PLANT 0x1000 #define BE_MUTINEER 0x2000 -#define BE_PAI 0x4000 -#define BE_LOYALIST 0x8000 +#define BE_LOYALIST 0x4000 +#define BE_PAI 0x8000 +//VOREStation Add +#define BE_LOSTDRONE 0x10000 +#define BE_MAINTPRED 0x20000 +#define BE_MORPH 0x40000 +//VOREStation Add End var/list/be_special_flags = list( "Traitor" = BE_TRAITOR, @@ -45,7 +50,6 @@ var/list/be_special_flags = list( "Wizard" = BE_WIZARD, "Malf AI" = BE_MALF, "Revolutionary" = BE_REV, - "Loyalist" = BE_LOYALIST, "Xenomorph" = BE_ALIEN, "Positronic Brain" = BE_AI, "Cultist" = BE_CULTIST, @@ -54,7 +58,13 @@ var/list/be_special_flags = list( "Raider" = BE_RAIDER, "Diona" = BE_PLANT, "Mutineer" = BE_MUTINEER, - "pAI" = BE_PAI + "Loyalist" = BE_LOYALIST, + "pAI" = BE_PAI, + //VOREStation Add + "Lost Drone" = BE_LOSTDRONE, + "Maint Pred" = BE_MAINTPRED, + "Morph" = BE_MORPH, + //VOREStation Add End ) diff --git a/code/__defines/is_helpers.dm b/code/__defines/is_helpers.dm index e121f55216..d7bab37345 100644 --- a/code/__defines/is_helpers.dm +++ b/code/__defines/is_helpers.dm @@ -13,6 +13,8 @@ #define isitem(D) istype(D, /obj/item) +#define isradio(A) istype(A, /obj/item/device/radio) + #define isairlock(A) istype(A, /obj/machinery/door/airlock) #define isorgan(A) istype(A, /obj/item/organ/external) diff --git a/code/__defines/lighting.dm b/code/__defines/lighting.dm index 2141f3e725..999bb7473a 100644 --- a/code/__defines/lighting.dm +++ b/code/__defines/lighting.dm @@ -82,6 +82,7 @@ #define LIGHT_COLOR_INCANDESCENT_TUBE "#FFFEB8" #define LIGHT_COLOR_INCANDESCENT_BULB "#FFDDBB" #define LIGHT_COLOR_INCANDESCENT_FLASHLIGHT "#FFCC66" +#define LIGHT_COLOR_NIGHTSHIFT "#EFCC86" //Fake ambient occlusion filter #define AMBIENT_OCCLUSION filter(type="drop_shadow", x=0, y=-1, size=2, offset=2, color="#04080F55") //VOREStation Edit for prettier visuals. diff --git a/code/__defines/machinery.dm b/code/__defines/machinery.dm index 0787245d61..17b95a53c2 100644 --- a/code/__defines/machinery.dm +++ b/code/__defines/machinery.dm @@ -2,6 +2,7 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called #define CELLRATE 0.002 // Multiplier for watts per tick <> cell storage (e.g., 0.02 means if there is a load of 1000 watts, 20 units will be taken from a cell per second) // It's a conversion constant. power_used*CELLRATE = charge_provided, or charge_used/CELLRATE = power_provided +#define SMESRATE 0.03333 // Same for SMESes. A different number for some reason. #define KILOWATTS *1000 #define MEGAWATTS *1000000 @@ -17,6 +18,7 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called #define USE_POWER_ACTIVE 2 // Machine is using power at its active power level // Channel numbers for power. +#define CURRENT_CHANNEL -1 // Passed as an argument this means "use whatever current channel is" #define EQUIP 1 #define LIGHT 2 #define ENVIRON 3 diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 2026639812..079715550e 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -374,3 +374,7 @@ var/global/list/##LIST_NAME = list();\ #define MOUSE_OPACITY_TRANSPARENT 0 #define MOUSE_OPACITY_ICON 1 #define MOUSE_OPACITY_OPAQUE 2 + +// Used by radios to indicate that they have sent a message via something other than subspace +#define RADIO_CONNECTION_FAIL 0 +#define RADIO_CONNECTION_NON_SUBSPACE 1 diff --git a/code/__defines/misc_vr.dm b/code/__defines/misc_vr.dm index bf6cb4d150..55b92bd490 100644 --- a/code/__defines/misc_vr.dm +++ b/code/__defines/misc_vr.dm @@ -48,6 +48,7 @@ #define SHELTER_DEPLOY_BAD_TURFS "bad turfs" #define SHELTER_DEPLOY_BAD_AREA "bad area" #define SHELTER_DEPLOY_ANCHORED_OBJECTS "anchored objects" +#define SHELTER_DEPLOY_SHIP_SPACE "ship not in space" #define PTO_SECURITY "Security" #define PTO_MEDICAL "Medical" @@ -58,3 +59,7 @@ #define PTO_CIVILIAN "Civilian" #define DEPARTMENT_TALON "ITV Talon" + +#define MAT_TITANIUMGLASS "ti-glass" +#define MAT_PLASTITANIUM "plastitanium" +#define MAT_PLASTANIUMGLASS "plastitanium glass" \ No newline at end of file diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index beeda302eb..c7b1c0eb80 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -14,6 +14,7 @@ #define GODMODE 0x1000 #define FAKEDEATH 0x2000 // Replaces stuff like changeling.changeling_fakedeath. #define DISFIGURED 0x4000 // Set but never checked. Remove this sometime and replace occurences with the appropriate organ code +#define DOING_TASK 0x8000 // Performing a do_after or do_mob that's exclusive // Grab levels. #define GRAB_PASSIVE 1 @@ -426,4 +427,6 @@ #define EXAMINE_SKIPARMS 0x0020 #define EXAMINE_SKIPHANDS 0x0040 #define EXAMINE_SKIPLEGS 0x0080 -#define EXAMINE_SKIPFEET 0x0100 \ No newline at end of file +#define EXAMINE_SKIPFEET 0x0100 + +#define MAX_NUTRITION 5000 //VOREStation Edit \ No newline at end of file diff --git a/code/__defines/qdel.dm b/code/__defines/qdel.dm index 278a2064db..7374438901 100644 --- a/code/__defines/qdel.dm +++ b/code/__defines/qdel.dm @@ -25,7 +25,7 @@ //Qdel helper macros. #define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE) #define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME) -#define QDEL_NULL(item) qdel(item); item = null +#define QDEL_NULL(item) if(item) {qdel(item); item = null} #define QDEL_NULL_LIST QDEL_LIST_NULL #define QDEL_LIST_NULL(x) if(x) { for(var/y in x) { qdel(y) } ; x = null } #define QDEL_LIST(L) if(L) { for(var/I in L) qdel(I); L.Cut(); } diff --git a/code/__defines/species_languages.dm b/code/__defines/species_languages.dm index 4055660a3e..03724307c6 100644 --- a/code/__defines/species_languages.dm +++ b/code/__defines/species_languages.dm @@ -54,13 +54,14 @@ #define LANGUAGE_AKHANI "Akhani" #define LANGUAGE_ALAI "Alai" #define LANGUAGE_ZADDAT "Vedahq" +#define LANGUAGE_PROMETHEAN "Promethean" #define LANGUAGE_BLOB "Blob" #define LANGUAGE_GIBBERISH "Babel" // Language flags. #define WHITELISTED 1 // Language is available if the speaker is whitelisted. #define RESTRICTED 2 // Language can only be acquired by spawning or an admin. -#define NONVERBAL 4 // Language has a significant non-verbal component. Speech is garbled without line-of-sight. +#define NONVERBAL 4 // Language uses both verbal and non-verbal components completely to communicate. Out-of-sight speech is garbled. #define SIGNLANG 8 // Language is completely non-verbal. Speech is displayed through emotes for those who can understand. #define HIVEMIND 16 // Broadcast to all mobs with this language. #define NONGLOBAL 32 // Do not add to general languages list. diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index 37f4bff5f9..0fa2532bf9 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -68,13 +68,15 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G #define INIT_ORDER_ASSETS -3 #define INIT_ORDER_PLANETS -4 #define INIT_ORDER_HOLOMAPS -5 -#define INIT_ORDER_OVERLAY -6 -#define INIT_ORDER_ALARM -7 +#define INIT_ORDER_NIGHTSHIFT -6 +#define INIT_ORDER_OVERLAY -7 +#define INIT_ORDER_ALARM -8 #define INIT_ORDER_OPENSPACE -10 #define INIT_ORDER_XENOARCH -20 #define INIT_ORDER_CIRCUIT -21 #define INIT_ORDER_AI -22 -#define INIT_ORDER_GAME_MASTER -24 +#define INIT_ORDER_AI_FAST -23 +#define INIT_ORDER_GAME_MASTER -24 #define INIT_ORDER_TICKER -50 #define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init. @@ -83,6 +85,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G // If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child) #define FIRE_PRIORITY_SHUTTLES 5 #define FIRE_PRIORITY_SUPPLY 5 +#define FIRE_PRIORITY_NIGHTSHIFT 5 #define FIRE_PRIORITY_ORBIT 8 #define FIRE_PRIORITY_VOTE 9 #define FIRE_PRIORITY_AI 10 diff --git a/code/_helpers/game.dm b/code/_helpers/game.dm index 17a2544850..119f9d554f 100644 --- a/code/_helpers/game.dm +++ b/code/_helpers/game.dm @@ -272,17 +272,17 @@ var/list/hearturfs = list() for(var/thing in hear) - if(istype(thing,/obj)) + if(istype(thing, /obj)) //Can't use isobj() because /atom/movable returns true in that, and so lighting overlays would be included objs += thing hearturfs |= get_turf(thing) - else if(istype(thing,/mob)) + if(ismob(thing)) mobs += thing hearturfs |= get_turf(thing) //A list of every mob with a client for(var/mob in player_list) //VOREStation Edit - Trying to fix some vorestation bug. - if(!istype(mob, /mob)) + if(!ismob(mob)) player_list -= mob crash_with("There is a null or non-mob reference inside player_list ([mob]).") continue diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index 33b50af54b..31e19b3082 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -203,6 +203,13 @@ var/global/list/string_slot_flags = list( var/datum/poster/P = new T NT_poster_designs += P + // VOREStation Add - Vore Modes! + paths = typesof(/datum/digest_mode) - /datum/digest_mode/transform + for(var/T in paths) + var/datum/digest_mode/DM = new T + GLOB.digest_modes[DM.id] = DM + // VOREStation Add End + return 1 /* // Uncomment to debug chemical reaction list. diff --git a/code/_helpers/logging.dm b/code/_helpers/logging.dm index 18cede2ea4..923b8f450f 100644 --- a/code/_helpers/logging.dm +++ b/code/_helpers/logging.dm @@ -49,7 +49,7 @@ for(var/client/C in admins) if(C.is_preference_enabled(/datum/client_preference/debug/show_debug_logs)) - to_chat(C, "DEBUG: [text]") + to_chat(C, "DEBUG: [text]") /proc/log_game(text) if (config.log_game) diff --git a/code/_helpers/mobs.dm b/code/_helpers/mobs.dm index 04b8ede203..73ae811193 100644 --- a/code/_helpers/mobs.dm +++ b/code/_helpers/mobs.dm @@ -142,9 +142,14 @@ Proc for attack log creation, because really why not else return pick("chest", "groin") -/proc/do_mob(mob/user , mob/target, time = 30, target_zone = 0, uninterruptible = FALSE, progress = TRUE, ignore_movement = FALSE) +/proc/do_mob(mob/user , mob/target, time = 30, target_zone = 0, uninterruptible = FALSE, progress = TRUE, ignore_movement = FALSE, exclusive = FALSE) if(!user || !target) return 0 + if(!time) + return 1 //Done! + if(user.status_flags & DOING_TASK) + to_chat(user, "You're in the middle of doing something else already.") + return 0 //Performing an exclusive do_after or do_mob already var/user_loc = user.loc var/target_loc = target.loc @@ -155,6 +160,10 @@ Proc for attack log creation, because really why not var/endtime = world.time+time var/starttime = world.time + + if(exclusive) + user.status_flags |= DOING_TASK + . = TRUE while (world.time < endtime) stoplag(1) @@ -186,14 +195,20 @@ Proc for attack log creation, because really why not . = FALSE break + if(exclusive) + user.status_flags &= ~DOING_TASK + if (progbar) qdel(progbar) -/proc/do_after(mob/user, delay, atom/target = null, needhand = TRUE, progress = TRUE, incapacitation_flags = INCAPACITATION_DEFAULT, ignore_movement = FALSE, max_distance = null) +/proc/do_after(mob/user, delay, atom/target = null, needhand = TRUE, progress = TRUE, incapacitation_flags = INCAPACITATION_DEFAULT, ignore_movement = FALSE, max_distance = null, exclusive = FALSE) if(!user) return 0 if(!delay) return 1 //Okay. Done. + if(user.status_flags & DOING_TASK) + to_chat(user, "You're in the middle of doing something else already.") + return 0 //Performing an exclusive do_after or do_mob already var/atom/target_loc = null if(target) target_loc = target.loc @@ -214,6 +229,10 @@ Proc for attack log creation, because really why not var/endtime = world.time + delay var/starttime = world.time + + if(exclusive) + user.status_flags |= DOING_TASK + . = 1 while (world.time < endtime) stoplag(1) @@ -250,6 +269,9 @@ Proc for attack log creation, because really why not . = FALSE break + if(exclusive) + user.status_flags &= ~DOING_TASK + if(progbar) qdel(progbar) diff --git a/code/_helpers/time.dm b/code/_helpers/time.dm index 3846c6fd66..761bd6cae8 100644 --- a/code/_helpers/time.dm +++ b/code/_helpers/time.dm @@ -55,7 +55,7 @@ var/next_station_date_change = 1 DAY if(!station_date || update_time) var/extra_days = round(station_time_in_ticks / (1 DAY)) DAYS var/timeofday = world.timeofday + extra_days - station_date = num2text((text2num(time2text(timeofday, "YYYY"))+544)) + "-" + time2text(timeofday, "MM-DD") + station_date = num2text((text2num(time2text(timeofday, "YYYY"))+300)) + "-" + time2text(timeofday, "MM-DD") //VOREStation Edit return station_date //ISO 8601 diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index fef8f1c1ee..9425868823 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -1276,14 +1276,8 @@ var/mob/dview/dview_mob = new if(!center) return - //VOREStation Add - Emergency Backup - if(!dview_mob) - dview_mob = new() - WARNING("dview mob was lost, and had to be recreated!") - //VOREStation Add End - dview_mob.loc = center - + dview_mob.see_invisible = invis_flags . = view(range, dview_mob) diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index c5c48dbbf2..799cc5d113 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -23,9 +23,10 @@ /mob/living/silicon/ai/ClickOn(var/atom/A, params) - if(world.time <= next_click) + if(!checkClickCooldown()) return - next_click = world.time + 1 + + setClickCooldown(1) if(client.buildmode) // comes after object.Click to allow buildmode gui objects to be clicked build_click(src, client.buildmode, params, A) @@ -34,6 +35,9 @@ if(stat) return + if(control_disabled) + return + var/list/modifiers = params2list(params) if(modifiers["shift"] && modifiers["ctrl"]) CtrlShiftClickOn(A) @@ -44,27 +48,18 @@ if(modifiers["shift"]) ShiftClickOn(A) return - if(modifiers["alt"]) // alt and alt-gr (rightalt) + if(modifiers["alt"]) AltClickOn(A) return if(modifiers["ctrl"]) CtrlClickOn(A) return - if(control_disabled || !canClick()) - return - if(aiCamera.in_camera_mode) aiCamera.camera_mode_off() aiCamera.captureimage(A, usr) return - /* - AI restrained() currently does nothing - if(restrained()) - RestrainedClickOn(A) - else - */ A.add_hiddenprint(src) A.attack_ai(src) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index ea40e3dc0e..23269f5bab 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -38,10 +38,10 @@ * mob/RangedAttack(atom,params) - used only ranged, only used for tk and laser eyes but could be changed */ /mob/proc/ClickOn(var/atom/A, var/params) - if(world.time <= next_click) // Hard check, before anything else, to avoid crashing + if(!checkClickCooldown()) // Hard check, before anything else, to avoid crashing return - next_click = world.time + 1 + setClickCooldown(1) if(client && client.buildmode) build_click(src, client.buildmode, params, A) @@ -69,9 +69,6 @@ face_atom(A) // change direction to face what you clicked on - if(!canClick()) // in the year 2000... - return - if(istype(loc, /obj/mecha)) if(!locate(/turf) in list(A, A.loc)) // Prevents inventory from being drilled return @@ -156,12 +153,12 @@ return 1 /mob/proc/setClickCooldown(var/timeout) - next_move = max(world.time + timeout, next_move) + next_click = max(world.time + timeout, next_click) -/mob/proc/canClick() - if(config.no_click_cooldown || next_move <= world.time) - return 1 - return 0 +/mob/proc/checkClickCooldown() + if(next_click > world.time && !config.no_click_cooldown) + return FALSE + return TRUE // Default behavior: ignore double clicks, the second click that makes the doubleclick call already calls for a normal click /mob/proc/DblClickOn(var/atom/A, var/params) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index f8bce398a6..0c99425147 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -7,9 +7,10 @@ */ /mob/living/silicon/robot/ClickOn(var/atom/A, var/params) - if(world.time <= next_click) + if(!checkClickCooldown()) return - next_click = world.time + 1 + + setClickCooldown(1) if(client.buildmode) // comes after object.Click to allow buildmode gui objects to be clicked build_click(src, client.buildmode, params, A) @@ -35,9 +36,6 @@ if(stat || lockdown || weakened || stunned || paralysis) return - if(!canClick()) - return - face_atom(A) // change direction to face what you clicked on if(aiCamera && aiCamera.in_camera_mode) diff --git a/code/_onclick/hud/action.dm b/code/_onclick/hud/action.dm index b5299cd77b..c123790b51 100644 --- a/code/_onclick/hud/action.dm +++ b/code/_onclick/hud/action.dm @@ -123,7 +123,7 @@ if(modifiers["shift"]) moved = 0 return 1 - if(usr.next_move >= world.time) // Is this needed ? + if(!usr.checkClickCooldown()) return owner.Trigger() return 1 diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 8a61b87251..1258e4ce94 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -236,6 +236,8 @@ mymob.internals = new /obj/screen() mymob.internals.icon = ui_style mymob.internals.icon_state = "internal0" + if(istype(target.internal, /obj/item/weapon/tank)) //Internals on already? Iight, prove it + mymob.internals.icon_state = "internal1" mymob.internals.name = "internal" mymob.internals.screen_loc = ui_internal hud_elements |= mymob.internals diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index e83e5d732c..fa568b8614 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -17,6 +17,10 @@ GLOBAL_LIST_EMPTY(radial_menus) var/next_page = FALSE var/tooltips = FALSE +/obj/screen/radial/Destroy() + parent = null + return ..() + /obj/screen/radial/slice/MouseEntered(location, control, params) . = ..() icon_state = "radial_slice_focus" @@ -279,6 +283,8 @@ GLOBAL_LIST_EMPTY(radial_menus) /datum/radial_menu/Destroy() Reset() hide() + QDEL_LIST_NULL(elements) + QDEL_NULL(close_button) QDEL_NULL(custom_check_callback) . = ..() diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 2c6408cf7f..e82d3ea5f6 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -54,7 +54,7 @@ /obj/screen/item_action/Click() if(!usr || !owner) return 1 - if(!usr.canClick()) + if(!usr.checkClickCooldown()) return if(usr.stat || usr.restrained() || usr.stunned || usr.lying) @@ -85,7 +85,7 @@ name = "storage" /obj/screen/storage/Click() - if(!usr.canClick()) + if(!usr.checkClickCooldown()) return 1 if(usr.stat || usr.paralysis || usr.stunned || usr.weakened) return 1 @@ -494,7 +494,7 @@ /obj/screen/inventory/Click() // At this point in client Click() code we have passed the 1/10 sec check and little else // We don't even know if it's a middle click - if(!usr.canClick()) + if(!usr.checkClickCooldown()) return 1 if(usr.stat || usr.paralysis || usr.stunned || usr.weakened) return 1 diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index a2d3f0c92b..88309b5074 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -31,7 +31,7 @@ if(client.buildmode) build_click(src, client.buildmode, params, A) return - if(!canClick()) return + if(!checkClickCooldown()) return setClickCooldown(4) // You are responsible for checking config.ghost_interaction when you override this function // Not all of them require checking, see below diff --git a/code/_onclick/rig.dm b/code/_onclick/rig.dm index ed7a1c7e2f..e281505dc2 100644 --- a/code/_onclick/rig.dm +++ b/code/_onclick/rig.dm @@ -63,7 +63,7 @@ return loc == card /mob/living/proc/HardsuitClickOn(var/atom/A, var/alert_ai = 0) - if(!can_use_rig() || !canClick()) + if(!can_use_rig()) return 0 var/obj/item/weapon/rig/rig = get_rig() if(istype(rig) && !rig.offline && rig.selected_module) diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index 3b3512bbf9..b99ab68064 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -125,7 +125,7 @@ var/const/EXP_FREQ = 1361 var/const/MED_I_FREQ = 1485 var/const/SEC_I_FREQ = 1475 -var/const/TALON_FREQ = 1481 //VOREStation Add +var/const/TALON_FREQ = 1363 //VOREStation Add var/list/radiochannels = list( "Common" = PUB_FREQ, diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index c573a2130c..47c3a9a876 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -271,6 +271,9 @@ var/list/gamemode_cache = list() // disables the annoying "You have already logged in this round, disconnect or be banned" popup for multikeying, because it annoys the shit out of me when testing. 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 + /datum/configuration/New() var/list/L = typesof(/datum/game_mode) - /datum/game_mode for (var/T in L) @@ -892,6 +895,9 @@ var/list/gamemode_cache = list() if("disable_cid_warn_popup") config.disable_cid_warn_popup = TRUE + if("enable_night_shifts") + config.enable_night_shifts = TRUE + else log_misc("Unknown setting in configuration: '[name]'") diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index d6e272f9c9..b5fa776f7f 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -58,7 +58,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle = new if (evac) emergency_shuttle_docked.Announce(replacetext(replacetext(using_map.emergency_shuttle_docked_message, "%dock_name%", "[using_map.dock_name]"), "%ETD%", "[estimated_time] minute\s")) else - priority_announcement.Announce(replacetext(replacetext(using_map.shuttle_docked_message, "%dock_name%", "[using_map.dock_name]"), "%ETD%", "[estimated_time] minute\s")) + priority_announcement.Announce(replacetext(replacetext(using_map.shuttle_docked_message, "%dock_name%", "[using_map.dock_name]"), "%ETD%", "[estimated_time] minute\s"), "Transfer System", 'sound/AI/tramarrived.ogg') //VOREStation Edit - TTS //arm the escape pods if (evac) @@ -115,7 +115,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle = new shuttle.move_time = SHUTTLE_TRANSIT_DURATION var/estimated_time = round(estimate_arrival_time()/60,1) - priority_announcement.Announce(replacetext(replacetext(using_map.shuttle_called_message, "%dock_name%", "[using_map.dock_name]"), "%ETA%", "[estimated_time] minute\s")) + priority_announcement.Announce(replacetext(replacetext(using_map.shuttle_called_message, "%dock_name%", "[using_map.dock_name]"), "%ETA%", "[estimated_time] minute\s"), "Transfer System", 'sound/AI/tramcalled.ogg') //VOREStation Edit - TTS atc.shift_ending() //recalls the shuttle diff --git a/code/controllers/subsystems/ai.dm b/code/controllers/subsystems/ai.dm index a111b83e43..5ebbb22a2f 100644 --- a/code/controllers/subsystems/ai.dm +++ b/code/controllers/subsystems/ai.dm @@ -2,8 +2,8 @@ SUBSYSTEM_DEF(ai) name = "AI" init_order = INIT_ORDER_AI priority = FIRE_PRIORITY_AI - wait = 5 // This gets run twice a second, however this is technically two loops in one, with the second loop being run every four iterations. - flags = SS_NO_INIT|SS_TICKER + wait = 2 SECONDS + flags = SS_NO_INIT runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME var/list/processing = list() @@ -22,15 +22,11 @@ SUBSYSTEM_DEF(ai) var/list/currentrun = src.currentrun while(currentrun.len) - // var/mob/living/L = currentrun[currentrun.len] var/datum/ai_holder/A = currentrun[currentrun.len] --currentrun.len if(!A || QDELETED(A) || A.busy) // Doesn't exist or won't exist soon or not doing it this tick continue - if(times_fired % 4 == 0 && A.holder.stat != DEAD) - A.handle_strategicals() - if(A.holder.stat != DEAD) // The /TG/ version checks stat twice, presumably in-case processing somehow got the mob killed in that instant. - A.handle_tactics() + A.handle_strategicals() if(MC_TICK_CHECK) return diff --git a/code/controllers/subsystems/aifast.dm b/code/controllers/subsystems/aifast.dm new file mode 100644 index 0000000000..f045a7fd35 --- /dev/null +++ b/code/controllers/subsystems/aifast.dm @@ -0,0 +1,32 @@ +SUBSYSTEM_DEF(aifast) + name = "AI (Fast)" + init_order = INIT_ORDER_AI_FAST + priority = FIRE_PRIORITY_AI + wait = 0.25 SECONDS // Every quarter second + flags = SS_NO_INIT + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + + var/list/processing = list() + var/list/currentrun = list() + +/datum/controller/subsystem/aifast/stat_entry(msg_prefix) + var/list/msg = list(msg_prefix) + msg += "P:[processing.len]" + ..(msg.Join()) + +/datum/controller/subsystem/aifast/fire(resumed = 0) + if (!resumed) + src.currentrun = processing.Copy() + + //cache for sanic speed (lists are references anyways) + var/list/currentrun = src.currentrun + + while(currentrun.len) + var/datum/ai_holder/A = currentrun[currentrun.len] + --currentrun.len + if(!A || QDELETED(A) || A.busy) // Doesn't exist or won't exist soon or not doing it this tick + continue + A.handle_tactics() + + if(MC_TICK_CHECK) + return diff --git a/code/controllers/subsystems/assets.dm b/code/controllers/subsystems/assets.dm index cd531db614..2041104a2b 100644 --- a/code/controllers/subsystems/assets.dm +++ b/code/controllers/subsystems/assets.dm @@ -6,9 +6,11 @@ SUBSYSTEM_DEF(assets) var/list/preload = list() /datum/controller/subsystem/assets/Initialize(timeofday) - for(var/type in typesof(/datum/asset) - list(/datum/asset, /datum/asset/simple)) - var/datum/asset/A = new type() - A.register() + for(var/type in typesof(/datum/asset)) + var/datum/asset/A = type + if (type != initial(A._abstract)) + get_asset_datum(type) + preload = cache.Copy() //don't preload assets generated during the round diff --git a/code/controllers/subsystems/inactivity.dm b/code/controllers/subsystems/inactivity.dm index 956af04787..e4ab73fcab 100644 --- a/code/controllers/subsystems/inactivity.dm +++ b/code/controllers/subsystems/inactivity.dm @@ -16,7 +16,7 @@ SUBSYSTEM_DEF(inactivity) var/client/C = client_list[client_list.len] client_list.len-- if(C.is_afk(config.kick_inactive MINUTES) && can_kick(C)) - to_chat(C, "You have been inactive for more than [config.kick_inactive] minute\s and have been disconnected.") + to_chat_immediate(C, world.time, "You have been inactive for more than [config.kick_inactive] minute\s and have been disconnected.") var/information if(C.mob) diff --git a/code/controllers/subsystems/machines.dm b/code/controllers/subsystems/machines.dm index 7f35bfd971..29d6ecce56 100644 --- a/code/controllers/subsystems/machines.dm +++ b/code/controllers/subsystems/machines.dm @@ -121,10 +121,8 @@ SUBSYSTEM_DEF(machines) while(current_run.len) var/obj/machinery/M = current_run[current_run.len] current_run.len-- - if(istype(M) && !QDELETED(M) && !(M.process(wait) == PROCESS_KILL)) - if(M.use_power) - M.auto_use_power() - else + + if(!istype(M) || QDELETED(M) || (M.process(wait) == PROCESS_KILL)) global.processing_machines.Remove(M) if(!QDELETED(M)) DISABLE_BITFIELD(M.datum_flags, DF_ISPROCESSING) diff --git a/code/controllers/subsystems/nightshift.dm b/code/controllers/subsystems/nightshift.dm new file mode 100644 index 0000000000..9e89a05cee --- /dev/null +++ b/code/controllers/subsystems/nightshift.dm @@ -0,0 +1,70 @@ +SUBSYSTEM_DEF(nightshift) + name = "Night Shift" + init_order = INIT_ORDER_NIGHTSHIFT + priority = FIRE_PRIORITY_NIGHTSHIFT + wait = 60 SECONDS + flags = SS_NO_TICK_CHECK + + var/nightshift_active = FALSE + var/nightshift_first_check = 30 SECONDS + + var/high_security_mode = FALSE + +/datum/controller/subsystem/nightshift/Initialize() + if(!config.enable_night_shifts) + can_fire = FALSE + /* + if(config.randomize_shift_time) + GLOB.gametime_offset = rand(0, 23) HOURS + */ + return ..() + +/datum/controller/subsystem/nightshift/fire(resumed = FALSE) + if(round_duration_in_ticks < nightshift_first_check) + return + check_nightshift() + +/datum/controller/subsystem/nightshift/proc/announce(message) + var/announce_z + if(using_map.station_levels.len) + announce_z = pick(using_map.station_levels) + //VOREStation Edit - TTS + var/pickedsound + if(!high_security_mode) + if(nightshift_active) + pickedsound = 'sound/AI/dim_lights.ogg' + else + pickedsound = 'sound/AI/bright_lights.ogg' + priority_announcement.Announce(message, new_title = "Automated Lighting System Announcement", new_sound = pickedsound, zlevel = announce_z) + //VOREStation Edit End + +/datum/controller/subsystem/nightshift/proc/check_nightshift(check_canfire=FALSE) //This is called from elsewhere, like setting the alert levels + if(check_canfire && !can_fire) + return + var/emergency = security_level > SEC_LEVEL_GREEN + var/announcing = TRUE + var/night_time = using_map.get_nightshift() + if(high_security_mode != emergency) + high_security_mode = emergency + if(night_time) + announcing = FALSE + if(!emergency) + announce("Restoring night lighting configuration to normal operation.") + else + announce("Disabling night lighting: Station is in a state of emergency.") + if(emergency) + night_time = FALSE + if(nightshift_active != night_time) + update_nightshift(night_time, announcing) + +/datum/controller/subsystem/nightshift/proc/update_nightshift(active, announce = TRUE) + nightshift_active = active + if(announce) + if(active) + announce("Good evening, crew. To reduce power consumption and stimulate the circadian rhythms of some species, all of the lights aboard the station have been dimmed for the night.") + else + announce("Good morning, crew. As it is now day time, all of the lights aboard the station have been restored to their former brightness.") + for(var/obj/machinery/power/apc/apc in machines) + if(apc.z in using_map.station_levels) + apc.set_nightshift(active, TRUE) + CHECK_TICK diff --git a/code/controllers/subsystems/planets.dm b/code/controllers/subsystems/planets.dm index 9e823fc0db..5d1325bba5 100644 --- a/code/controllers/subsystems/planets.dm +++ b/code/controllers/subsystems/planets.dm @@ -6,16 +6,16 @@ SUBSYSTEM_DEF(planets) flags = SS_BACKGROUND runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME - var/list/new_outdoor_turfs = list() - var/list/new_outdoor_walls = list() + var/static/list/new_outdoor_turfs = list() + var/static/list/new_outdoor_walls = list() - var/list/planets = list() - var/list/z_to_planet = list() + var/static/list/planets = list() + var/static/list/z_to_planet = list() - var/list/currentrun = list() + var/static/list/currentrun = list() - var/list/needs_sun_update = list() - var/list/needs_temp_update = list() + var/static/list/needs_sun_update = list() + var/static/list/needs_temp_update = list() /datum/controller/subsystem/planets/Initialize(timeofday) admin_notice("Initializing planetary weather.", R_DEBUG) diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm index 984b4448c1..397f32078c 100644 --- a/code/controllers/subsystems/ticker.dm +++ b/code/controllers/subsystems/ticker.dm @@ -72,8 +72,8 @@ var/global/datum/controller/subsystem/ticker/ticker post_game_tick() /datum/controller/subsystem/ticker/proc/pregame_welcome() - to_chat(world, "Welcome to the pregame lobby!") - to_chat(world, "Please set up your character and select ready. The round will start in [pregame_timeleft] seconds.") + to_world("Welcome to the pregame lobby!") + to_world("Please set up your character and select ready. The round will start in [pregame_timeleft] seconds.") // Called during GAME_STATE_PREGAME (RUNLEVEL_LOBBY) /datum/controller/subsystem/ticker/proc/pregame_tick() @@ -120,7 +120,7 @@ var/global/datum/controller/subsystem/ticker/ticker var/list/runnable_modes = config.get_runnable_modes() if((master_mode == "random") || (master_mode == "secret")) if(!runnable_modes.len) - to_chat(world, "Unable to choose playable game mode. Reverting to pregame lobby.") + to_world("Unable to choose playable game mode. Reverting to pregame lobby.") return 0 if(secret_force_mode != "secret") src.mode = config.pick_mode(secret_force_mode) @@ -133,7 +133,7 @@ var/global/datum/controller/subsystem/ticker/ticker src.mode = config.pick_mode(master_mode) if(!src.mode) - to_chat(world, "Serious error in mode setup! Reverting to pregame lobby.") //Uses setup instead of set up due to computational context. + to_world("Serious error in mode setup! Reverting to pregame lobby.") //Uses setup instead of set up due to computational context. return 0 job_master.ResetOccupations() @@ -142,21 +142,21 @@ var/global/datum/controller/subsystem/ticker/ticker job_master.DivideOccupations() // Apparently important for new antagonist system to register specific job antags properly. if(!src.mode.can_start()) - to_world("Unable to start [mode.name]. Not enough players readied, [config.player_requirements[mode.config_tag]] players needed. Reverting to pregame lobby.") + to_world("Unable to start [mode.name]. Not enough players readied, [config.player_requirements[mode.config_tag]] players needed. Reverting to pregame lobby.") mode.fail_setup() mode = null job_master.ResetOccupations() return 0 if(hide_mode) - to_world("The current game mode is - Secret!") + to_world("The current game mode is - Secret!") if(runnable_modes.len) var/list/tmpmodes = new for (var/datum/game_mode/M in runnable_modes) tmpmodes+=M.name tmpmodes = sortList(tmpmodes) if(tmpmodes.len) - to_chat(world, "Possibilities: [english_list(tmpmodes, and_text= "; ", comma_text = "; ")]") + to_world("Possibilities: [english_list(tmpmodes, and_text= "; ", comma_text = "; ")]") else src.mode.announce() return 1 @@ -178,7 +178,7 @@ var/global/datum/controller/subsystem/ticker/ticker //Deleting Startpoints but we need the ai point to AI-ize people later if (S.name != "AI") qdel(S) - to_chat(world, "Enjoy the game!") + to_world("Enjoy the game!") world << sound('sound/AI/welcome.ogg') // Skie //Holiday Round-start stuff ~Carn Holiday_Game_Start() @@ -227,7 +227,7 @@ var/global/datum/controller/subsystem/ticker/ticker end_game_state = END_GAME_MODE_FINISHED // Only do this cleanup once! mode.cleanup() //call a transfer shuttle vote - to_chat(world, "The round has ended!") + to_world("The round has ended!") SSvote.autotransfer() // Called during GAME_STATE_FINISHED (RUNLEVEL_POSTGAME) @@ -240,7 +240,7 @@ var/global/datum/controller/subsystem/ticker/ticker feedback_set_details("end_proper", "nuke") restart_timeleft = 1 MINUTE // No point waiting five minutes if everyone's dead. if(!delay_end) - to_chat(world, "Rebooting due to destruction of [station_name()] in [round(restart_timeleft/600)] minute\s.") + to_world("Rebooting due to destruction of [station_name()] in [round(restart_timeleft/600)] minute\s.") last_restart_notify = world.time else feedback_set_details("end_proper", "proper completion") @@ -254,12 +254,12 @@ var/global/datum/controller/subsystem/ticker/ticker if(END_GAME_ENDING) restart_timeleft -= (world.time - last_fire) if(delay_end) - to_chat(world, "An admin has delayed the round end.") + to_world("An admin has delayed the round end.") end_game_state = END_GAME_DELAYED else if(restart_timeleft <= 0) world.Reboot() else if (world.time - last_restart_notify >= 1 MINUTE) - to_chat(world, "Restarting in [round(restart_timeleft/600, 1)] minute\s.") + to_world("Restarting in [round(restart_timeleft/600, 1)] minute\s.") last_restart_notify = world.time return if(END_GAME_DELAYED) @@ -430,47 +430,47 @@ var/global/datum/controller/subsystem/ticker/ticker if(captainless) for(var/mob/M in player_list) if(!istype(M,/mob/new_player)) - to_chat(M, "Colony Directorship not forced on anyone.") + to_chat(M, "Colony Directorship not forced on anyone.") /datum/controller/subsystem/ticker/proc/declare_completion() - to_world("


A round of [mode.name] has ended!

") + to_world("


A round of [mode.name] has ended!

") for(var/mob/Player in player_list) if(Player.mind && !isnewplayer(Player)) if(Player.stat != DEAD) var/turf/playerTurf = get_turf(Player) if(emergency_shuttle.departed && emergency_shuttle.evac) if(isNotAdminLevel(playerTurf.z)) - to_chat(Player, "You survived the round, but remained on [station_name()] as [Player.real_name].") + to_chat(Player, "You survived the round, but remained on [station_name()] as [Player.real_name].") else - to_chat(Player, "You managed to survive the events on [station_name()] as [Player.real_name].") + to_chat(Player, "You managed to survive the events on [station_name()] as [Player.real_name].") else if(isAdminLevel(playerTurf.z)) - to_chat(Player, "You successfully underwent crew transfer after events on [station_name()] as [Player.real_name].") + to_chat(Player, "You successfully underwent crew transfer after events on [station_name()] as [Player.real_name].") else if(issilicon(Player)) - to_chat(Player, "You remain operational after the events on [station_name()] as [Player.real_name].") + to_chat(Player, "You remain operational after the events on [station_name()] as [Player.real_name].") else - to_chat(Player, "You missed the crew transfer after the events on [station_name()] as [Player.real_name].") + to_chat(Player, "You missed the crew transfer after the events on [station_name()] as [Player.real_name].") else if(istype(Player,/mob/observer/dead)) var/mob/observer/dead/O = Player if(!O.started_as_observer) - to_chat(Player, "You did not survive the events on [station_name()]...") + to_chat(Player, "You did not survive the events on [station_name()]...") else - to_chat(Player, "You did not survive the events on [station_name()]...") + to_chat(Player, "You did not survive the events on [station_name()]...") to_world("
") for (var/mob/living/silicon/ai/aiPlayer in mob_list) if (aiPlayer.stat != 2) - to_world("[aiPlayer.name] (Played by: [aiPlayer.key])'s laws at the end of the round were:") + to_world("[aiPlayer.name] (Played by: [aiPlayer.key])'s laws at the end of the round were:") else - to_world("[aiPlayer.name] (Played by: [aiPlayer.key])'s laws when it was deactivated were:") + to_world("[aiPlayer.name] (Played by: [aiPlayer.key])'s laws when it was deactivated were:") aiPlayer.show_laws(1) if (aiPlayer.connected_robots.len) var/robolist = "The AI's loyal minions were: " for(var/mob/living/silicon/robot/robo in aiPlayer.connected_robots) robolist += "[robo.name][robo.stat?" (Deactivated) (Played by: [robo.key]), ":" (Played by: [robo.key]), "]" - to_world("[robolist]") + to_world("[robolist]") var/dronecount = 0 @@ -482,15 +482,15 @@ var/global/datum/controller/subsystem/ticker/ticker if (!robo.connected_ai) if (robo.stat != 2) - to_world("[robo.name] (Played by: [robo.key]) survived as an AI-less stationbound synthetic! Its laws were:") + to_world("[robo.name] (Played by: [robo.key]) survived as an AI-less stationbound synthetic! Its laws were:") else - to_world("[robo.name] (Played by: [robo.key]) was unable to survive the rigors of being a stationbound synthetic without an AI. Its laws were:") + to_world("[robo.name] (Played by: [robo.key]) was unable to survive the rigors of being a stationbound synthetic without an AI. Its laws were:") if(robo) //How the hell do we lose robo between here and the world messages directly above this? robo.laws.show_laws(world) if(dronecount) - to_world("There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] at the end of this round.") + to_world("There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] at the end of this round.") mode.declare_completion()//To declare normal completion. diff --git a/code/datums/ghost_query.dm b/code/datums/ghost_query.dm index d068e27de2..f3a84d533d 100644 --- a/code/datums/ghost_query.dm +++ b/code/datums/ghost_query.dm @@ -125,7 +125,7 @@ /datum/ghost_query/lost_drone role_name = "Lost Drone" question = "A lost drone onboard has been discovered by a crewmember and they are attempting to reactivate it. Would you like to play as the drone?" - //be_special_flag = BE_AI //VOREStation Removal: Positronic role is never used because intended purpose is unfitting, so remove the check + be_special_flag = BE_LOSTDRONE //VOREStation Edit check_bans = list("AI", "Cyborg") cutoff_number = 1 diff --git a/code/datums/ghost_query_vr.dm b/code/datums/ghost_query_vr.dm index aba3165c63..75356029be 100644 --- a/code/datums/ghost_query_vr.dm +++ b/code/datums/ghost_query_vr.dm @@ -1,9 +1,11 @@ /datum/ghost_query/morph role_name = "Morph" + be_special_flag = BE_MORPH question = "A weird morphic creature appears to have snuck onstation. Do you want to play as it? ((Expect to be treated as vore predator.))" cutoff_number = 1 /datum/ghost_query/maints_pred role_name = "Maintenance Predator" + be_special_flag = BE_MAINTPRED question = "It appears a predatory critter is lurking in the maintenance. Do you want to play as it? ((You get to choose type of critter. Expect to be treated as vore predator.))" cutoff_number = 1 \ No newline at end of file diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 684505aa57..65576a52a7 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -98,7 +98,6 @@ var/turf/destturf var/turf/curturf = get_turf(teleatom) - var/area/destarea = get_area(destination) if(precision) var/list/posturfs = circlerangeturfs(destination,precision) destturf = safepick(posturfs) @@ -125,8 +124,6 @@ if(C) C.forceMove(destturf) - destarea.Entered(teleatom) - return 1 /datum/teleport/proc/teleport() diff --git a/code/datums/outfits/jobs/cargo.dm b/code/datums/outfits/jobs/cargo.dm index 10ddb9b7b0..1b48efcb9d 100644 --- a/code/datums/outfits/jobs/cargo.dm +++ b/code/datums/outfits/jobs/cargo.dm @@ -5,6 +5,7 @@ /decl/hierarchy/outfit/job/cargo/qm name = OUTFIT_JOB_NAME("Cargo") uniform = /obj/item/clothing/under/rank/cargo + l_ear = /obj/item/device/radio/headset/headset_qm //VOREStation Add shoes = /obj/item/clothing/shoes/brown glasses = /obj/item/clothing/glasses/sunglasses l_hand = /obj/item/weapon/clipboard diff --git a/code/datums/outfits/outfit_vr.dm b/code/datums/outfits/outfit_vr.dm index 27e5cde50e..b994a9e205 100644 --- a/code/datums/outfits/outfit_vr.dm +++ b/code/datums/outfits/outfit_vr.dm @@ -48,8 +48,8 @@ C.registered_name = H.real_name return C -/decl/hierarchy/outfit/solgov/representative - name = "SolGov Representative" +/decl/hierarchy/outfit/solcom/representative + name = "SolCom Representative" shoes = /obj/item/clothing/shoes/laceup l_ear = /obj/item/device/radio/headset/centcom uniform = /obj/item/clothing/under/suit_jacket/navy @@ -59,13 +59,13 @@ r_hand = /obj/item/device/pda/centcom l_hand = /obj/item/weapon/clipboard -/decl/hierarchy/outfit/solgov/representative/equip_id(mob/living/carbon/human/H) +/decl/hierarchy/outfit/solcom/representative/equip_id(mob/living/carbon/human/H) var/obj/item/weapon/card/id/C = ..() - C.name = "[H.real_name]'s SolGov ID Card" + C.name = "[H.real_name]'s SolCom ID Card" C.icon_state = "lifetime" C.access = get_all_station_access() C.access += get_all_centcom_access() - C.assignment = "SolGov Representative" + C.assignment = "SolCom Representative" C.registered_name = H.real_name return C @@ -101,3 +101,76 @@ r_hand = /obj/item/weapon/melee/energy/sword/imperial l_hand = /obj/item/weapon/shield/energy/imperial suit_store = /obj/item/weapon/gun/energy/imperial + +/* +SOUTHERN CROSS OUTFITS +Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead goes in lockers. Keep this in mind if editing. +*/ + + +/decl/hierarchy/outfit/job/explorer2 + name = OUTFIT_JOB_NAME("Explorer") + shoes = /obj/item/clothing/shoes/boots/winter/explorer + uniform = /obj/item/clothing/under/explorer + l_ear = /obj/item/device/radio/headset/explorer + id_slot = slot_wear_id + pda_slot = slot_l_store + pda_type = /obj/item/device/pda/explorer //VORESTation Edit - Better Brown + id_type = /obj/item/weapon/card/id/explorer //VOREStation Edit + id_pda_assignment = "Explorer" + flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL + backpack_contents = list(/obj/item/clothing/accessory/permit/gun/planetside = 1) + +/decl/hierarchy/outfit/job/explorer2/post_equip(mob/living/carbon/human/H) + ..() + for(var/obj/item/clothing/accessory/permit/gun/planetside/permit in H.back.contents) + permit.set_name(H.real_name) + +/decl/hierarchy/outfit/job/pilot + name = OUTFIT_JOB_NAME("Pilot") + shoes = /obj/item/clothing/shoes/black + uniform = /obj/item/clothing/under/rank/pilot1 + suit = /obj/item/clothing/suit/storage/toggle/bomber/pilot + gloves = /obj/item/clothing/gloves/fingerless + glasses = /obj/item/clothing/glasses/fakesunglasses/aviator + l_ear = /obj/item/device/radio/headset/pilot/alt + id_slot = slot_wear_id + pda_slot = slot_belt + pda_type = /obj/item/device/pda //VOREStation Edit - Civilian + id_pda_assignment = "Pilot" + flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL + +/decl/hierarchy/outfit/job/medical/sar + name = OUTFIT_JOB_NAME("Field Medic") //VOREStation Edit + uniform = /obj/item/clothing/under/utility/blue + //suit = /obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar //VOREStation Edit + shoes = /obj/item/clothing/shoes/boots/winter/explorer + l_ear = /obj/item/device/radio/headset/sar + l_hand = /obj/item/weapon/storage/firstaid/regular + belt = /obj/item/weapon/storage/belt/medical/emt + pda_slot = slot_l_store + pda_type = /obj/item/device/pda/sar //VOREStation Add + id_pda_assignment = "Field Medic" //VOREStation Edit + flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL + +/decl/hierarchy/outfit/job/pathfinder + name = OUTFIT_JOB_NAME("Pathfinder") + shoes = /obj/item/clothing/shoes/boots/winter/explorer + uniform = /obj/item/clothing/under/explorer //TODO: Uniforms. + l_ear = /obj/item/device/radio/headset/pathfinder + id_slot = slot_wear_id + pda_slot = slot_l_store + pda_type = /obj/item/device/pda/pathfinder + id_type = /obj/item/weapon/card/id/explorer/head + id_pda_assignment = "Pathfinder" + flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL + backpack_contents = list(/obj/item/clothing/accessory/permit/gun/planetside = 1) + +/decl/hierarchy/outfit/job/pathfinder/post_equip(mob/living/carbon/human/H) + ..() + for(var/obj/item/clothing/accessory/permit/gun/planetside/permit in H.back.contents) + permit.set_name(H.real_name) + +/decl/hierarchy/outfit/job/assistant/explorer + id_type = /obj/item/weapon/card/id/explorer + flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm index 01e4119b55..c24dfcd922 100644 --- a/code/datums/progressbar.dm +++ b/code/datums/progressbar.dm @@ -1,46 +1,70 @@ +#define PROGRESSBAR_HEIGHT 6 + /datum/progressbar var/goal = 1 var/image/bar var/shown = 0 var/mob/user var/client/client + var/listindex -/datum/progressbar/New(mob/user, goal_number, atom/target) +/datum/progressbar/New(mob/User, goal_number, atom/target) . = ..() - if(!target) target = user - if (!istype(target)) - EXCEPTION("Invalid target given") - if (goal_number) + if(!istype(target)) + target = User + if(goal_number) goal = goal_number - bar = image('icons/effects/progessbar.dmi', target, "prog_bar_0") - bar.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA - bar.pixel_y = 32 + bar = image('icons/effects/progressbar.dmi', target, "prog_bar_0") + bar.alpha = 0 bar.plane = PLANE_PLAYER_HUD - src.user = user + bar.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA + user = User if(user) client = user.client -/datum/progressbar/Destroy() - if (client) - client.images -= bar - QDEL_NULL(bar) - user = null - client = null - return ..() + LAZYINITLIST(user.progressbars) + LAZYINITLIST(user.progressbars[bar.loc]) + var/list/bars = user.progressbars[bar.loc] + bars.Add(src) + listindex = bars.len + animate(bar, pixel_y = 32 + (PROGRESSBAR_HEIGHT * (listindex - 1)), alpha = 255, time = 5, easing = SINE_EASING) /datum/progressbar/proc/update(progress) - //to_world("Update [progress] - [goal] - [(progress / goal)] - [((progress / goal) * 100)] - [round(((progress / goal) * 100), 5)]") - if (!user || !user.client) + if(!user || !user.client) shown = 0 return - if (user.client != client) - if (client) + if(user.client != client) + if(client) client.images -= bar - shown = 0 - client = user.client + if(user.client) + user.client.images += bar progress = CLAMP(progress, 0, goal) bar.icon_state = "prog_bar_[round(((progress / goal) * 100), 5)]" - if (!shown && user.is_preference_enabled(/datum/client_preference/show_progress_bar)) + if(!shown && user.is_preference_enabled(/datum/client_preference/show_progress_bar)) user.client.images += bar shown = 1 + +/datum/progressbar/proc/shiftDown() + --listindex + var/shiftheight = bar.pixel_y - PROGRESSBAR_HEIGHT + animate(bar, pixel_y = shiftheight, time = 5, easing = SINE_EASING) + +/datum/progressbar/Destroy() + for(var/I in user.progressbars[bar.loc]) + var/datum/progressbar/P = I + if(P != src && P.listindex > listindex) + P.shiftDown() + + var/list/bars = user.progressbars[bar.loc] + bars.Remove(src) + if(!bars.len) + LAZYREMOVE(user.progressbars, bar.loc) + animate(bar, alpha = 0, time = 5) + spawn(5) + if(client) + client.images -= bar + qdel(bar) + . = ..() + +#undef PROGRESSBAR_HEIGHT \ No newline at end of file diff --git a/code/datums/riding.dm b/code/datums/riding.dm index 4f9513397a..ba96dbc405 100644 --- a/code/datums/riding.dm +++ b/code/datums/riding.dm @@ -2,7 +2,7 @@ /datum/riding var/next_vehicle_move = 0 // Used for move delays - var/vehicle_move_delay = 2 // Tick delay between movements, lower = faster, higher = slower + var/vehicle_move_delay = 2 // Decisecond delay between movements, lower = faster, higher = slower var/keytype = null // Can give this a type to require the rider to hold the item type inhand to move the ridden atom. var/nonhuman_key_exemption = FALSE // If true, nonhumans who can't hold keys don't need them, like borgs and simplemobs. var/key_name = "the keys" // What the 'keys' for the thing being rided on would be called. @@ -97,11 +97,13 @@ if(world.time < next_vehicle_move) return + next_vehicle_move = world.time + vehicle_move_delay + if(keycheck(user)) if(!Process_Spacemove(direction) || !isturf(ridden.loc)) return - ridden.Move(get_step(ridden, direction)) + ridden.Move(get_step(ridden, direction), direction, vehicle_move_delay) handle_vehicle_layer() handle_vehicle_offsets() diff --git a/code/datums/supplypacks/medical_vr.dm b/code/datums/supplypacks/medical_vr.dm index 0538f83867..2d6a340f0a 100644 --- a/code/datums/supplypacks/medical_vr.dm +++ b/code/datums/supplypacks/medical_vr.dm @@ -1,3 +1,6 @@ +/datum/supply_pack/med/medical + cost = 15 + /datum/supply_pack/med/medicalbiosuits contains = list( /obj/item/clothing/head/bio_hood/scientist = 3, diff --git a/code/datums/supplypacks/misc.dm b/code/datums/supplypacks/misc.dm index 7f4f0362db..cb420cd056 100644 --- a/code/datums/supplypacks/misc.dm +++ b/code/datums/supplypacks/misc.dm @@ -74,8 +74,17 @@ /obj/item/toy/plushie/squid/blue, /obj/item/toy/plushie/squid/orange, /obj/item/toy/plushie/squid/yellow, - /obj/item/toy/plushie/squid/pink - ) + /obj/item/toy/plushie/squid/pink, + //VOREStation Add Start + /obj/item/toy/plushie/lizardplushie/kobold, + /obj/item/toy/plushie/slimeplushie, + /obj/item/toy/plushie/box, + /obj/item/toy/plushie/borgplushie, + /obj/item/toy/plushie/borgplushie/medihound, + /obj/item/toy/plushie/borgplushie/scrubpuppy, + /obj/item/toy/plushie/foxbear, + /obj/item/toy/plushie/nukeplushie) + //VOREStation Add End name = "Plushies Crate" cost = 15 containertype = /obj/structure/closet/crate diff --git a/code/datums/uplink/ammunition.dm b/code/datums/uplink/ammunition.dm index 3ed884316a..8b853aed63 100644 --- a/code/datums/uplink/ammunition.dm +++ b/code/datums/uplink/ammunition.dm @@ -65,6 +65,10 @@ name = "Anti-Materiel Rifle ammo box (14.5mm)" path = /obj/item/weapon/storage/box/sniperammo +/datum/uplink_item/item/ammo/sniperammo_highvel + name = "Anti-Materiel Rifle ammo box (14.5mm sabot)" + path = /obj/item/weapon/storage/box/sniperammo/highvel + /datum/uplink_item/item/ammo/c545 name = "Rifle Magazine (5.45mm)" path = /obj/item/ammo_magazine/m545 diff --git a/code/datums/uplink/medical_vr.dm b/code/datums/uplink/medical_vr.dm index 324398843f..17a3ddf33a 100644 --- a/code/datums/uplink/medical_vr.dm +++ b/code/datums/uplink/medical_vr.dm @@ -1,6 +1,26 @@ /********** * Medical * **********/ +/datum/uplink_item/item/medical/fire + name = "Fire medical kit" + item_cost = 10 + path = /obj/item/weapon/storage/firstaid/fire + +/datum/uplink_item/item/medical/toxin + name = "Toxin medical kit" + item_cost = 10 + path = /obj/item/weapon/storage/firstaid/toxin + +/datum/uplink_item/item/medical/o2 + name = "Oxygen medical kit" + item_cost = 10 + path = /obj/item/weapon/storage/firstaid/o2 + +/datum/uplink_item/item/medical/adv + name = "Advanced medical kit" + item_cost = 10 + path = /obj/item/weapon/storage/firstaid/adv + /datum/uplink_item/item/medical/mre name = "Meal, Ready to eat (Random)" item_cost = 5 @@ -26,6 +46,11 @@ item_cost = 5 path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity +/datum/uplink_item/item/medical/pain + name = "Pain injector" + item_cost = 5 + path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain + /datum/uplink_item/item/medical/brute name = "Brute injector" item_cost = 5 @@ -46,12 +71,12 @@ item_cost = 5 path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy +/datum/uplink_item/item/medical/organ + name = "Organ Repair injector" + item_cost = 10 + path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ + /datum/uplink_item/item/medical/nanites name = "Healing Nanite pill bottle" item_cost = 30 path = /obj/item/weapon/storage/pill_bottle/healing_nanites - -/datum/uplink_item/item/medical/insiderepair - name = "Combat organ kit" - item_cost = 120 - path = /obj/item/weapon/storage/firstaid/insiderepair diff --git a/code/datums/uplink/tools_vr.dm b/code/datums/uplink/tools_vr.dm index 5a165f7aac..34794c5cdf 100644 --- a/code/datums/uplink/tools_vr.dm +++ b/code/datums/uplink/tools_vr.dm @@ -26,6 +26,11 @@ item_cost = 20 path = /obj/item/modular_computer/laptop/preset/custom_loadout/elite +/datum/uplink_item/item/tools/inducer + name = "Inducer" + item_cost = 20 + path = /obj/item/weapon/inducer/syndicate + /datum/uplink_item/item/tools/luxurycapsule name = "Survival Capsule (Luxury)" item_cost = 40 @@ -36,6 +41,11 @@ item_cost = 40 path = /obj/item/device/perfect_tele +/datum/uplink_item/item/tools/uav + name = "Recon Skimmer" + item_cost = 40 + path = /obj/item/device/uav + /datum/uplink_item/item/tools/barcapsule name = "Survival Capsule (Bar)" item_cost = 80 diff --git a/code/datums/wires/smes.dm b/code/datums/wires/smes.dm index 82d93b9fa8..1751bb6760 100644 --- a/code/datums/wires/smes.dm +++ b/code/datums/wires/smes.dm @@ -11,7 +11,7 @@ var/const/SMES_WIRE_FAILSAFES = 16 // Cut to disable failsafes, mend to reenable /datum/wires/smes/CanUse(var/mob/living/L) var/obj/machinery/power/smes/buildable/S = holder - if(S.open_hatch) + if(S.panel_open) return 1 return 0 diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 8d764c13ea..17014d95ed 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -59,22 +59,11 @@ var/damage = 0.0 var/range = 10.0 - -/obj/effect/list_container - name = "list container" - -/obj/effect/list_container/mobl - name = "mobl" - var/master = null - - var/list/container = list( ) - /obj/effect/projection name = "Projection" desc = "This looks like a projection of something." anchored = 1.0 - /obj/effect/shut_controller name = "shut controller" var/moving = null @@ -144,12 +133,5 @@ user.drop_item() src.throw_at(target, throw_range, throw_speed, user) -/obj/effect/stop - var/victim = null - icon_state = "empty" - name = "Geas" - desc = "You can't resist." - // name = "" - /obj/effect/spawner name = "object spawner" diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 82872c2f33..b7b66302b5 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -230,13 +230,6 @@ desc = "Heavy-duty switching circuits for power control." matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) -/obj/item/weapon/module/power_control/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) - if (istype(W, /obj/item/device/multitool)) - var/obj/item/weapon/circuitboard/ghettosmes/newcircuit = new/obj/item/weapon/circuitboard/ghettosmes(user.loc) - qdel(src) - user.put_in_hands(newcircuit) - - /obj/item/weapon/module/id_auth name = "\improper ID authentication module" icon_state = "id_mod" diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index c739ffbf85..d5202bafc2 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -17,22 +17,22 @@ log = do_log newscast = do_newscast -/datum/announcement/priority/New(var/do_log = 1, var/new_sound = 'sound/misc/notice2.ogg', var/do_newscast = 0) +/datum/announcement/priority/New(var/do_log = 1, var/new_sound, var/do_newscast = 0) ..(do_log, new_sound, do_newscast) title = "Priority Announcement" announcement_type = "Priority Announcement" -/datum/announcement/priority/command/New(var/do_log = 1, var/new_sound = 'sound/misc/notice2.ogg', var/do_newscast = 0) +/datum/announcement/priority/command/New(var/do_log = 1, var/new_sound, var/do_newscast = 0) ..(do_log, new_sound, do_newscast) title = "[command_name()] Update" announcement_type = "[command_name()] Update" -/datum/announcement/priority/security/New(var/do_log = 1, var/new_sound = 'sound/misc/notice2.ogg', var/do_newscast = 0) +/datum/announcement/priority/security/New(var/do_log = 1, var/new_sound, var/do_newscast = 0) ..(do_log, new_sound, do_newscast) title = "Security Announcement" announcement_type = "Security Announcement" -/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast, var/msg_sanitized = 0, zlevel) +/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast, var/msg_sanitized = 0, var/zlevel) if(!message) return var/message_title = new_title ? new_title : title @@ -52,22 +52,49 @@ Sound(message_sound, zlevels) Log(message, message_title) -datum/announcement/proc/Message(var/message as text, var/message_title as text, var/list/zlevels) - global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME, zlevels) +/datum/announcement/proc/Message(message as text, message_title as text, var/list/zlevels) + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player) && !isdeaf(M)) + to_chat(M, "

[title]

") + to_chat(M, "[message]") + if (announcer) + to_chat(M, " -[html_encode(announcer)]") -datum/announcement/minor/Message(var/message as text, var/message_title as text, var/list/zlevels) - global_announcer.autosay(message, announcer ? announcer : ANNOUNCER_NAME, zlevels) +// You'll need to update these to_world usages if you want to make these z-level specific ~Aro +/datum/announcement/minor/Message(message as text, message_title as text) + to_world("[message]") -datum/announcement/priority/Message(var/message as text, var/message_title as text, var/list/zlevels) - global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME, zlevels) +/datum/announcement/priority/Message(message as text, message_title as text) + to_world("

[message_title]

") + to_world("[message]") + if(announcer) + to_world(" -[html_encode(announcer)]") + to_world("
") -datum/announcement/priority/command/Message(var/message as text, var/message_title as text, var/list/zlevels) - global_announcer.autosay("[command_name()] - [message_title]: [message]", ANNOUNCER_NAME, zlevels) +/datum/announcement/priority/command/Message(message as text, message_title as text, var/list/zlevels) + var/command + command += "

[command_name()] Update

" + if (message_title) + command += "

[message_title]

" -datum/announcement/priority/security/Message(var/message as text, var/message_title as text, var/list/zlevels) - global_announcer.autosay("[message_title]: [message]", ANNOUNCER_NAME, zlevels) + command += "
[message]
" + command += "
" + for(var/mob/M in player_list) + if(zlevels && !(get_z(M) in zlevels)) + continue + if(!istype(M,/mob/new_player) && !isdeaf(M)) + to_chat(M, command) -datum/announcement/proc/NewsCast(var/message as text, var/message_title as text) +/datum/announcement/priority/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME, channel = "Common", zlevels = zlevels) + +/datum/announcement/priority/command/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay("[command_name()] - [message_title]: [message]", ANNOUNCER_NAME, channel = "Common", zlevels = zlevels) + +/datum/announcement/priority/security/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay("[message_title]: [message]", ANNOUNCER_NAME, channel = "Common", zlevels = zlevels) + +/datum/announcement/proc/NewsCast(var/message as text, var/message_title as text) if(!newscast) return @@ -79,27 +106,27 @@ datum/announcement/proc/NewsCast(var/message as text, var/message_title as text) news.can_be_redacted = 0 announce_newscaster_news(news) -datum/announcement/proc/PlaySound(var/message_sound, var/list/zlevels) - if(!message_sound) - return - +/datum/announcement/proc/PlaySound(var/message_sound, var/list/zlevels) for(var/mob/M in player_list) if(zlevels && !(M.z in zlevels)) continue if(!istype(M,/mob/new_player) && !isdeaf(M)) - M << message_sound + M << 'sound/AI/preamble.ogg' -datum/announcement/proc/Sound(var/message_sound, var/list/zlevels) + if(!message_sound) + return + + spawn(22) // based on length of preamble.ogg + arbitrary delay + for(var/mob/M in player_list) + if(zlevels && !(M.z in zlevels)) + continue + if(!istype(M,/mob/new_player) && !isdeaf(M)) + M << message_sound + +/datum/announcement/proc/Sound(var/message_sound, var/list/zlevels) PlaySound(message_sound, zlevels) -datum/announcement/priority/Sound(var/message_sound) - if(message_sound) - world << message_sound - -datum/announcement/priority/command/Sound(var/message_sound) - PlaySound(message_sound) - -datum/announcement/proc/Log(message as text, message_title as text) +/datum/announcement/proc/Log(message as text, message_title as text) if(log) log_game("[key_name(usr)] has made \a [announcement_type]: [message_title] - [message] - [announcer]") message_admins("[key_name_admin(usr)] has made \a [announcement_type].", 1) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 6c7cb1597b..f403606db2 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -21,14 +21,22 @@ var/requires_power = 1 var/always_unpowered = 0 //this gets overriden to 1 for space in area/New() - var/power_equip = 1 - var/power_light = 1 - var/power_environ = 1 - var/music = null - var/used_equip = 0 - var/used_light = 0 - var/used_environ = 0 + // Power channel status - Is it currently energized? + var/power_equip = TRUE + var/power_light = TRUE + var/power_environ = TRUE + // Oneoff power usage - Used once and cleared each power cycle + var/oneoff_equip = 0 + var/oneoff_light = 0 + var/oneoff_environ = 0 + + // Continuous "static" power usage - Do not update these directly! + var/static_equip = 0 + var/static_light = 0 + var/static_environ = 0 + + var/music = null var/has_gravity = 1 var/secret_name = FALSE // This tells certain things that display areas' names that they shouldn't display this area's name. var/obj/machinery/power/apc/apc = null @@ -47,7 +55,7 @@ luminosity = !(dynamic_lighting) icon_state = "" - + return INITIALIZE_HINT_LATELOAD // Areas tradiationally are initialized AFTER other atoms. /area/LateInitialize() @@ -81,7 +89,7 @@ for(var/atom/movable/AM in T) A.Entered(AM, old_area) for(var/obj/machinery/M in T) - M.power_change() + M.area_changed(old_area, A) /area/proc/get_contents() return contents @@ -251,33 +259,96 @@ if (fire || eject || party) updateicon() -/area/proc/usage(var/chan) +/area/proc/usage(var/chan, var/include_static = TRUE) var/used = 0 switch(chan) if(LIGHT) - used += used_light + used += oneoff_light + (include_static * static_light) if(EQUIP) - used += used_equip + used += oneoff_equip + (include_static * static_equip) if(ENVIRON) - used += used_environ + used += oneoff_environ + (include_static * static_environ) if(TOTAL) - used += used_light + used_equip + used_environ + used += oneoff_light + (include_static * static_light) + used += oneoff_equip + (include_static * static_equip) + used += oneoff_environ + (include_static * static_environ) return used +// Helper for APCs; will generally be called every tick. /area/proc/clear_usage() - used_equip = 0 - used_light = 0 - used_environ = 0 + oneoff_equip = 0 + oneoff_light = 0 + oneoff_environ = 0 -/area/proc/use_power(var/amount, var/chan) +// Use this for a one-time power draw from the area, typically for non-machines. +/area/proc/use_power_oneoff(var/amount, var/chan) switch(chan) if(EQUIP) - used_equip += amount + oneoff_equip += amount if(LIGHT) - used_light += amount + oneoff_light += amount if(ENVIRON) - used_environ += amount + oneoff_environ += amount + return amount +// This is used by machines to properly update the area of power changes. +/area/proc/power_use_change(old_amount, new_amount, chan) + use_power_static(new_amount - old_amount, chan) // Simultaneously subtract old_amount and add new_amount. + +// Not a proc you want to use directly unless you know what you are doing; see use_power_oneoff above instead. +/area/proc/use_power_static(var/amount, var/chan) + switch(chan) + if(EQUIP) + static_equip += amount + if(LIGHT) + static_light += amount + if(ENVIRON) + static_environ += amount + +// This recomputes the continued power usage; can be used for testing or error recovery, but is not called every tick. +/area/proc/retally_power() + static_equip = 0 + static_light = 0 + static_environ = 0 + for(var/obj/machinery/M in src) + switch(M.power_channel) + if(EQUIP) + static_equip += M.get_power_usage() + if(LIGHT) + static_light += M.get_power_usage() + if(ENVIRON) + static_environ += M.get_power_usage() + +////////////////////////////////////////////////////////////////// + +/area/vv_get_dropdown() + . = ..() + VV_DROPDOWN_OPTION("check_static_power", "Check Static Power") + +/area/vv_do_topic(list/href_list) + . = ..() + IF_VV_OPTION("check_static_power") + if(!check_rights(R_DEBUG)) + return + src.check_static_power(usr) + href_list["datumrefresh"] = "\ref[src]" + +// Debugging proc to report if static power is correct or not. +/area/proc/check_static_power(var/user) + set name = "Check Static Power" + var/actual_static_equip = static_equip + var/actual_static_light = static_light + var/actual_static_environ = static_environ + retally_power() + if(user) + var/list/report = list("[src] ([type]) static power tally:") + report += "EQUIP: Actual: [actual_static_equip] Correct: [static_equip] Difference: [actual_static_equip - static_equip]" + report += "LIGHT: Actual: [actual_static_light] Correct: [static_light] Difference: [actual_static_light - static_light]" + report += "ENVIRON: Actual: [actual_static_environ] Correct: [static_environ] Difference: [actual_static_environ - static_environ]" + to_chat(user, report.Join("\n")) + return (actual_static_equip == static_equip && actual_static_light == static_light && actual_static_environ == static_environ) + +////////////////////////////////////////////////////////////////// var/list/mob/living/forced_ambiance_list = new @@ -350,17 +421,20 @@ var/list/mob/living/forced_ambiance_list = new to_chat(mob, "The sudden appearance of gravity makes you fall to the floor!") playsound(get_turf(src), "bodyfall", 50, 1) -/area/proc/prison_break() +/area/proc/prison_break(break_lights = TRUE, open_doors = TRUE, open_blast_doors = TRUE) var/obj/machinery/power/apc/theAPC = get_apc() if(theAPC.operating) - for(var/obj/machinery/power/apc/temp_apc in src) - temp_apc.overload_lighting(70) - for(var/obj/machinery/door/airlock/temp_airlock in src) - temp_airlock.prison_open() - for(var/obj/machinery/door/window/temp_windoor in src) - temp_windoor.open() - for(var/obj/machinery/door/blast/temp_blast in src) - temp_blast.open() + if(break_lights) + for(var/obj/machinery/power/apc/temp_apc in src) + temp_apc.overload_lighting(70) + if(open_doors) + for(var/obj/machinery/door/airlock/temp_airlock in src) + temp_airlock.prison_open() + for(var/obj/machinery/door/window/temp_windoor in src) + temp_windoor.open() + if(open_blast_doors) + for(var/obj/machinery/door/blast/temp_blast in src) + temp_blast.open() /area/has_gravity() return has_gravity diff --git a/code/game/area/areas_vr.dm b/code/game/area/areas_vr.dm index d422c1cd0f..5396c46e60 100644 --- a/code/game/area/areas_vr.dm +++ b/code/game/area/areas_vr.dm @@ -1,6 +1,13 @@ -/area/shuttle_arrived() - .=..() - for(var/obj/machinery/telecomms/relay/R in contents) - R.reset_z() - for(var/obj/machinery/power/apc/A in contents) - A.update_area() +/area + var/enter_message + var/exit_message + +/area/Entered(var/atom/movable/AM, oldLoc) + . = ..() + if(enter_message && isliving(AM)) + to_chat(AM, enter_message) + +/area/Exited(var/atom/movable/AM, newLoc) + . = ..() + if(exit_message && isliving(AM)) + to_chat(AM, exit_message) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 26d8506bf9..5f8ccb3391 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -169,7 +169,7 @@ return found //All atoms -/atom/proc/examine(mob/user, var/distance = -1, var/infix = "", var/suffix = "") +/atom/proc/examine(mob/user, var/infix = "", var/suffix = "") //This reformat names to get a/an properly working on item descriptions when they are bloody var/f_name = "\a [src][infix]." if(src.blood_DNA && !istype(src, /obj/effect/decal)) @@ -182,16 +182,15 @@ else f_name += "oil-stained [name][infix]." - to_chat(user, "[bicon(src)] That's [f_name] [suffix]") - to_chat(user,desc) + var/list/output = list("[bicon(src)] That's [f_name] [suffix]", desc) if(user.client?.examine_text_mode == EXAMINE_MODE_INCLUDE_USAGE) - to_chat(user, description_info) + output += description_info if(user.client?.examine_text_mode == EXAMINE_MODE_SWITCH_TO_PANEL) user.client.statpanel = "Examine" // Switch to stat panel - return distance == -1 || (get_dist(src, user) <= distance) + return output // called by mobs when e.g. having the atom as their machine, pulledby, loc (AKA mob being inside the atom) or buckled var set. // see code/modules/mob/mob_movement.dm for more. @@ -587,3 +586,5 @@ >> "} + var/turf/T = get_turf(src) + . += "
[ADMIN_COORDJMP(T)]" diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index fa0c99dcb6..87a09d538a 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -1,13 +1,13 @@ /atom/movable layer = OBJ_LAYER - appearance_flags = TILE_BOUND|PIXEL_SCALE|KEEP_TOGETHER //VOREStation Edit - var/last_move = null + appearance_flags = TILE_BOUND|PIXEL_SCALE + glide_size = 8 + var/last_move = null //The direction the atom last moved var/anchored = 0 // var/elevation = 2 - not used anywhere var/moving_diagonally var/move_speed = 10 var/l_move_time = 1 - var/m_flag = 1 var/throwing = 0 var/thrower var/turf/throw_source = null @@ -48,83 +48,105 @@ pulledby = null QDEL_NULL(riding_datum) //VOREStation Add + +/atom/movable/vv_get_dropdown() + . = ..() + VV_DROPDOWN_OPTION("move_atom", "Move To Coordinate") + +/atom/vv_do_topic(list/href_list) + . = ..() + IF_VV_OPTION("move_atom") + usr.client.cmd_admin_move_atom(src) + href_list["datumrefresh"] = "\ref[src]" + /atom/movable/vv_edit_var(var_name, var_value) if(var_name in GLOB.VVpixelmovement) //Pixel movement is not yet implemented, changing this will break everything irreversibly. return FALSE return ..() //////////////////////////////////////// -// Here's where we rewrite how byond handles movement except slightly different -// To be removed on step_ conversion -// All this work to prevent a second bump -/atom/movable/Move(atom/newloc, direct=0) - . = FALSE - if(!newloc || newloc == loc) - return - - if(!direct) - direct = get_dir(src, newloc) - set_dir(direct) - - if(!loc.Exit(src, newloc)) - return - - if(!newloc.Enter(src, src.loc)) - return - - if(!check_multi_tile_move_density_dir(direct, locs)) // We're big, and we can't move that way. - return - - // Past this is the point of no return - if(!locs || locs.len <= 1) // We're not a multi-tile object. - var/atom/oldloc = loc - var/area/oldarea = get_area(oldloc) - var/area/newarea = get_area(newloc) - loc = newloc - . = TRUE - oldloc.Exited(src, newloc) - if(oldarea != newarea) - oldarea.Exited(src, newloc) - - for(var/i in oldloc) - if(i == src) // Multi tile objects - continue - var/atom/movable/thing = i - thing.Uncrossed(src) - - newloc.Entered(src, oldloc) - if(oldarea != newarea) - newarea.Entered(src, oldloc) - - for(var/i in loc) - if(i == src) // Multi tile objects - continue - var/atom/movable/thing = i - thing.Crossed(src) - - else if(newloc) // We're a multi-tile object. - . = doMove(newloc) - -// -//////////////////////////////////////// - -/atom/movable/Move(atom/newloc, direct = 0) +/atom/movable/Move(atom/newloc, direct = 0, movetime) + // Didn't pass enough info if(!loc || !newloc) return FALSE + + // Store this early before we might move, it's used several places var/atom/oldloc = loc + // If we're not moving to the same spot (why? does that even happen?) if(loc != newloc) if(!direct) direct = get_dir(oldloc, newloc) - if (!(direct & (direct - 1))) //Cardinal move - . = ..() - else //Diagonal move, split it into cardinal moves + if (IS_CARDINAL(direct)) //Cardinal move + // Track our failure if any in this value + . = TRUE + + // Face the direction of movement + set_dir(direct) + + // Check to make sure we can leave + if(!loc.Exit(src, newloc)) + . = FALSE + + // Check to make sure we can enter, if we haven't already failed + if(. && !newloc.Enter(src, src.loc)) + . = FALSE + + // Check to make sure if we're multi-tile we can move, if we haven't already failed + if(. && !check_multi_tile_move_density_dir(direct, locs)) + . = FALSE + + // Definitely moving if you enter this, no failures so far + if(. && locs.len <= 1) // We're not a multi-tile object. + var/area/oldarea = get_area(oldloc) + var/area/newarea = get_area(newloc) + var/old_z = get_z(oldloc) + var/dest_z = get_z(newloc) + + // Do The Move + glide_for(movetime) + loc = newloc + . = TRUE + + // So objects can be informed of z-level changes + if (old_z != dest_z) + onTransitZ(old_z, dest_z) + + // We don't call parent so we are calling this for byond + oldloc.Exited(src, newloc) + if(oldarea != newarea) + oldarea.Exited(src, newloc) + + // Multi-tile objects can't reach here, otherwise you'd need to avoid uncrossing yourself + for(var/i in oldloc) + var/atom/movable/thing = i + // We don't call parent so we are calling this for byond + thing.Uncrossed(src) + + // We don't call parent so we are calling this for byond + newloc.Entered(src, oldloc) + if(oldarea != newarea) + newarea.Entered(src, oldloc) + + // Multi-tile objects can't reach here, otherwise you'd need to avoid uncrossing yourself + for(var/i in loc) + var/atom/movable/thing = i + // We don't call parent so we are calling this for byond + thing.Crossed(src) + + // We're a multi-tile object (multiple locs) + else if(. && newloc) + . = doMove(newloc) + + //Diagonal move, split it into cardinal moves + else moving_diagonally = FIRST_DIAG_STEP var/first_step_dir // The `&& moving_diagonally` checks are so that a forceMove taking // place due to a Crossed, Bumped, etc. call will interrupt // the second half of the diagonal movement, or the second attempt // at a first half if step() fails because we hit something. + glide_for(movetime) if (direct & NORTH) if (direct & EAST) if (step(src, NORTH) && moving_diagonally) @@ -163,52 +185,51 @@ first_step_dir = WEST moving_diagonally = SECOND_DIAG_STEP . = step(src, SOUTH) - if(moving_diagonally == SECOND_DIAG_STEP) - if(!.) - set_dir(first_step_dir) - //else if (!inertia_moving) - // inertia_next_move = world.time + inertia_move_delay - // newtonian_move(direct) + // If we failed, turn to face the direction of the first step at least + if(!. && moving_diagonally == SECOND_DIAG_STEP) + set_dir(first_step_dir) + // Done, regardless! moving_diagonally = 0 + // We return because step above will call Move() and we don't want to do shenanigans back in here again return - if(!loc || (loc == oldloc && oldloc != newloc)) + else if(!loc || (loc == oldloc)) last_move = 0 return + // If we moved, call Moved() on ourselves if(.) - Moved(oldloc, direct) + Moved(oldloc, direct, FALSE, movetime) - //Polaris stuff + // Update timers/cooldown stuff move_speed = world.time - l_move_time l_move_time = world.time - m_flag = 1 - //End - - last_move = direct - set_dir(direct) - if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s) - return FALSE - //VOREStation Add - else if(. && riding_datum) - riding_datum.handle_vehicle_layer() - riding_datum.handle_vehicle_offsets() - //VOREStation Add End + last_move = direct // The direction you last moved + // set_dir(direct) //Don't think this is necessary //Called after a successful Move(). By this point, we've already moved -/atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE) - //if (!inertia_moving) - // inertia_next_move = world.time + inertia_move_delay - // newtonian_move(Dir) - //if (length(client_mobs_in_contents)) - // update_parallax_contents() - +/atom/movable/proc/Moved(atom/old_loc, direction, forced = FALSE, movetime) + // Handle any buckled mobs on this movable + if(has_buckled_mobs()) + handle_buckled_mob_movement(old_loc, direction, movetime) + if(riding_datum) + riding_datum.handle_vehicle_layer() + riding_datum.handle_vehicle_offsets() return TRUE +/atom/movable/set_dir(newdir) + . = ..(newdir) + if(riding_datum) + riding_datum.handle_vehicle_offsets() + +/atom/movable/relaymove(mob/user, direction) + . = ..() + if(riding_datum) + riding_datum.handle_ride(user, direction) + // Make sure you know what you're doing if you call this, this is intended to only be called by byond directly. // You probably want CanPass() /atom/movable/Cross(atom/movable/AM) - . = TRUE return CanPass(AM, loc) /atom/movable/CanPass(atom/movable/mover, turf/target) @@ -239,72 +260,113 @@ A.Bumped(src) A.last_bumped = world.time -/atom/movable/proc/forceMove(atom/destination) +/atom/movable/proc/forceMove(atom/destination, direction, movetime) . = FALSE if(destination) - . = doMove(destination) + . = doMove(destination, direction, movetime) else CRASH("No valid destination passed into forceMove") /atom/movable/proc/moveToNullspace() return doMove(null) -/atom/movable/proc/doMove(atom/destination) - . = FALSE +/atom/movable/proc/doMove(atom/destination, direction, movetime) + var/atom/oldloc = loc + var/area/old_area = get_area(oldloc) + var/same_loc = oldloc == destination + if(destination) - var/atom/oldloc = loc - var/same_loc = oldloc == destination - var/area/old_area = get_area(oldloc) var/area/destarea = get_area(destination) + // Do The Move + glide_for(movetime) + last_move = isnull(direction) ? 0 : direction loc = destination + + // Unset this in case it was set in some other proc. We're no longer moving diagonally for sure. moving_diagonally = 0 + // We are moving to a different loc if(!same_loc) + // Not moving out of nullspace if(oldloc) oldloc.Exited(src, destination) + // If it's not the same area, Exited() it if(old_area && old_area != destarea) old_area.Exited(src, destination) - for(var/atom/movable/AM in oldloc) + + // Uncross everything where we left + for(var/i in oldloc) + var/atom/movable/AM = i + if(AM == src) + continue AM.Uncrossed(src) + + // Information about turf and z-levels for source and dest collected var/turf/oldturf = get_turf(oldloc) var/turf/destturf = get_turf(destination) var/old_z = (oldturf ? oldturf.z : null) var/dest_z = (destturf ? destturf.z : null) + + // So objects can be informed of z-level changes if (old_z != dest_z) onTransitZ(old_z, dest_z) + + // Destination atom Entered destination.Entered(src, oldloc) + + // Entered() the new area if it's not the same area if(destarea && old_area != destarea) destarea.Entered(src, oldloc) - for(var/atom/movable/AM in destination) + // We ignore ourselves because if we're multi-tile we might be in both old and new locs + for(var/i in destination) + var/atom/movable/AM = i if(AM == src) continue AM.Crossed(src, oldloc) + // Call our thingy to inform everyone we moved + Moved(oldloc, NONE, TRUE) + // Break pulling if we are too far to pull now. if(pulledby && (pulledby.z != src.z || get_dist(pulledby, src) > 1)) pulledby.stop_pulling() - Moved(oldloc, NONE, TRUE) - . = TRUE + // We moved + return TRUE //If no destination, move the atom into nullspace (don't do this unless you know what you're doing) - else - . = TRUE - if (loc) - var/atom/oldloc = loc - var/area/old_area = get_area(oldloc) - oldloc.Exited(src, null) - if(old_area) - old_area.Exited(src, null) + else if(oldloc) loc = null + // Uncross everything where we left (no multitile safety like above because we are definitely not still there) + for(var/i in oldloc) + var/atom/movable/AM = i + AM.Uncrossed(src) + + // Exited() our loc and area + oldloc.Exited(src, null) + if(old_area) + old_area.Exited(src, null) + + // We moved + return TRUE + /atom/movable/proc/onTransitZ(old_z,new_z) GLOB.z_moved_event.raise_event(src, old_z, new_z) for(var/item in src) // Notify contents of Z-transition. This can be overridden IF we know the items contents do not care. var/atom/movable/AM = item AM.onTransitZ(old_z,new_z) + +/atom/movable/proc/glide_for(movetime) + if(movetime) + glide_size = WORLD_ICON_SIZE/max(DS2TICKS(movetime), 1) + spawn(movetime) + glide_size = initial(glide_size) + else + glide_size = initial(glide_size) + ///////////////////////////////////////////////////////////////// //called when src is thrown into hit_atom diff --git a/code/game/atoms_movable_vr.dm b/code/game/atoms_movable_vr.dm index 0cc6d144be..d529122029 100644 --- a/code/game/atoms_movable_vr.dm +++ b/code/game/atoms_movable_vr.dm @@ -1,12 +1,2 @@ /atom/movable/proc/Bump_vr(var/atom/A, yes) return - -/atom/movable/set_dir(newdir) - . = ..(newdir) - if(riding_datum) - riding_datum.handle_vehicle_offsets() - -/atom/movable/relaymove(mob/user, direction) - . = ..() - if(riding_datum) - riding_datum.handle_ride(user, direction) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 7f963710a1..93d9ff4289 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -24,6 +24,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E var/list/purchased_powers_history = list() //Used for round-end report, includes respec uses too. var/last_shriek = null // world.time when the ling last used a shriek. var/next_escape = 0 // world.time when the ling can next use Escape Restraints + var/thermal_sight = FALSE // Is our Vision Augmented? With thermals? /datum/changeling/New(var/gender=FEMALE) ..() @@ -64,8 +65,8 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E if(!mind) return if(!mind.changeling) mind.changeling = new /datum/changeling(gender) - verbs += /datum/changeling/proc/EvolutionMenu - verbs += /mob/proc/changeling_respec + verbs.Add(/datum/changeling/proc/EvolutionMenu) + verbs.Add(/mob/proc/changeling_respec) add_language("Changeling") var/lesser_form = !ishuman(src) @@ -84,7 +85,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E if(P.isVerb) if(lesser_form && !P.allowduringlesserform) continue if(!(P in src.verbs)) - src.verbs += P.verbpath + verbs.Add(P.verbpath) if(P.make_hud_button) if(!src.ability_master) src.ability_master = new /obj/screen/movable/ability_master(src) @@ -111,7 +112,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E if(!mind || !mind.changeling) return for(var/datum/power/changeling/P in mind.changeling.purchased_powers) if(P.isVerb) - verbs -= P.verbpath + verbs.Remove(P.verbpath) var/obj/screen/ability/verb_based/changeling/C = ability_master.get_ability_by_proc_ref(P.verbpath) if(C) ability_master.remove_ability(C) diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm index a76311c335..e532396176 100644 --- a/code/game/gamemodes/changeling/powers/absorb.dm +++ b/code/game/gamemodes/changeling/powers/absorb.dm @@ -3,11 +3,11 @@ desc = "Permits us to syphon the DNA from a human. They become one with us, and we become stronger if they were of our kind." ability_icon_state = "ling_absorb_dna" genomecost = 0 - verbpath = /mob/proc/changeling_absorb_dna + verbpath = /mob/living/proc/changeling_absorb_dna //Absorbs the victim's DNA. Requires a strong grip on the victim. //Doesn't cost anything as it's the most basic ability. -/mob/proc/changeling_absorb_dna() +/mob/living/proc/changeling_absorb_dna() set category = "Changeling" set name = "Absorb DNA" @@ -67,8 +67,7 @@ to_chat(src, "We have absorbed [T]!") src.visible_message("[src] sucks the fluids from [T]!") to_chat(T, "You have been absorbed by the changeling!") - if(src.nutrition < 400) - src.nutrition = min((src.nutrition + T.nutrition), 400) + adjust_nutrition(T.nutrition) changeling.chem_charges += 10 if(changeling.readapts <= 0) changeling.readapts = 0 //SANITYYYYYY diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm index e4eb45a9e9..6e29bf939c 100644 --- a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm +++ b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm @@ -1,12 +1,11 @@ -//Augmented Eyesight: Gives you thermal and night vision - bye bye, flashlights. Also, high DNA cost because of how powerful it is. +//Augmented Eyesight: Gives you thermal vision. Also, higher DNA cost because of how powerful it is. /datum/power/changeling/augmented_eyesight name = "Augmented Eyesight" desc = "Creates heat receptors in our eyes and dramatically increases light sensing ability." - helptext = "Grants us night vision and thermal vision. It may be toggled on or off. We will become more vulnerable to flash-based devices while active." + helptext = "Grants us thermal vision. It may be toggled on or off. We will become more vulnerable to flash-based devices while active." ability_icon_state = "ling_augmented_eyesight" genomecost = 2 - var/active = 0 //Whether or not vision is enhanced verbpath = /mob/proc/changeling_augmented_eyesight /mob/proc/changeling_augmented_eyesight() @@ -17,23 +16,22 @@ var/datum/changeling/changeling = changeling_power(5,0,100,CONSCIOUS) if(!changeling) return 0 - src.mind.changeling.chem_charges -= 5 - src.sight |= SEE_MOBS - /* + var/mob/living/carbon/human/C = src - active = !active + changeling.thermal_sight = !changeling.thermal_sight + + var/active = changeling.thermal_sight + if(active) - to_chat(C, "We feel a minute twitch in our eyes, and darkness creeps away.") - C.sight |= SEE_MOBS - C.permanent_sight_flags |= SEE_MOBS - C.see_in_dark = 8 - C.dna.species.invis_sight = SEE_INVISIBLE_MINIMUM + src.mind.changeling.chem_charges -= 5 + to_chat(C, "We feel a minute twitch in our eyes, and a hidden layer to the world is revealed.") + C.add_modifier(/datum/modifier/changeling/thermal_sight, 0, src) +// C.permanent_sight_flags |= SEE_MOBS +// C.dna.species.invis_sight = SEE_INVISIBLE_MINIMUM else - to_chat(C, "Our vision dulls. Shadows gather.") - C.sight &= ~SEE_MOBS - C.permanent_sight_flags &= ~SEE_MOBS - C.see_in_dark = 0 - C.dna.species.invis_sight = initial(user.dna.species.invis_sight) + to_chat(C, "Our vision dulls.") + C.remove_modifiers_of_type(/datum/modifier/changeling/thermal_sight) +// C.permanent_sight_flags &= ~SEE_MOBS +// C.dna.species.invis_sight = initial(user.dna.species.invis_sight) return 1 - */ \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/endoarmor.dm b/code/game/gamemodes/changeling/powers/endoarmor.dm index 536aef26ce..d62c52141a 100644 --- a/code/game/gamemodes/changeling/powers/endoarmor.dm +++ b/code/game/gamemodes/changeling/powers/endoarmor.dm @@ -14,7 +14,6 @@ on_expired_text = "Our protective armor underneath our skin fades as we absorb it." max_health_flat = 50 -//Increases macimum chemical storage /mob/proc/changeling_endoarmor() if(ishuman(src)) var/mob/living/carbon/human/H = src diff --git a/code/game/gamemodes/changeling/powers/fake_death.dm b/code/game/gamemodes/changeling/powers/fake_death.dm index cd34ebfc5c..65fce3cecf 100644 --- a/code/game/gamemodes/changeling/powers/fake_death.dm +++ b/code/game/gamemodes/changeling/powers/fake_death.dm @@ -43,7 +43,10 @@ spawn(rand(2 MINUTES, 4 MINUTES)) //The ling will now be able to choose when to revive - src.verbs += /mob/proc/changeling_revive + verbs.Add(/mob/proc/changeling_revive) + + new /obj/changeling_revive_holder(src) + to_chat(src, "We are ready to rise. Use the Revive verb when you are ready.") feedback_add_details("changeling_powers","FD") diff --git a/code/game/gamemodes/changeling/powers/respec.dm b/code/game/gamemodes/changeling/powers/respec.dm index a50a41269f..935092ff65 100644 --- a/code/game/gamemodes/changeling/powers/respec.dm +++ b/code/game/gamemodes/changeling/powers/respec.dm @@ -17,6 +17,7 @@ ling_datum.purchased_powers = list() //Then wipe all the powers we bought. ling_datum.geneticpoints = ling_datum.max_geneticpoints //Now refund our points to the maximum. ling_datum.chem_recharge_rate = 0.5 //If glands were bought, revert that upgrade. + ling_datum.thermal_sight = FALSE src.mind.changeling.recursive_enhancement = 0 //Ensures this is cleared ling_datum.chem_storage = 50 diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index 61a061170e..420b1173c8 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -82,10 +82,28 @@ C.set_stat(CONSCIOUS) C.forbid_seeing_deadchat = FALSE C.timeofdeath = null - src.verbs -= /mob/proc/changeling_revive + verbs.Remove(/mob/proc/changeling_revive) // re-add our changeling powers C.make_changeling() - - return 1 + +//Revive from revival stasis, but one level removed, as the tab refuses to update. Placed in its own tab to avoid hyper-exploding the original tab through the same name being used. + +/obj/changeling_revive_holder + name = "strange object" + desc = "Please report this object's existence to the dev team! You shouldn't see it." + mouse_opacity = FALSE + alpha = 1 + +/obj/changeling_revive_holder/verb/ling_revive() + set src = usr.contents + set category = "Regenerate" + set name = "Revive" + set desc = "We are ready to revive ourselves on command." + + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + C.changeling_revive() + + qdel(src) diff --git a/code/game/gamemodes/changeling/powers/unfat_sting.dm b/code/game/gamemodes/changeling/powers/unfat_sting.dm index ece0d50f46..34ef7b7032 100644 --- a/code/game/gamemodes/changeling/powers/unfat_sting.dm +++ b/code/game/gamemodes/changeling/powers/unfat_sting.dm @@ -13,7 +13,6 @@ if(!T) return 0 add_attack_logs(src,T,"Unfat sting (changeling)") to_chat(T, "you feel a small prick as stomach churns violently and you become to feel skinnier.") - T.overeatduration = 0 - T.nutrition -= 100 + T.adjust_nutrition(-100) feedback_add_details("changeling_powers","US") return 1 \ No newline at end of file diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 1cf204b015..c324a6f092 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -84,9 +84,9 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa"," ..() examine(mob/user) - ..() + . = ..() if(iscultist(user)) - to_chat(user, "This spell circle reads: [word1] [word2] [word3].") + . += "This spell circle reads: [word1] [word2] [word3]." attackby(I as obj, user as mob) @@ -422,10 +422,11 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa"," return examine(mob/user) + . = ..() if(!iscultist(user)) - to_chat(user, "An old, dusty tome with frayed edges and a sinister looking cover.") + . += "An old, dusty tome with frayed edges and a sinister looking cover." else - to_chat(user, "The scriptures of Nar-Sie, The One Who Sees, The Geometer of Blood. Contains the details of every ritual his followers could think of. Most of these are useless, though.") + . += "The scriptures of Nar-Sie, The One Who Sees, The Geometer of Blood. Contains the details of every ritual his followers could think of. Most of these are useless, though." /obj/item/weapon/book/tome/cultify() return diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index d08c49d6a8..42e6a6ddd0 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -306,7 +306,7 @@ var/global/list/additional_antag_types = list() var/escaped_on_pod_5 = 0 var/escaped_on_shuttle = 0 - var/list/area/escape_locations = list(/area/shuttle/escape/centcom, /area/shuttle/escape_pod1/centcom, /area/shuttle/escape_pod2/centcom, /area/shuttle/escape_pod3/centcom, /area/shuttle/escape_pod5/centcom) + var/list/area/escape_locations = list(/area/shuttle/escape, /area/shuttle/escape_pod1/centcom, /area/shuttle/escape_pod2/centcom, /area/shuttle/escape_pod3/centcom, /area/shuttle/escape_pod5/centcom) //VOREStation Edit for(var/mob/M in player_list) if(M.client) diff --git a/code/game/gamemodes/malfunction/malf_hardware.dm b/code/game/gamemodes/malfunction/malf_hardware.dm index 864ba0722d..8206f9cd5e 100644 --- a/code/game/gamemodes/malfunction/malf_hardware.dm +++ b/code/game/gamemodes/malfunction/malf_hardware.dm @@ -64,4 +64,4 @@ T.maxhealth = round(initial(T.maxhealth) * 1.4) T.shot_delay = round(initial(T.shot_delay) / 2) T.auto_repair = 1 - T.active_power_usage = round(initial(T.active_power_usage) * 5) \ No newline at end of file + T.update_active_power_usage(round(initial(T.active_power_usage) * 5)) \ No newline at end of file diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index de4bf442af..0b0b8d014c 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -55,7 +55,7 @@ var/obj/effect/meteor/M = new Me(pickedstart) M.dest = pickedgoal spawn(0) - walk_towards(M, M.dest, 1) + walk_towards(M, M.dest, 3) //VOREStation Edit - Slower Meteors return /proc/spaceDebrisStartLoc(startSide, Z) @@ -138,14 +138,13 @@ . = ..() //process movement... - if(.)//.. if did move, ram the turf we get in - var/turf/T = get_turf(loc) - ram_turf(T) +/obj/effect/meteor/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + var/turf/T = get_turf(loc) + ram_turf(T) - if(prob(10) && !istype(T, /turf/space))//randomly takes a 'hit' from ramming - get_hit() - - return . + if(prob(10) && !istype(T, /turf/space)) //randomly takes a 'hit' from ramming + get_hit() /obj/effect/meteor/Destroy() walk(src,0) //this cancels the walk_towards() proc diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index b2bd6b80e4..5447431279 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -51,10 +51,10 @@ icon_state = "pinonfar" /obj/item/weapon/pinpointer/examine(mob/user) - ..(user) + . = ..() for(var/obj/machinery/nuclearbomb/bomb in machines) if(bomb.timing) - to_chat(user, "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]") + . += "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]" diff --git a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm index 3e3e055ad9..82138988b5 100644 --- a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm +++ b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm @@ -23,8 +23,8 @@ uses = 1 /obj/item/weapon/disposable_teleporter/examine(mob/user) - ..() - to_chat(user, "[uses] uses remaining.") + . = ..() + . += "[uses] uses remaining." /obj/item/weapon/disposable_teleporter/attack_self(mob/user as mob) if(!uses) diff --git a/code/game/gamemodes/technomancer/spells/energy_siphon.dm b/code/game/gamemodes/technomancer/spells/energy_siphon.dm index 1bfcb4e2d2..21f7c6e1e7 100644 --- a/code/game/gamemodes/technomancer/spells/energy_siphon.dm +++ b/code/game/gamemodes/technomancer/spells/energy_siphon.dm @@ -83,7 +83,7 @@ #define SIPHON_CORE_TO_ENERGY 0.5 // This is called every tick, so long as a link exists between the target and the Technomancer. -/obj/item/weapon/spell/energy_siphon/proc/siphon(atom/movable/siphoning, mob/user) +/obj/item/weapon/spell/energy_siphon/proc/siphon(atom/movable/siphoning, mob/living/user) var/list/things_to_drain = things_to_siphon // Temporary list copy of what we're gonna steal from. var/charge_to_give = 0 // How much energy to give to the Technomancer at the end. var/flow_remaining = calculate_spell_power(flow_rate) @@ -141,7 +141,7 @@ if( (core.max_energy - core.energy) < charge_to_give ) // We have some overflow, if this is true. if(user.isSynthetic()) // Let's do something with it, if we're a robot. charge_to_give = charge_to_give - (core.max_energy - core.energy) - user.nutrition = min(user.nutrition + (charge_to_give / SIPHON_FBP_TO_ENERGY), 400) + user.adjust_nutrition(charge_to_give / SIPHON_FBP_TO_ENERGY) to_chat(user, "Redirected energy to internal microcell.") else to_chat(user, "Stolen [charge_to_give * CELLRATE] kJ.") diff --git a/code/game/gamemodes/technomancer/spells/mark_recall.dm b/code/game/gamemodes/technomancer/spells/mark_recall.dm index 0d35bce53a..1d7088af4a 100644 --- a/code/game/gamemodes/technomancer/spells/mark_recall.dm +++ b/code/game/gamemodes/technomancer/spells/mark_recall.dm @@ -7,7 +7,7 @@ obj_path = /obj/item/weapon/spell/mark ability_icon_state = "tech_mark" category = UTILITY_SPELLS - +//VOREStation Add - Multiple technomancer support /datum/technomancer_marker var/weakref/U var/image/I @@ -32,7 +32,7 @@ //This is global, to avoid looping through a list of all objects, or god forbid, looping through world. GLOBAL_LIST_INIT(mark_spells, list()) - +//VOREStation Add End /obj/item/weapon/spell/mark name = "mark" icon_state = "mark" @@ -45,6 +45,7 @@ GLOBAL_LIST_INIT(mark_spells, list()) to_chat(user, "You can't teleport here!") return 0 if(pay_energy(1000)) + //VOREStation Add - Multiple technomancer support var/datum/technomancer_marker/marker = GLOB.mark_spells[weakref(user)] //They have one in the list if(istype(marker)) @@ -54,6 +55,7 @@ GLOBAL_LIST_INIT(mark_spells, list()) else to_chat(user, "You mark \the [get_turf(user)] under you.") GLOB.mark_spells[weakref(user)] = new /datum/technomancer_marker(user) + //VOREStation Add End adjust_instability(5) return 1 else @@ -81,7 +83,7 @@ GLOBAL_LIST_INIT(mark_spells, list()) /obj/item/weapon/spell/recall/on_use_cast(var/mob/living/user) if(pay_energy(3000)) - var/datum/technomancer_marker/marker = GLOB.mark_spells[weakref(user)] + var/datum/technomancer_marker/marker = GLOB.mark_spells[weakref(user)] //VOREStation Add - Multiple technomancer support if(!istype(marker)) to_chat(user, "There's no Mark!") return 0 @@ -104,7 +106,7 @@ GLOBAL_LIST_INIT(mark_spells, list()) time_left-- sleep(1 SECOND) - var/turf/target_turf = marker.T + var/turf/target_turf = marker.T //VOREStation Edit - Multiple technomancer support var/turf/old_turf = get_turf(user) for(var/obj/item/weapon/grab/G in user.contents) // People the Technomancer is grabbing come along for the ride. diff --git a/code/game/jobs/job/captain_vr.dm b/code/game/jobs/job/captain_vr.dm index ea9f8ebed9..f08a1b4079 100644 --- a/code/game/jobs/job/captain_vr.dm +++ b/code/game/jobs/job/captain_vr.dm @@ -5,6 +5,8 @@ /datum/job/hop disallow_jobhop = TRUE pto_type = PTO_CIVILIAN + departments = list(DEPARTMENT_COMMAND, DEPARTMENT_CIVILIAN) + departments_managed = list(DEPARTMENT_CIVILIAN, DEPARTMENT_CARGO, DEPARTMENT_PLANET) alt_titles = list("Crew Resources Officer" = /datum/alt_title/cro, "Deputy Director" = /datum/alt_title/deputy_director) diff --git a/maps/southern_cross/southern_cross_jobs_vr.dm b/code/game/jobs/job/exploration_vr.dm similarity index 82% rename from maps/southern_cross/southern_cross_jobs_vr.dm rename to code/game/jobs/job/exploration_vr.dm index ca11728189..987041de61 100644 --- a/maps/southern_cross/southern_cross_jobs_vr.dm +++ b/code/game/jobs/job/exploration_vr.dm @@ -39,16 +39,16 @@ var/const/SAR =(1<<14) faction = "Station" total_positions = 1 spawn_positions = 1 - supervisors = "the research director" + supervisors = "the Head of Personnel" selection_color = "#d6d05c" - economic_modifier = 7 + economic_modifier = 8 minimal_player_age = 7 pto_type = PTO_EXPLORATION - access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_research, access_gateway) - minimal_access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_research, access_gateway) + access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_gateway) + minimal_access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_gateway) outfit_type = /decl/hierarchy/outfit/job/pathfinder - job_description = " The Pathfinder's job is to lead and manage expeditions, and is the primary authority on all off-station expeditions." + job_description = "The Pathfinder's job is to lead and manage expeditions, and is the primary authority on all off-station expeditions." /datum/alt_title/pathfinder title = "Pathfinder" @@ -59,9 +59,9 @@ var/const/SAR =(1<<14) departments = list(DEPARTMENT_PLANET) department_flag = MEDSCI faction = "Station" - total_positions = 2 - spawn_positions = 2 - supervisors = "the pathfinder and the head of personnel" + total_positions = 4 + spawn_positions = 4 + supervisors = "the Pathfinder and the Head of Personnel" selection_color = "#999440" economic_modifier = 5 minimal_player_age = 3 @@ -82,12 +82,12 @@ var/const/SAR =(1<<14) faction = "Station" total_positions = 3 spawn_positions = 3 - supervisors = "the pathfinder and the research director" + supervisors = "the Pathfinder and the Head of Personnel" selection_color = "#999440" economic_modifier = 6 pto_type = PTO_EXPLORATION - access = list(access_explorer, access_research) - minimal_access = list(access_explorer, access_research) + access = list(access_explorer, access_external_airlocks, access_eva) + minimal_access = list(access_explorer, access_external_airlocks, access_eva) outfit_type = /decl/hierarchy/outfit/job/explorer2 job_description = "An Explorer searches for interesting things, and returns them to the station." @@ -97,12 +97,12 @@ var/const/SAR =(1<<14) /datum/job/sar title = "Field Medic" flag = SAR - departments = list(DEPARTMENT_PLANET) + departments = list(DEPARTMENT_PLANET, DEPARTMENT_MEDICAL) department_flag = MEDSCI faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "the pathfinder and the chief medical officer" + supervisors = "the Pathfinder and the Chief Medical Officer" selection_color = "#999440" economic_modifier = 6 minimal_player_age = 3 diff --git a/code/game/jobs/job/science_vr.dm b/code/game/jobs/job/science_vr.dm index c9092753e7..d1bd15c364 100644 --- a/code/game/jobs/job/science_vr.dm +++ b/code/game/jobs/job/science_vr.dm @@ -5,11 +5,11 @@ access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_tox_storage, access_teleporter, access_sec_doors, access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage, - access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_eva, access_network, access_maint_tunnels) //Yawn added "access_maint_tunnels" + access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_eva, access_network) //YW Edit access_gateway minimal_access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_tox_storage, access_teleporter, access_sec_doors, access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage, - access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_eva, access_network, access_maint_tunnels) + access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_eva, access_network) //YW Edit access_gateway /datum/job/scientist spawn_positions = 5 diff --git a/code/game/jobs/job/security_vr.dm b/code/game/jobs/job/security_vr.dm index e969dcff56..9e55d807b0 100644 --- a/code/game/jobs/job/security_vr.dm +++ b/code/game/jobs/job/security_vr.dm @@ -5,11 +5,11 @@ access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers, access_research, access_engine, access_mining, access_construction, access_mailsorting, - access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_external_airlocks) + access_heads, access_hos, access_RC_announce, access_keycard_auth, access_external_airlocks) minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers, access_research, access_engine, access_mining, access_construction, access_mailsorting, - access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_external_airlocks) + access_heads, access_hos, access_RC_announce, access_keycard_auth, access_external_airlocks) /datum/job/warden pto_type = PTO_SECURITY diff --git a/code/game/machinery/CableLayer.dm b/code/game/machinery/CableLayer.dm index aa6316033c..d954a80b29 100644 --- a/code/game/machinery/CableLayer.dm +++ b/code/game/machinery/CableLayer.dm @@ -13,9 +13,9 @@ cable.amount = 100 ..() -/obj/machinery/cablelayer/Move(new_turf,M_Dir) - ..() - layCable(new_turf,M_Dir) +/obj/machinery/cablelayer/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + layCable(loc,direction) /obj/machinery/cablelayer/attack_hand(mob/user as mob) if(!cable&&!on) @@ -49,8 +49,8 @@ to_chat(usr, "There's no more cable on the reel.") /obj/machinery/cablelayer/examine(mob/user) - ..() - to_chat(user, "\The [src]'s cable reel has [cable.amount] length\s left.") + . = ..() + . += "[src]'s cable reel has [cable.amount] length\s left." /obj/machinery/cablelayer/proc/load_cable(var/obj/item/stack/cable_coil/CC) if(istype(CC) && CC.amount) diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 5de1543426..a410ad79b3 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -67,7 +67,13 @@ var/mob/living/carbon/human/M = locate(/mob/living/carbon/human, src.loc) if(M.lying) victim = M - icon_state = M.pulse ? "table2-active" : "table2-idle" + if(M.pulse) + if(M.stat) + icon_state = "table2-sleep" + else + icon_state = "table2-active" + else + icon_state = "table2-dead" return 1 victim = null icon_state = "table2-idle" diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index e1c368a1c9..70fd190afe 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -207,8 +207,6 @@ available_chemicals.Cut() available_chemicals = base_chemicals.Copy() - idle_power_usage = initial(idle_power_usage) - active_power_usage = initial(active_power_usage) for(var/obj/item/weapon/stock_parts/P in component_parts) if(istype(P, /obj/item/weapon/stock_parts/capacitor)) @@ -216,8 +214,8 @@ cap_rating = max(1, round(cap_rating / 2)) - idle_power_usage /= cap_rating - active_power_usage /= cap_rating + update_idle_power_usage(initial(idle_power_usage) / cap_rating) + update_active_power_usage(initial(active_power_usage) / cap_rating) if(!limited) for(var/obj/item/weapon/stock_parts/P in component_parts) diff --git a/code/game/machinery/airconditioner_vr.dm b/code/game/machinery/airconditioner_vr.dm index 90916c82ca..892c6b4929 100644 --- a/code/game/machinery/airconditioner_vr.dm +++ b/code/game/machinery/airconditioner_vr.dm @@ -25,8 +25,9 @@ default_apply_parts() /obj/machinery/power/thermoregulator/examine(mob/user) - if(..(user,2)) - to_chat(user, "There is a small display that reads \"[convert_k2c(target_temp)]C\".") + . = ..() + if(get_dist(user, src) <= 2) + . += "There is a small display that reads \"[convert_k2c(target_temp)]C\"." /obj/machinery/power/thermoregulator/attackby(obj/item/I, mob/user) if(I.is_screwdriver()) diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index 3e2cf0deb4..2d5d0a8747 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -77,24 +77,22 @@ radio_connection.post_signal(src, signal) /obj/machinery/meter/examine(mob/user) - var/t = "A gas flow meter. " + . = ..() if(get_dist(user, src) > 3 && !(istype(user, /mob/living/silicon/ai) || istype(user, /mob/observer/dead))) - t += "You are too far away to read it." + . += "You are too far away to read it." else if(stat & (NOPOWER|BROKEN)) - t += "The display is off." + . += "The display is off." - else if(src.target) + else if(target) var/datum/gas_mixture/environment = target.return_air() if(environment) - t += "The pressure gauge reads [round(environment.return_pressure(), 0.01)] kPa; [round(environment.temperature,0.01)]K ([round(environment.temperature-T0C,0.01)]°C)" + . += "The pressure gauge reads [round(environment.return_pressure(), 0.01)] kPa; [round(environment.temperature,0.01)]K ([round(environment.temperature-T0C,0.01)]°C)" else - t += "The sensor error light is blinking." + . += "The sensor error light is blinking." else - t += "The connect error light is blinking." - - to_chat(user,t) + . += "The connect error light is blinking." /obj/machinery/meter/Click() diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 653d3bb374..facb9e4402 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -27,6 +27,8 @@ var/datum/wires/autolathe/wires = null + var/filtertext + /obj/machinery/autolathe/New() ..() wires = new(src) @@ -72,11 +74,14 @@ material_bottom += "[stored_material[material]]/[storage_capacity[material]]" dat += "[material_top.Join()][material_bottom.Join()]
" + dat += "Filter: [filtertext ? filtertext : "None Set"]
" dat += "

Printable Designs

Showing: [current_category].

" for(var/datum/category_item/autolathe/R in current_category.items) if(R.hidden && !hacked) continue + if(filtertext && findtext(R.name, filtertext) == 0) + continue var/can_make = 1 var/list/material_string = list() var/list/multiplier_string = list() @@ -108,12 +113,14 @@ multiplier_string += "\[x[i]\]" multiplier_string += "\[x[max_sheets]\]" - dat += "" + dat += "" dat += "
[R.hidden ? "*" : ""][can_make ? "" : ""][R.name][can_make ? "" : ""][R.hidden ? "*" : ""][multiplier_string.Join()][material_string.Join()]
[R.hidden ? "*" : ""][can_make ? "" : ""][R.name][can_make ? "" : ""][R.hidden ? "*" : ""][multiplier_string.Join()][material_string.Join()]

" - user << browse(dat.Join(), "window=autolathe") - onclose(user, "autolathe") + dat = jointext(dat, null) + var/datum/browser/popup = new(user, "autolathe", "Autolathe Production Menu", 550, 700) + popup.set_content(dat) + popup.open() /obj/machinery/autolathe/attackby(var/obj/item/O as obj, var/mob/user as mob) if(busy) @@ -229,6 +236,16 @@ to_chat(usr, "The autolathe is busy. Please wait for completion of previous operation.") return + else if(href_list["setfilter"]) + var/filterstring = input(usr, "Input a filter string, or blank to not filter:", "Design Filter", filtertext) as null|text + if(!Adjacent(usr)) + return + if(isnull(filterstring)) //Clicked Cancel + return + if(filterstring == "") //Cleared value + filtertext = null + filtertext = sanitize(filterstring, 25) + if(href_list["change_category"]) var/choice = input("Which category do you wish to display?") as null|anything in machine_recipes.categories diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index de52a9cc06..6f62b2e056 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -1,7 +1,7 @@ /obj/machinery/biogenerator name = "biogenerator" desc = "Converts plants into biomass, which can be used for fertilizer and sort-of-synthetic products." - icon = 'icons/obj/biogenerator.dmi' + icon = 'icons/obj/biogenerator_vr.dmi' //VOREStation Edit icon_state = "biogen-stand" density = 1 anchored = 1 diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index f7e4749fe3..d40a89c202 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -4,7 +4,7 @@ /obj/machinery/organ_printer name = "organ printer" desc = "It's a machine that prints organs." - icon = 'icons/obj/surgery.dmi' + icon = 'icons/obj/surgery_vr.dmi' //VOREStation Edit icon_state = "bioprinter" anchored = 1 @@ -69,11 +69,13 @@ return ..() /obj/machinery/organ_printer/update_icon() - overlays.Cut() + //VOREStation Edit + cut_overlays() if(panel_open) - overlays += "bioprinter_panel_open" + add_overlay("bioprinter_panel_open") if(printing) - overlays += "bioprinter_working" + add_overlay("bioprinter_working") + //VOREStation Edit End /obj/machinery/organ_printer/New() ..() @@ -87,9 +89,9 @@ . = ..() var/biomass = get_biomass_volume() if(biomass) - to_chat(user, "It is loaded with [biomass] units of biomass.") + . += "It is loaded with [biomass] units of biomass." else - to_chat(user, "It is not loaded with any biomass.") + . += "It is not loaded with any biomass." /obj/machinery/organ_printer/RefreshParts() // Print Delay updating @@ -161,7 +163,7 @@ container.reagents.remove_reagent("biomass", possible_list[choice][2]) - use_power = USE_POWER_ACTIVE + update_use_power(USE_POWER_ACTIVE) printing = 1 update_icon() @@ -169,7 +171,7 @@ sleep(print_delay) - use_power = USE_POWER_IDLE + update_use_power(USE_POWER_IDLE) printing = 0 update_icon() diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index fdd540ce4a..2e5481beb5 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -226,4 +226,4 @@ var/global/list/engineering_networks = list( mult++ if (isMotion()) mult++ - active_power_usage = mult*initial(active_power_usage) + update_active_power_usage(mult * initial(active_power_usage)) diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 636bcca6c0..917fed33eb 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -39,12 +39,11 @@ overlays.Cut() /obj/machinery/cell_charger/examine(mob/user) - if(!..(user, 5)) - return - - to_chat(user, "[charging ? "[charging]" : "Nothing"] is in [src].") - if(charging) - to_chat(user, "Current charge: [charging.charge] / [charging.maxcharge]") + . = ..() + if(get_dist(user, src) <= 5) + . += "[charging ? "[charging]" : "Nothing"] is in [src]." + if(charging) + . += "Current charge: [charging.charge] / [charging.maxcharge]" /obj/machinery/cell_charger/attackby(obj/item/weapon/W, mob/user) if(stat & BROKEN) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index f7c5f5bd43..ebd740e5e5 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -534,9 +534,8 @@ to_chat(user, "You flip the write-protect tab to [read_only ? "protected" : "unprotected"].") /obj/item/weapon/disk/data/examine(mob/user) - ..(user) - to_chat(user, text("The write-protect tab is set to [read_only ? "protected" : "unprotected"].")) - return + . = ..() + . += "The write-protect tab is set to [read_only ? "protected" : "unprotected"]." /* * Diskette Box diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index c222ba4e64..86f3fe93da 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -5,34 +5,34 @@ icon_keyboard = null icon_screen = "invaders" clicksound = null //Gets too spammy and makes no sense for arcade to have the console keyboard noise anyway - var/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/item/toy/prize/ripley = 1, - /obj/item/toy/prize/fireripley = 1, - /obj/item/toy/prize/deathripley = 1, - /obj/item/toy/prize/gygax = 1, - /obj/item/toy/prize/durand = 1, - /obj/item/toy/prize/honk = 1, - /obj/item/toy/prize/marauder = 1, - /obj/item/toy/prize/seraph = 1, - /obj/item/toy/prize/mauler = 1, - /obj/item/toy/prize/odysseus = 1, - /obj/item/toy/prize/phazon = 1, - /obj/item/toy/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 + var/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/item/toy/prize/ripley = 1, + /obj/item/toy/prize/fireripley = 1, + /obj/item/toy/prize/deathripley = 1, + /obj/item/toy/prize/gygax = 1, + /obj/item/toy/prize/durand = 1, + /obj/item/toy/prize/honk = 1, + /obj/item/toy/prize/marauder = 1, + /obj/item/toy/prize/seraph = 1, + /obj/item/toy/prize/mauler = 1, + /obj/item/toy/prize/odysseus = 1, + /obj/item/toy/prize/phazon = 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/machinery/computer/arcade/New() @@ -384,7 +384,7 @@ spaceport_freebie = 0 last_spaceport_action = "" -/obj/machinery/computer/arcade/orion_trail/attack_hand(mob/user) +/obj/machinery/computer/arcade/orion_trail/attack_hand(mob/living/user) if(..()) return if(fuel <= 0 || food <=0 || settlers.len == 0) @@ -1020,13 +1020,12 @@ var/active = 0 //if the ship is on /obj/item/weapon/orion_ship/examine(mob/user) - ..() - if(!(in_range(user, src))) - return - if(!active) - to_chat(user, span("notice", "There's a little switch on the bottom. It's flipped down.")) - else - to_chat(user, span("notice", "There's a little switch on the bottom. It's flipped up.")) + . = ..() + if(in_range(user, src)) + if(!active) + . += span("notice", "There's a little switch on the bottom. It's flipped down.") + else + . += span("notice", "There's a little switch on the bottom. It's flipped up.") /obj/item/weapon/orion_ship/attack_self(mob/user) if(active) diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 9adf2a0a43..fe0a9c8a62 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -119,6 +119,12 @@ check_eye(user) return 1 +/obj/machinery/computer/security/relaymove(mob/user,direct) + var/turf/T = get_turf(current_camera) + for(var/i; i < 10; i++) + T = get_step(T, direct) + jump_on_click(user, T) + //Camera control: moving. /obj/machinery/computer/security/proc/jump_on_click(var/mob/user,var/A) if(user.machine != src) @@ -182,25 +188,18 @@ if(istype(L)) L.tracking_cancelled() current_camera = null - use_power = USE_POWER_IDLE + update_use_power(USE_POWER_IDLE) //Camera control: mouse. +/* Oh my god /atom/DblClick() ..() if(istype(usr.machine,/obj/machinery/computer/security)) var/obj/machinery/computer/security/console = usr.machine console.jump_on_click(usr,src) -//Camera control: arrow keys. -/mob/Move(n,direct) - if(istype(machine,/obj/machinery/computer/security)) - var/obj/machinery/computer/security/console = machine - var/turf/T = get_turf(console.current_camera) - for(var/i;i<10;i++) - T = get_step(T,direct) - console.jump_on_click(src,T) - return - return ..(n,direct) +*/ +//Camera control: arrow keys. /obj/machinery/computer/security/telescreen name = "Telescreen" desc = "Used for watching an empty arena." diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm index b4a3c8c3c1..e5a57cfe49 100644 --- a/code/game/machinery/computer/guestpass.dm +++ b/code/game/machinery/computer/guestpass.dm @@ -19,11 +19,11 @@ return temp_access /obj/item/weapon/card/id/guest/examine(mob/user) - ..(user) + . = ..() if (world.time < expiration_time) - to_chat(user, "This pass expires at [worldtime2stationtime(expiration_time)].") + . += "This pass expires at [worldtime2stationtime(expiration_time)]." else - to_chat(user, "It expired at [worldtime2stationtime(expiration_time)].") + . += "It expired at [worldtime2stationtime(expiration_time)]." /obj/item/weapon/card/id/guest/read() if(!Adjacent(usr)) diff --git a/code/game/machinery/computer/shutoff_monitor.dm b/code/game/machinery/computer/shutoff_monitor.dm index aed7bd25b9..e2413c5e21 100644 --- a/code/game/machinery/computer/shutoff_monitor.dm +++ b/code/game/machinery/computer/shutoff_monitor.dm @@ -5,66 +5,27 @@ icon_screen = "power:0" light_color = "#a97faa" circuit = /obj/item/weapon/circuitboard/shutoff_monitor + var/datum/nano_module/shutoff_monitor/monitor -/obj/machinery/computer/shutoff_monitor/attack_hand(var/mob/user) +/obj/machinery/computer/shutoff_monitor/New() + ..() + monitor = new(src) + +/obj/machinery/computer/shutoff_monitor/Destroy() + qdel(monitor) + monitor = null + ..() + +/obj/machinery/computer/shutoff_monitor/attack_hand(var/mob/user as mob) ..() ui_interact(user) -/obj/machinery/computer/shutoff_monitor/attack_robot(var/mob/user) // Borgs and AI will want to see this too - ..() - ui_interact(user) - -/obj/machinery/computer/shutoff_monitor/attack_ai(var/mob/user) - ui_interact(user) - -/obj/machinery/computer/shutoff_monitor/ui_interact(mob/user, ui_key = "shutoff_monitor", var/datum/nanoui/ui = null, var/force_open = 1, var/key_state = null) - var/data[0] - data["valves"] = list() - for(var/obj/machinery/atmospherics/valve/shutoff/S in GLOB.shutoff_valves) - data["valves"][++data["valves"].len] = list("name" = S.name, "enable" = S.close_on_leaks, "open" = S.open, "x" = S.x, "y" = S.y, "z" = S.z, "ref" = "\ref[S]") - - // update the ui if it exists, returns null if no ui is passed/found - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) - if(!ui) - // the ui does not exist, so we'll create a new() one - // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm - ui = new(user, src, ui_key, "shutoff_monitor.tmpl", "Automated Shutoff Valve Monitor", 625, 700, state = key_state) - // when the ui is first opened this is the data it will use - ui.set_initial_data(data) - // open the new ui window - ui.open() - // auto update every 20 Master Controller tick - ui.set_auto_update(20) // Longer term to reduce the rate of data collection and processing - -/obj/machinery/computer/shutoff_monitor/Topic(href, href_list) - if(..()) - return 1 - - if(href_list["toggle_enable"]) - var/obj/machinery/atmospherics/valve/shutoff/S = locate(href_list["toggle_enable"]) - - // Invalid ref - if(!istype(S)) - return 0 - - S.close_on_leaks = !S.close_on_leaks - - if(href_list["toggle_open"]) - var/obj/machinery/atmospherics/valve/shutoff/S = locate(href_list["toggle_open"]) - - // Invalid ref - if(!istype(S)) - return 0 - - if(S.open) - S.close() - else - S.open() - - return - +/obj/machinery/computer/shutoff_monitor/ui_interact(mob/user, ui_key = "shutoff_monitor", var/datum/nanoui/ui = null, var/force_open = 1) + monitor.ui_interact(user, ui_key, ui, force_open) /obj/machinery/computer/shutoff_monitor/update_icon() ..() if(!(stat & (NOPOWER|BROKEN))) add_overlay("ai-fixer-empty") + else + cut_overlay("ai-fixer-empty") \ No newline at end of file diff --git a/code/game/machinery/computer/timeclock_vr.dm b/code/game/machinery/computer/timeclock_vr.dm index ad118c74d7..42e78683ec 100644 --- a/code/game/machinery/computer/timeclock_vr.dm +++ b/code/game/machinery/computer/timeclock_vr.dm @@ -209,8 +209,9 @@ /obj/machinery/computer/timeclock/proc/checkCardCooldown() if(!card) return FALSE - if((world.time - card.last_job_switch) < 15 MINUTES) - to_chat(usr, "You need to wait at least 15 minutes after last duty switch.") + var/time_left = 10 MINUTES - (world.time - card.last_job_switch) + if(time_left > 0) + to_chat(usr, "You need to wait another [round((time_left/10)/60, 1)] minute\s before you can switch.") return FALSE return TRUE @@ -270,4 +271,4 @@ /obj/machinery/computer/timeclock/premade/west dir = 4 - pixel_x = -26 \ No newline at end of file + pixel_x = -26 diff --git a/code/game/machinery/deployable_vr.dm b/code/game/machinery/deployable_vr.dm new file mode 100644 index 0000000000..9f7e79af5b --- /dev/null +++ b/code/game/machinery/deployable_vr.dm @@ -0,0 +1,176 @@ +/obj/structure/barricade/cutout + name = "stand-up figure" + desc = "Some sort of wooden stand-up figure..." + icon = 'icons/obj/cardboard_cutout.dmi' + icon_state = "cutout_basic" + + maxhealth = 15 //Weaker than normal barricade + anchored = 0 + + var/fake_name = "unknown" + var/fake_desc = "You have to be closer to examine this creature." + var/construct_name = "basic cutout" + + var/toppled = FALSE + var/human_name = TRUE + + var/static/list/cutout_types + var/static/list/painters = list(/obj/item/weapon/reagent_containers/glass/paint, /obj/item/device/floor_painter, /obj/item/device/closet_painter) + +/obj/structure/barricade/cutout/New() + . = ..() + color = null + if(human_name) + fake_name = random_name(pick(list(MALE, FEMALE))) + name = fake_name + desc = fake_desc + if(!cutout_types) + cutout_types = list() + var/list/types = typesof(/obj/structure/barricade/cutout) + for(var/cutout_type in types) + var/obj/structure/barricade/cutout/pathed_type = cutout_type + cutout_types[initial(pathed_type.construct_name)] = cutout_type + +/obj/structure/barricade/cutout/proc/topple() + if(toppled) + return + toppled = TRUE + icon_state = "cutout_pushed_over" + density = 0 + name = initial(name) + desc = initial(desc) + visible_message("[src] topples over!") + +/obj/structure/barricade/cutout/proc/untopple() + if(!toppled) + return + toppled = FALSE + icon_state = initial(icon_state) + density = 1 + name = fake_name + desc = fake_desc + visible_message("[src] is uprighted to their proper position.") + +/obj/structure/barricade/cutout/CheckHealth() + if(!toppled && (health < (maxhealth/2))) + topple() + ..() + +/obj/structure/barricade/cutout/attack_hand(var/mob/user) + if((. = ..())) + return + + if(toppled) + untopple() + +/obj/structure/barricade/cutout/examine(var/mob/user) + . = ..() + + if(Adjacent(user)) + . += "... from this distance, they seem to be made of [material.name] ..." + +/obj/structure/barricade/cutout/attackby(var/obj/I, var/mob/user) + if(is_type_in_list(I, painters)) + var/choice = input(user, "What would you like to paint the cutout as?", "Cutout Painting") as null|anything in cutout_types + if(!choice || !Adjacent(user, src) || I != user.get_active_hand()) + return TRUE + if(do_after(user, 10 SECONDS, src)) + var/picked_type = cutout_types[choice] + new picked_type(loc) + qdel(src) //Laaaazy. Technically heals it too. Must be held together with all that paint. + return TRUE + + else + return ..() + +//Variants +/obj/structure/barricade/cutout/greytide + icon_state = "cutout_greytide" + construct_name = "greytide" +/obj/structure/barricade/cutout/clown + icon_state = "cutout_clown" + construct_name = "clown" +/obj/structure/barricade/cutout/mime + icon_state = "cutout_mime" + construct_name = "mime" +/obj/structure/barricade/cutout/traitor + icon_state = "cutout_traitor" + construct_name = "criminal employee" +/obj/structure/barricade/cutout/fluke + icon_state = "cutout_fluke" + construct_name = "nuclear operative" +/obj/structure/barricade/cutout/cultist + icon_state = "cutout_cultist" + construct_name = "presumed cultist" +/obj/structure/barricade/cutout/servant + icon_state = "cutout_servant" + construct_name = "druid" +/obj/structure/barricade/cutout/new_servant + icon_state = "cutout_new_servant" + construct_name = "other druid" +/obj/structure/barricade/cutout/viva + icon_state = "cutout_viva" + human_name = FALSE + fake_name = "Unknown" + construct_name = "advanced greytide" +/obj/structure/barricade/cutout/wizard + icon_state = "cutout_wizard" + construct_name = "wizard" +/obj/structure/barricade/cutout/shadowling + icon_state = "cutout_shadowling" + human_name = FALSE + fake_name = "Unknown" + construct_name = "dark creature" +/obj/structure/barricade/cutout/fukken_xeno + icon_state = "cutout_fukken_xeno" + human_name = FALSE + fake_name = "xenomorph" + construct_name = "alien" +/obj/structure/barricade/cutout/swarmer + icon_state = "cutout_swarmer" + human_name = FALSE + fake_name = "swarmer" + construct_name = "robot" +/obj/structure/barricade/cutout/free_antag + icon_state = "cutout_free_antag" + construct_name = "hot lizard" +/obj/structure/barricade/cutout/deathsquad + icon_state = "cutout_deathsquad" + construct_name = "unknown" +/obj/structure/barricade/cutout/ian + icon_state = "cutout_ian" + human_name = FALSE + fake_name = "corgi" + construct_name = "dog" +/obj/structure/barricade/cutout/ntsec + icon_state = "cutout_ntsec" + construct_name = "nt security" +/obj/structure/barricade/cutout/lusty + icon_state = "cutout_lusty" + human_name = FALSE + fake_name = "xenomorph" + construct_name = "hot alien" +/obj/structure/barricade/cutout/gondola + icon_state = "cutout_gondola" + construct_name = "creature" +/obj/structure/barricade/cutout/monky + icon_state = "cutout_monky" + human_name = FALSE + fake_name = "monkey" + construct_name = "monkey" +/obj/structure/barricade/cutout/law + icon_state = "cutout_law" + human_name = FALSE + fake_name = "Beepsky" + construct_name = "lawful robot" + +/obj/random/cutout //Random wooden standup figure + name = "random wooden figure" + desc = "This is a random wooden figure." + icon = 'icons/obj/cardboard_cutout.dmi' + icon_state = "cutout_random" + spawn_nothing_percentage = 80 //Only spawns 20% of the time to avoid being predictable + +/obj/random/cutout/item_to_spawn() + var/list/cutout_types = subtypesof(/obj/structure/barricade/cutout) + return pick(cutout_types) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index bd1d663720..2a14c17bdb 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -390,7 +390,8 @@ else if(electrified_until > 0 && world.time >= electrified_until) electrify(0) - ..() + if (..() == PROCESS_KILL && !(main_power_lost_until > 0 || backup_power_lost_until > 0 || electrified_until > 0)) + . = PROCESS_KILL /obj/machinery/door/airlock/uranium/process() if(world.time > last_event+20) @@ -580,6 +581,9 @@ About the new airlock wires panel: if(backup_power_lost_until == -1 && !backupPowerCablesCut()) backup_power_lost_until = world.time + SecondsToTicks(10) + if(main_power_lost_until > 0 || backup_power_lost_until > 0) + START_MACHINE_PROCESSING(src) + // Disable electricity if required if(electrified_until && isAllPowerLoss()) electrify(0) @@ -589,6 +593,9 @@ About the new airlock wires panel: /obj/machinery/door/airlock/proc/loseBackupPower() backup_power_lost_until = backupPowerCablesCut() ? -1 : world.time + SecondsToTicks(60) + if(backup_power_lost_until > 0) + START_MACHINE_PROCESSING(src) + // Disable electricity if required if(electrified_until && isAllPowerLoss()) electrify(0) @@ -631,6 +638,9 @@ About the new airlock wires panel: message = "The door is now electrified [duration == -1 ? "permanently" : "for [duration] second\s"]." src.electrified_until = duration == -1 ? -1 : world.time + SecondsToTicks(duration) + if(electrified_until > 0) + START_MACHINE_PROCESSING(src) + if(feedback && message) to_chat(usr,message) @@ -1142,7 +1152,7 @@ About the new airlock wires panel: if(!has_beeped) playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 0) has_beeped = 1 - close_door_at = world.time + 6 + autoclose_in(6) return for(var/turf/turf in locs) @@ -1160,8 +1170,7 @@ About the new airlock wires panel: var/obj/structure/window/killthis = (locate(/obj/structure/window) in turf) if(killthis) killthis.ex_act(2)//Smashin windows - ..() - return + return ..() /obj/machinery/door/airlock/proc/lock(var/forced=0) if(locked) diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm index ca7092708d..521f07cf67 100644 --- a/code/game/machinery/doors/airlock_control.dm +++ b/code/game/machinery/doors/airlock_control.dm @@ -9,7 +9,8 @@ obj/machinery/door/airlock var/cur_command = null //the command the door is currently attempting to complete obj/machinery/door/airlock/process() - ..() + if (..() == PROCESS_KILL && !cur_command) + . = PROCESS_KILL if (arePowerSystemsOn()) execute_current_command() @@ -22,6 +23,9 @@ obj/machinery/door/airlock/receive_signal(datum/signal/signal) cur_command = signal.data["command"] execute_current_command() + if(cur_command) + START_MACHINE_PROCESSING(src) + obj/machinery/door/airlock/proc/execute_current_command() if(operating) diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index 39ca2d5f40..41e3297c2b 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /obj/item/weapon/airlock_electronics name = "airlock electronics" icon = 'icons/obj/doors/door_assembly.dmi' @@ -8,106 +6,148 @@ matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 50) - req_access = list(access_engine) + req_one_access = list(access_engine, access_talon) // Access to unlock the device, ignored if emagged //VOREStation Edit - Add talon + var/list/apply_any_access = list(access_engine) // Can apply any access, not just their own var/secure = 0 //if set, then wires will be randomized and bolts will drop if the door is broken var/list/conf_access = null var/one_access = 0 //if set to 1, door would receive req_one_access instead of req_access var/last_configurator = null var/locked = 1 + var/emagged = 0 - attack_self(mob/user as mob) - if (!ishuman(user) && !istype(user,/mob/living/silicon/robot)) - return ..(user) +/obj/item/weapon/airlock_electronics/emag_act(var/remaining_charges, var/mob/user) + if(!emagged) + emagged = 1 + to_chat(user, "You remove the access restrictions on [src]!") + return 1 - var/t1 = text("Access control
\n") +/obj/item/weapon/airlock_electronics/attack_self(mob/user as mob) + if (!ishuman(user) && !istype(user,/mob/living/silicon/robot)) + return ..(user) - if (last_configurator) - t1 += "Operator: [last_configurator]
" + var/t1 = text("Access control
\n") - if (locked) - t1 += "Swipe ID
" - else - t1 += "Block
" + if (last_configurator) + t1 += "Operator: [last_configurator]
" - t1 += "Access requirement is set to " - t1 += one_access ? "ONE
" : "ALL
" + if (locked) + t1 += "Unlock Interface
" + else + t1 += "Lock Interface
" - t1 += conf_access == null ? "All
" : "All
" + t1 += "Access requirement is set to " + t1 += one_access ? "ONE
" : "ALL
" - t1 += "
" + t1 += conf_access == null ? "All
" : "All
" - var/list/accesses = get_all_station_access() - for (var/acc in accesses) - var/aname = get_access_desc(acc) + t1 += "
" - if (!conf_access || !conf_access.len || !(acc in conf_access)) - t1 += "[aname]
" - else if(one_access) - t1 += "[aname]
" - else - t1 += "[aname]
" + var/list/accesses = get_available_accesses(user) + for (var/acc in accesses) + var/aname = get_access_desc(acc) - t1 += text("

Close

\n", src) - - user << browse(t1, "window=airlock_electronics") - onclose(user, "airlock") - - Topic(href, href_list) - ..() - if (usr.stat || usr.restrained() || (!ishuman(usr) && !istype(usr,/mob/living/silicon))) - return - if (href_list["close"]) - usr << browse(null, "window=airlock") - return - - if (href_list["login"]) - if(istype(usr,/mob/living/silicon)) - src.locked = 0 - src.last_configurator = usr.name + if (!conf_access || !conf_access.len || !(acc in conf_access)) + t1 += "[aname]
" + else if(one_access) + t1 += "[aname]
" else - var/obj/item/I = usr.get_active_hand() - if (istype(I, /obj/item/device/pda)) - var/obj/item/device/pda/pda = I - I = pda.id - if (I && src.check_access(I)) + t1 += "[aname]
" + + t1 += text("

Close

\n", src) + + user << browse(t1, "window=airlock_electronics") + onclose(user, "airlock") + +/obj/item/weapon/airlock_electronics/Topic(href, href_list) + ..() + if (usr.stat || usr.restrained() || (!ishuman(usr) && !istype(usr,/mob/living/silicon))) + return + if (href_list["close"]) + usr << browse(null, "window=airlock") + return + + if (href_list["login"]) + if(emagged) + src.locked = 0 + src.last_configurator = usr.name + else if(issilicon(usr)) + src.locked = 0 + src.last_configurator = usr.name + else if(isliving(usr)) + var/obj/item/weapon/card/id/id + if(ishuman(usr)) + var/mob/living/carbon/human/H = usr + id = H.get_idcard() + // In their ID slot? + if(id && src.check_access(id)) src.locked = 0 - src.last_configurator = I:registered_name + src.last_configurator = id.registered_name + // Still locked, human handling didn't do it! + if(locked) + var/obj/item/I = usr.get_active_hand() + id = I?.GetID() + if(id && src.check_access(id)) + src.locked = 0 + src.last_configurator = id.registered_name - if (locked) - return + if (locked) + return - if (href_list["logout"]) - locked = 1 + if (href_list["logout"]) + locked = 1 - if (href_list["one_access"]) - one_access = !one_access + if (href_list["one_access"]) + one_access = !one_access - if (href_list["access"]) - toggle_access(href_list["access"]) + if (href_list["access"]) + toggle_access(href_list["access"]) - attack_self(usr) + attack_self(usr) - proc - toggle_access(var/acc) - if (acc == "all") +/obj/item/weapon/airlock_electronics/proc/toggle_access(var/acc) + if (acc == "all") + conf_access = null + else + var/req = text2num(acc) + + if (conf_access == null) + conf_access = list() + + if (!(req in conf_access)) + conf_access += req + else + conf_access -= req + if (!conf_access.len) conf_access = null - else - var/req = text2num(acc) - if (conf_access == null) - conf_access = list() - - if (!(req in conf_access)) - conf_access += req - else - conf_access -= req - if (!conf_access.len) - conf_access = null +/obj/item/weapon/airlock_electronics/proc/get_available_accesses(var/mob/user) + var/obj/item/weapon/card/id/id + if(ishuman(user)) + var/mob/living/carbon/human/H = user + id = H.get_idcard() + else if(issilicon(user)) + var/mob/living/silicon/R = user + id = R.idcard + // Nothing + if(!id || !id.access) + return list() + + // Has engineer access, can put any access + else if(has_access(null, apply_any_access, id.access)) + return get_all_station_access() + + // Not an engineer, can only pick your own accesses to program + else + return id.access /obj/item/weapon/airlock_electronics/secure name = "secure airlock electronics" desc = "designed to be somewhat more resistant to hacking than standard electronics." origin_tech = list(TECH_DATA = 2) secure = 1 + +/obj/item/weapon/airlock_electronics/secure/emag_act(var/remaining_charges, var/mob/user) + to_chat(user, "You don't appear to be able to bypass this hardened device!") + return -1 diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index 36faf82b00..5ff587a7d9 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -269,7 +269,7 @@ // If for some reason this is actually needed for something important, uncomment this. /obj/machinery/door/blast/CanZASPass(turf/T, is_zone) if(is_zone) - return ATMOS_PASS_YES + return TRUE return ..() */ diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 6902b7296f..c07d17d9ac 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -9,7 +9,7 @@ anchored = 1 opacity = 1 density = 1 - can_atmos_pass = ATMOS_PASS_DENSITY + can_atmos_pass = ATMOS_PASS_PROC layer = DOOR_OPEN_LAYER var/open_layer = DOOR_OPEN_LAYER var/closed_layer = DOOR_CLOSED_LAYER @@ -82,11 +82,17 @@ /obj/machinery/door/process() if(close_door_at && world.time >= close_door_at) if(autoclose) - close_door_at = next_close_time() + close_door_at = world.time + next_close_wait() spawn(0) close() else close_door_at = 0 + if (..() == PROCESS_KILL && !close_door_at) + return PROCESS_KILL + +/obj/machinery/door/proc/autoclose_in(wait) + close_door_at = world.time + wait + START_MACHINE_PROCESSING(src) /obj/machinery/door/proc/can_open() if(!density || operating || !ticker) @@ -113,7 +119,13 @@ return //VOREStation Edit: unable to open doors else bumpopen(M) - + // VOREStation Add - UAVs open public doors + if(istype(AM, /obj/item/device/uav)) + if(check_access(null)) + open() + else + do_animate("deny") + //VOREStation Add End if(istype(AM, /mob/living/bot)) var/mob/living/bot/bot = AM @@ -145,8 +157,8 @@ /obj/machinery/door/CanZASPass(turf/T, is_zone) if(is_zone) - return block_air_zones ? ATMOS_PASS_NO : ATMOS_PASS_YES - return ..() + return !block_air_zones // Block merging unless block_air_zones = 0 + return !density // Block airflow unless density = 0 /obj/machinery/door/proc/bumpopen(mob/user as mob) if(operating) return @@ -326,13 +338,13 @@ /obj/machinery/door/examine(mob/user) . = ..() if(src.health <= 0) - to_chat(user, "\The [src] is broken!") - if(src.health < src.maxhealth / 4) - to_chat(user, "\The [src] looks like it's about to break!") + . += "It is broken!" + else if(src.health < src.maxhealth / 4) + . += "It looks like it's about to break!" else if(src.health < src.maxhealth / 2) - to_chat(user, "\The [src] looks seriously damaged!") + . += "It looks seriously damaged!" else if(src.health < src.maxhealth * 3/4) - to_chat(user, "\The [src] shows signs of damage!") + . += "It shows signs of damage!" /obj/machinery/door/proc/set_broken() @@ -427,12 +439,12 @@ operating = 0 if(autoclose) - close_door_at = next_close_time() + autoclose_in(next_close_wait()) return 1 -/obj/machinery/door/proc/next_close_time() - return world.time + (normalspeed ? 150 : 5) +/obj/machinery/door/proc/next_close_wait() + return (normalspeed ? 150 : 5) /obj/machinery/door/proc/close(var/forced = 0) if(!can_close(forced)) @@ -484,8 +496,7 @@ else source.thermal_conductivity = initial(source.thermal_conductivity) -/obj/machinery/door/Move(new_loc, new_dir) - //update_nearby_tiles() +/obj/machinery/door/Moved(atom/old_loc, direction, forced = FALSE) . = ..() if(width > 1) if(dir in list(EAST, WEST)) diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index c681a34edb..29125c8500 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -79,14 +79,15 @@ return get_material_by_name(DEFAULT_WALL_MATERIAL) /obj/machinery/door/firedoor/examine(mob/user) - . = ..(user, 1) - if(!. || !density) - return + . = ..() + + if(!Adjacent(user)) + return . if(pdiff >= FIREDOOR_MAX_PRESSURE_DIFF) - to_chat(user, "WARNING: Current pressure differential is [pdiff]kPa! Opening door may result in injury!") + . += "WARNING: Current pressure differential is [pdiff]kPa! Opening door may result in injury!" - to_chat(user, "Sensor readings:") + . += "Sensor readings:" for(var/index = 1; index <= tile_info.len; index++) var/o = "  " switch(index) @@ -100,7 +101,7 @@ o += "WEST: " if(tile_info[index] == null) o += "DATA UNAVAILABLE" - to_chat(user, o) + . += o continue var/celsius = convert_k2c(tile_info[index][1]) var/pressure = tile_info[index][2] @@ -108,14 +109,14 @@ o += "[celsius]°C " o += "" o += "[pressure]kPa" - to_chat(user, o) + . += o if(islist(users_to_open) && users_to_open.len) var/users_to_open_string = users_to_open[1] if(users_to_open.len >= 2) for(var/i = 2 to users_to_open.len) users_to_open_string += ", [users_to_open[i]]" - to_chat(user, "These people have opened \the [src] during an alert: [users_to_open_string].") + . += "These people have opened \the [src] during an alert: [users_to_open_string]." /obj/machinery/door/firedoor/Bumped(atom/AM) if(p_open || operating) @@ -350,7 +351,9 @@ /obj/machinery/door/firedoor/process() ..() - if(density && next_process_time <= world.time) + if(!density) + return PROCESS_KILL + if(next_process_time <= world.time) next_process_time = world.time + 100 // 10 second delays between process updates var/changed = 0 lockdown=0 @@ -406,7 +409,10 @@ /obj/machinery/door/firedoor/close() latetoggle() - return ..() + . = ..() + // Queue us for processing when we are closed! + if(density) + START_MACHINE_PROCESSING(src) /obj/machinery/door/firedoor/open(var/forced = 0) if(hatch_open) diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm index 608e02b9a0..f05419cb6d 100644 --- a/code/game/machinery/doors/multi_tile.dm +++ b/code/game/machinery/doors/multi_tile.dm @@ -16,7 +16,7 @@ QDEL_NULL(filler2) return ..() -/obj/machinery/door/airlock/multi_tile/Move() +/obj/machinery/door/airlock/multi_tile/Moved(atom/old_loc, direction, forced = FALSE) . = ..() SetBounds() diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 1396b5f554..f7b8a1222d 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -14,6 +14,7 @@ opacity = 0 var/obj/item/weapon/airlock_electronics/electronics = null explosion_resistance = 5 + can_atmos_pass = ATMOS_PASS_PROC air_properties_vary_with_direction = 1 /obj/machinery/door/window/New() @@ -94,9 +95,9 @@ /obj/machinery/door/window/CanZASPass(turf/T, is_zone) if(get_dir(T, loc) == turn(dir, 180)) if(is_zone) // No merging allowed. - return ATMOS_PASS_NO - return ..() // Air can flow if open (density == FALSE). - return ATMOS_PASS_YES // Windoors don't block if not facing the right way. + return FALSE + return !density // Air can flow if open (density == FALSE). + return TRUE // Windoors don't block if not facing the right way. /obj/machinery/door/window/CheckExit(atom/movable/mover as mob|obj, turf/target as turf) if(istype(mover) && mover.checkpass(PASSGLASS)) diff --git a/code/game/machinery/embedded_controller/airlock_program.dm b/code/game/machinery/embedded_controller/airlock_program.dm index dc02084f98..dd0d863091 100644 --- a/code/game/machinery/embedded_controller/airlock_program.dm +++ b/code/game/machinery/embedded_controller/airlock_program.dm @@ -210,6 +210,7 @@ //purge apparently means clearing the airlock chamber to vacuum (then refilling, handled later) target_pressure = 0 state = STATE_DEPRESSURIZE + playsound(master, 'sound/AI/airlockout.ogg', 100, 0) //VOREStation Add - TTS if(!cycle_to_external_air || target_state == TARGET_OUTOPEN) // if going outside, pump internal air into air tank signalPump(tag_airpump, 1, 0, target_pressure) //send a signal to start depressurizing else @@ -218,6 +219,7 @@ else if(chamber_pressure <= target_pressure) state = STATE_PRESSURIZE + playsound(master, 'sound/AI/airlockin.ogg', 100, 0) //VOREStation Add - TTS if(!cycle_to_external_air || target_state == TARGET_INOPEN) // if going inside, pump air into airlock signalPump(tag_airpump, 1, 1, target_pressure) //send a signal to start pressurizing else @@ -227,6 +229,7 @@ else if(chamber_pressure > target_pressure) if(!cycle_to_external_air) state = STATE_DEPRESSURIZE + playsound(master, 'sound/AI/airlockout.ogg', 100, 0) //VOREStation Add - TTS signalPump(tag_airpump, 1, 0, target_pressure) //send a signal to start depressurizing else memory["purge"] = 1 // should always purge first if using external air, chamber pressure should never be higher than target pressure here @@ -234,6 +237,7 @@ memory["target_pressure"] = max(target_pressure, MIN_TARGET_PRESSURE) if(STATE_PRESSURIZE) + playsound(master, 'sound/machines/2beep.ogg', 100, 0) //VOREStation Add - TTS if(memory["chamber_sensor_pressure"] >= memory["target_pressure"] * 0.95) //not done until the pump has reported that it's off if(memory["pump_status"] != "off") @@ -245,9 +249,11 @@ cycleDoors(target_state) state = STATE_IDLE target_state = TARGET_NONE + playsound(master, 'sound/AI/airlockdone.ogg', 100, 0) //VOREStation Add - TTS if(STATE_DEPRESSURIZE) + playsound(master, 'sound/machines/2beep.ogg', 100, 0) //VOREStation Add - TTS if(memory["chamber_sensor_pressure"] <= max(memory["target_pressure"] * 1.05, MIN_TARGET_PRESSURE)) if(memory["pump_status"] != "off") signalPump(tag_airpump, 0) @@ -263,6 +269,7 @@ cycleDoors(target_state) state = STATE_IDLE target_state = TARGET_NONE + playsound(master, 'sound/AI/airlockdone.ogg', 100, 0) //VOREStation Add - TTS memory["processing"] = (state != target_state) diff --git a/code/game/machinery/exonet_node.dm b/code/game/machinery/exonet_node.dm index 56c8e36edf..1813d2dc71 100644 --- a/code/game/machinery/exonet_node.dm +++ b/code/game/machinery/exonet_node.dm @@ -1,8 +1,8 @@ /obj/machinery/exonet_node name = "exonet node" desc = null // Gets written in New() - icon = 'icons/obj/stationobjs.dmi' - icon_state = "exonet_node" + icon = 'icons/obj/stationobjs_vr.dmi' //VOREStation Edit + icon_state = "exonet" //VOREStation Edit idle_power_usage = 2500 density = 1 var/on = 1 @@ -44,10 +44,12 @@ // Description: Self explanatory. /obj/machinery/exonet_node/update_icon() if(on) + /* VOREStation Removal if(!allow_external_PDAs && !allow_external_communicators && !allow_external_newscasters) icon_state = "[initial(icon_state)]_idle" else - icon_state = initial(icon_state) + */ + icon_state = initial(icon_state) else icon_state = "[initial(icon_state)]_off" @@ -58,13 +60,13 @@ if(toggle) if(stat & (BROKEN|NOPOWER|EMPED)) on = 0 - idle_power_usage = 0 + update_idle_power_usage(0) else on = 1 - idle_power_usage = 2500 + update_idle_power_usage(2500) else on = 0 - idle_power_usage = 0 + update_idle_power_usage(0) update_icon() // Proc: emp_act() diff --git a/code/game/machinery/floor_light.dm b/code/game/machinery/floor_light.dm index 11f5fc26fd..c494782ce1 100644 --- a/code/game/machinery/floor_light.dm +++ b/code/game/machinery/floor_light.dm @@ -99,7 +99,7 @@ var/list/floor_light_cache = list() if(light_range || light_power) set_light(0) - active_power_usage = ((light_range + light_power) * 10) + update_active_power_usage((light_range + light_power) * 10) update_icon() /obj/machinery/floor_light/update_icon() diff --git a/code/game/machinery/floorlayer.dm b/code/game/machinery/floorlayer.dm index e7f39ade5f..d8a2b463e2 100644 --- a/code/game/machinery/floorlayer.dm +++ b/code/game/machinery/floorlayer.dm @@ -12,8 +12,8 @@ T = new/obj/item/stack/tile/floor(src) ..() -/obj/machinery/floorlayer/Move(new_turf,M_Dir) - ..() +/obj/machinery/floorlayer/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() if(on) if(mode["dismantle"]) @@ -26,7 +26,7 @@ CollectTiles(old_turf) - old_turf = new_turf + old_turf = loc /obj/machinery/floorlayer/attack_hand(mob/user as mob) on=!on @@ -64,12 +64,11 @@ ..() /obj/machinery/floorlayer/examine(mob/user) - ..() + . = ..() var/dismantle = mode["dismantle"] var/laying = mode["laying"] var/collect = mode["collect"] - var/message = "\The [src] [!T ? "don't " : ""]has [!T ? "" : "[T.get_amount()] [T] "]tile\s, dismantle is [dismantle ? "on" : "off"], laying is [laying ? "on" : "off"], collect is [collect ? "on" : "off"]." - to_chat(user,message) + . += "[src] [!T ? "don't " : ""]has [!T ? "" : "[T.get_amount()] [T] "]tile\s, dismantle is [dismantle ? "on" : "off"], laying is [laying ? "on" : "off"], collect is [collect ? "on" : "off"]." /obj/machinery/floorlayer/proc/reset() on=0 diff --git a/code/game/machinery/frame.dm b/code/game/machinery/frame.dm index 330f0ee796..d77e2dff7a 100644 --- a/code/game/machinery/frame.dm +++ b/code/game/machinery/frame.dm @@ -220,9 +220,9 @@ density = TRUE /obj/structure/frame/examine(mob/user) - ..() + . = ..() if(circuit) - to_chat(user, "It has \a [circuit] installed.") + . += "It has \a [circuit] installed." /obj/structure/frame/proc/update_desc() var/D diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 4fec2cba82..76686aacce 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -92,22 +92,11 @@ var/const/HOLOPAD_MODE = RANGE_BASED /*This is the proc for special two-way communication between AI and holopad/people talking near holopad. For the other part of the code, check silicon say.dm. Particularly robot talk.*/ -/obj/machinery/hologram/holopad/hear_talk(mob/living/M, text, verb, datum/language/speaking) - if(M) +/obj/machinery/hologram/holopad/hear_talk(mob/M, list/message_pieces, verb) + if(M && LAZYLEN(masters)) for(var/mob/living/silicon/ai/master in masters) - if(!master.say_understands(M, speaking))//The AI will be able to understand most mobs talking through the holopad. - if(speaking) - text = speaking.scramble(text) - else - text = stars(text) - var/name_used = M.GetVoice() - //This communication is imperfect because the holopad "filters" voices and is only designed to connect to the master only. - var/rendered - if(speaking) - rendered = "Holopad received, [name_used] [speaking.format_message(text, verb)]" - else - rendered = "Holopad received, [name_used] [verb], \"[text]\"" - master.show_message(rendered, 2) + if(masters[master] && M != master) + master.relay_speech(M, message_pieces, verb) /obj/machinery/hologram/holopad/see_emote(mob/living/M, text) if(M) @@ -138,6 +127,8 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ set_light(2) //pad lighting icon_state = "holopad1" A.holo = src + if(LAZYLEN(masters)) + START_MACHINE_PROCESSING(src) return 1 /obj/machinery/hologram/holopad/proc/clear_holo(mob/living/silicon/ai/user) @@ -158,7 +149,8 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ continue use_power(power_per_hologram) - return 1 + if(..() == PROCESS_KILL && !LAZYLEN(masters)) + return PROCESS_KILL /obj/machinery/hologram/holopad/proc/move_hologram(mob/living/silicon/ai/user) if(masters[user]) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index cc5b330ba3..a4654a31a4 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -165,21 +165,20 @@ to_chat(usr, "The IV drip is now [mode ? "injecting" : "taking blood"].") /obj/machinery/iv_drip/examine(mob/user) - ..(user) - if(!(user in view(2)) && user != src.loc) - return + . = ..() - to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].") + if(get_dist(user, src) <= 2) + . += "The IV drip is [mode ? "injecting" : "taking blood"]." - if(beaker) - if(beaker.reagents && beaker.reagents.reagent_list.len) - to_chat(user, "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.") + if(beaker) + if(beaker.reagents?.reagent_list?.len) + . += "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid." + else + . += "Attached is an empty [beaker]." else - to_chat(user, "Attached is an empty [beaker].") - else - to_chat(user, "No chemicals are attached.") + . += "No chemicals are attached." - to_chat(user, "[attached ? attached : "No one"] is attached.") + . += "[attached ? attached : "No one"] is attached." /obj/machinery/iv_drip/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) //allow bullets, beams, thrown objects, mice, drones, and the like through. diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index afa853c41a..81efc0f42b 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -50,8 +50,9 @@ set_light(2, 0.1, on ? "#82FF4C" : "#F86060") /obj/machinery/light_switch/examine(mob/user) - if(..(user, 1)) - to_chat(user, "A light switch. It is [on? "on" : "off"].") + . = ..() + if(Adjacent(user)) + . += "A light switch. It is [on? "on" : "off"]." /obj/machinery/light_switch/attack_hand(mob/user) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 9f3132207f..3871908ff2 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -5,12 +5,16 @@ Overview: of 'Del' removes reference to src machine in global 'machines list'. Class Variables: + + power_init_complete (boolean) + Indicates that we have have registered our static power usage with the area. + use_power (num) current state of auto power use. Possible Values: - 0 -- no auto power use - 1 -- machine is using power at its idle power level - 2 -- machine is using power at its active power level + USE_POWER_OFF:0 -- no auto power use + USE_POWER_IDLE:1 -- machine is using power at its idle power level + USE_POWER_ACTIVE:2 -- machine is using power at its active power level active_power_usage (num) Value for the amount of power to use when in active power mode @@ -51,28 +55,18 @@ Class Procs: Destroy() 'game/machinery/machine.dm' - auto_use_power() 'game/machinery/machine.dm' - This proc determines how power mode power is deducted by the machine. - 'auto_use_power()' is called by the 'master_controller' game_controller every - tick. + get_power_usage() 'game/machinery/machinery_power.dm' + Returns the amount of power this machine uses every SSmachines cycle. + Default definition uses 'use_power', 'active_power_usage', 'idle_power_usage' - Return Value: - return:1 -- if object is powered - return:0 -- if object is not powered. - - Default definition uses 'use_power', 'power_channel', 'active_power_usage', - 'idle_power_usage', 'powered()', and 'use_power()' implement behavior. - - powered(chan = EQUIP) 'modules/power/power.dm' + powered(chan = CURRENT_CHANNEL) 'game/machinery/machinery_power.dm' Checks to see if area that contains the object has power available for power channel given in 'chan'. - use_power(amount, chan=EQUIP, autocalled) 'modules/power/power.dm' + use_power_oneoff(amount, chan=CURRENT_CHANNEL) 'game/machinery/machinery_power.dm' Deducts 'amount' from the power channel 'chan' of the area that contains the object. - If it's autocalled then everything is normal, if something else calls use_power we are going to - need to recalculate the power two ticks in a row. - power_change() 'modules/power/power.dm' + power_change() 'game/machinery/machinery_power.dm' Called by the area that contains the object when ever that area under goes a power state change (area runs out of power, or area channel is turned off). @@ -108,6 +102,7 @@ Class Procs: var/idle_power_usage = 0 var/active_power_usage = 0 var/power_channel = EQUIP //EQUIP, ENVIRON or LIGHT + var/power_init_complete = FALSE var/list/component_parts = null //list of all the parts used to build it, if made from certain kinds of frames. var/uid var/panel_open = 0 @@ -145,7 +140,9 @@ Class Procs: if(A.loc == src) // If the components are inside the machine, delete them. qdel(A) else // Otherwise we assume they were dropped to the ground during deconstruction, and were not removed from the component_parts list by deconstruction code. - component_parts -= A + warning("[A] was still in [src]'s component_parts when it was Destroy()'d") + component_parts.Cut() + component_parts = null if(contents) // The same for contents. for(var/atom/A in contents) if(ishuman(A)) @@ -157,9 +154,8 @@ Class Procs: qdel(A) return ..() -/obj/machinery/process()//If you dont use process or power why are you here - if(!(use_power || idle_power_usage || active_power_usage)) - return PROCESS_KILL +/obj/machinery/process() // Steady power usage is handled separately. If you dont use process why are you here? + return PROCESS_KILL /obj/machinery/emp_act(severity) if(use_power && stat == 0) @@ -192,18 +188,20 @@ Class Procs: else return -//sets the use_power var and then forces an area power update -/obj/machinery/proc/update_use_power(var/new_use_power) - use_power = new_use_power - -/obj/machinery/proc/auto_use_power() - if(!powered(power_channel)) - return 0 - if(use_power == USE_POWER_IDLE) - use_power(idle_power_usage, power_channel, 1) - else if(use_power >= USE_POWER_ACTIVE) - use_power(active_power_usage, power_channel, 1) - return 1 +/obj/machinery/vv_edit_var(var/var_name, var/new_value) + if(var_name == NAMEOF(src, use_power)) + update_use_power(new_value) + return TRUE + else if(var_name == NAMEOF(src, power_channel)) + update_power_channel(new_value) + return TRUE + else if(var_name == NAMEOF(src, idle_power_usage)) + update_idle_power_usage(new_value) + return TRUE + else if(var_name == NAMEOF(src, active_power_usage)) + update_active_power_usage(new_value) + return TRUE + return ..() /obj/machinery/proc/operable(var/additional_flags = 0) return !inoperable(additional_flags) diff --git a/code/game/machinery/machinery_power.dm b/code/game/machinery/machinery_power.dm new file mode 100644 index 0000000000..aa3d301e53 --- /dev/null +++ b/code/game/machinery/machinery_power.dm @@ -0,0 +1,168 @@ +// +// /obj/machinery POWER USAGE CODE HERE! GO GO GADGET STATIC POWER! +// Note: You can find /obj/machinery/power power usage code in power.dm +// +// The following four machinery variables determine the "static" amount of power used every power cycle: +// - use_power, idle_power_usage, active_power_usage, power_channel +// +// Please never change any of these variables! Use the procs that update them instead! +// + +// Note that we update the area even if the area is unpowered. +#define REPORT_POWER_CONSUMPTION_CHANGE(old_power, new_power)\ + if(old_power != new_power){\ + var/area/A = get_area(src);\ + if(A) A.power_use_change(old_power, new_power, power_channel)} + +// Current power consumption right now. +#define POWER_CONSUMPTION (use_power == USE_POWER_IDLE ? idle_power_usage : (use_power >= USE_POWER_ACTIVE ? active_power_usage : 0)) + +// returns true if the area has power on given channel (or doesn't require power). +// defaults to power_channel +/obj/machinery/proc/powered(var/chan = CURRENT_CHANNEL) // defaults to power_channel + //Don't do this. It allows machines that set use_power to 0 when off (many machines) to + //be turned on again and used after a power failure because they never gain the NOPOWER flag. + //if(!use_power) + // return 1 + + var/area/A = get_area(src) // make sure it's in an area + if(!A) + return 0 // if not, then not powered + if(chan == CURRENT_CHANNEL) + chan = power_channel + return A.powered(chan) // return power status of the area + +// called whenever the power settings of the containing area change +// by default, check equipment channel & set/clear NOPOWER flag +// Returns TRUE if NOPOWER stat flag changed. +// can override if needed +/obj/machinery/proc/power_change() + var/oldstat = stat + if(powered(power_channel)) + stat &= ~NOPOWER + else + stat |= NOPOWER + . = (stat != oldstat) + return + +// Get the amount of power this machine will consume each cycle. Override by experts only! +/obj/machinery/proc/get_power_usage() + return POWER_CONSUMPTION + +// DEPRECATED! - USE use_power_oneoff() instead! +/obj/machinery/proc/use_power(var/amount, var/chan = -1) // defaults to power_channel + return src.use_power_oneoff(amount, chan); + +// This will have this machine have its area eat this much power next tick, and not afterwards. Do not use for continued power draw. +// Returns actual amount drawn (In theory this could be less than the amount asked for. In pratice it won't be FOR NOW) +/obj/machinery/proc/use_power_oneoff(var/amount, var/chan = CURRENT_CHANNEL) + var/area/A = get_area(src) // make sure it's in an area + if(!A) + return + if(chan == CURRENT_CHANNEL) + chan = power_channel + return A.use_power_oneoff(amount, chan) + +// Check if we CAN use a given amount of extra power as a one off. Returns amount we could use without actually using it. +// For backwards compatibilty this returns true if the channel is powered. This is consistant with pre-static-power +// behavior of APC powerd machines, but at some point we might want to make this a bit cooler. +/obj/machinery/proc/can_use_power_oneoff(var/amount, var/chan = CURRENT_CHANNEL) + if(powered(chan)) + return amount // If channel is powered then you can do it. + return 0 + +// Do not do power stuff in New/Initialize until after ..() +/obj/machinery/Initialize() + . = ..() + var/power = POWER_CONSUMPTION + REPORT_POWER_CONSUMPTION_CHANGE(0, power) + power_init_complete = TRUE + +// Or in Destroy at all, but especially after the ..(). +/obj/machinery/Destroy() + if(ismovable(loc)) + GLOB.moved_event.unregister(loc, src, .proc/update_power_on_move) // Unregister just in case + var/power = POWER_CONSUMPTION + REPORT_POWER_CONSUMPTION_CHANGE(power, 0) + . = ..() + +// Registering moved_event observers for all machines is too expensive. Instead we do it ourselves. +// 99% of machines are always on a turf anyway, very few need recursive move handling. +/obj/machinery/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + update_power_on_move(src, old_loc, loc) + if(ismovable(loc)) // Register for recursive movement (if the thing we're inside moves) + GLOB.moved_event.register(loc, src, .proc/update_power_on_move) + if(ismovable(old_loc)) // Unregister recursive movement. + GLOB.moved_event.unregister(old_loc, src, .proc/update_power_on_move) + +/obj/machinery/proc/update_power_on_move(atom/movable/mover, atom/old_loc, atom/new_loc) + var/area/old_area = get_area(old_loc) + var/area/new_area = get_area(new_loc) + if(old_area != new_area) + area_changed(old_area, new_area) + +/obj/machinery/proc/area_changed(area/old_area, area/new_area) + if(old_area == new_area || !power_init_complete) + return + var/power = POWER_CONSUMPTION + if(!power) + return // This is the most likely case anyway. + + if(old_area) + old_area.power_use_change(power, 0, power_channel) // Remove our usage from old area + if(new_area) + new_area.power_use_change(0, power, power_channel) // Add our usage to new area + power_change() // Force check in case the old area was powered and the new one isn't or vice versa. + +// +// Usage Update Procs - These procs are the only allowed way to modify these four variables: +// - use_power, idle_power_usage, active_power_usage, power_channel +// + +// Sets the use_power var and then forces an area power update +/obj/machinery/proc/update_use_power(var/new_use_power) + if(use_power == new_use_power) + return + if(!power_init_complete) + use_power = new_use_power + return TRUE // We'll be retallying anyway. + var/old_power = POWER_CONSUMPTION + use_power = new_use_power + var/new_power = POWER_CONSUMPTION + REPORT_POWER_CONSUMPTION_CHANGE(old_power, new_power) + return TRUE + +// Sets the power_channel var and then forces an area power update. +/obj/machinery/proc/update_power_channel(var/new_channel) + if(power_channel == new_channel) + return + if(!power_init_complete) + power_channel = new_channel + return TRUE // We'll be retallying anyway. + var/power = POWER_CONSUMPTION + REPORT_POWER_CONSUMPTION_CHANGE(power, 0) // Subtract from old channel + power_channel = new_channel + REPORT_POWER_CONSUMPTION_CHANGE(0, power) // Add to new channel + return TRUE + +// Sets the idle_power_usage var and then forces an area power update if use_power was USE_POWER_IDLE +/obj/machinery/proc/update_idle_power_usage(var/new_power_usage) + if(idle_power_usage == new_power_usage) + return + var/old_power = idle_power_usage + idle_power_usage = new_power_usage + if(power_init_complete && use_power == USE_POWER_IDLE) // If this is the channel in use + REPORT_POWER_CONSUMPTION_CHANGE(old_power, new_power_usage) + +// Sets the active_power_usage var and then forces an area power update if use_power was USE_POWER_ACTIVE +/obj/machinery/proc/update_active_power_usage(var/new_power_usage) + if(active_power_usage == new_power_usage) + return + var/old_power = active_power_usage + active_power_usage = new_power_usage + if(power_init_complete && use_power == USE_POWER_ACTIVE) // If this is the channel in use + REPORT_POWER_CONSUMPTION_CHANGE(old_power, new_power_usage) + +#undef REPORT_POWER_CONSUMPTION_CHANGE +#undef POWER_CONSUMPTION diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index ebbda06d6d..26a7936e1c 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -143,7 +143,7 @@ // Update power usage: if(on) update_use_power(USE_POWER_ACTIVE) - active_power_usage = electricity_level*15 + update_active_power_usage(electricity_level * 15) else update_use_power(USE_POWER_OFF) diff --git a/code/game/machinery/oxygen_pump.dm b/code/game/machinery/oxygen_pump.dm index 10c96a6b6a..b40314d2c2 100644 --- a/code/game/machinery/oxygen_pump.dm +++ b/code/game/machinery/oxygen_pump.dm @@ -148,9 +148,9 @@ /obj/machinery/oxygen_pump/examine(var/mob/user) . = ..() if(tank) - to_chat(user, "The meter shows [round(tank.air_contents.return_pressure())] kPa.") + . += "The meter shows [round(tank.air_contents.return_pressure())] kPa." else - to_chat(user, "It is missing a tank!") + . += "It is missing a tank!" /obj/machinery/oxygen_pump/process() diff --git a/code/game/machinery/pda_multicaster.dm b/code/game/machinery/pda_multicaster.dm index aab6a31ded..29de5307cf 100644 --- a/code/game/machinery/pda_multicaster.dm +++ b/code/game/machinery/pda_multicaster.dm @@ -1,8 +1,8 @@ /obj/machinery/pda_multicaster name = "\improper PDA multicaster" desc = "This machine mirrors messages sent to it to specific departments." - icon = 'icons/obj/stationobjs.dmi' - icon_state = "controller" + icon = 'icons/obj/stationobjs_vr.dmi' //VOREStation Edit + icon_state = "pdamulti" //VOREStation Edit density = 1 anchored = 1 circuit = /obj/item/weapon/circuitboard/telecomms/pda_multicaster @@ -19,6 +19,7 @@ "engineering" = new /obj/item/device/pda/multicaster/engineering(src), "medical" = new /obj/item/device/pda/multicaster/medical(src), "research" = new /obj/item/device/pda/multicaster/research(src), + "exploration" = new /obj/item/device/pda/multicaster/exploration(src), //VOREStation Add, "cargo" = new /obj/item/device/pda/multicaster/cargo(src), "civilian" = new /obj/item/device/pda/multicaster/civilian(src)) @@ -43,7 +44,7 @@ if(on) icon_state = initial(icon_state) else - icon_state = "[initial(icon_state)]-p" + icon_state = "[initial(icon_state)]_off" //VOREStation Edit /obj/machinery/pda_multicaster/attackby(obj/item/I, mob/user) if(I.is_screwdriver()) @@ -77,15 +78,15 @@ if(stat & (BROKEN|NOPOWER|EMPED)) on = 0 update_PDAs(1) // 1 being to turn off. - idle_power_usage = 0 + update_idle_power_usage(0) else on = 1 update_PDAs(0) - idle_power_usage = 750 + update_idle_power_usage(750) else on = 0 update_PDAs(1) - idle_power_usage = 0 + update_idle_power_usage(0) update_icon() /obj/machinery/pda_multicaster/process() diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 13b1dc1bb7..f5f2532080 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -132,12 +132,6 @@ Buildable meters src.set_dir(turn(src.dir, 270)) fixdir() -// If you want to disable pipe dir changing when pulled, uncomment this -// /obj/item/pipe/Move() -// var/old_dir = dir -// . = ..() -// set_dir(old_dir) //pipes changing direction when moved is just annoying and buggy - // Don't let pulling a pipe straighten it out. /obj/item/pipe/binary/bendable/Move() var/old_bent = !IS_CARDINAL(dir) diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 9eb323dfa3..a071013080 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -157,7 +157,7 @@ Nah /obj/machinery/pipedispenser/disposal/Topic(href, href_list) if(href_list["makepipe"] || href_list["setlayer"] || href_list["makemeter"]) // Asking the disposal machine to do atmos stuff? return // That's a no no. - if(..()) + if((. = ..())) return if(href_list["dmake"]) if(!wait) @@ -169,8 +169,7 @@ Nah C.add_fingerprint(usr) C.update() wait = 1 - spawn(15) - wait = 0 + VARSET_IN(src, wait, FALSE, 15) return // adding a pipe dispensers that spawn unhooked from the ground diff --git a/code/game/machinery/pipe/pipe_recipes.dm b/code/game/machinery/pipe/pipe_recipes.dm index 9d916472bb..8937a45608 100644 --- a/code/game/machinery/pipe/pipe_recipes.dm +++ b/code/game/machinery/pipe/pipe_recipes.dm @@ -4,7 +4,7 @@ var/global/list/atmos_pipe_recipes = null var/global/list/disposal_pipe_recipes = null -var/global/list/all_pipe_recipes = null +var/global/list/all_pipe_recipes = null // VOREStation Add /hook/startup/proc/init_pipe_recipes() global.atmos_pipe_recipes = list( @@ -52,40 +52,37 @@ var/global/list/all_pipe_recipes = null ) global.disposal_pipe_recipes = list( "Disposal Pipes" = list( - new /datum/pipe_recipe/disposal("Pipe", DISPOSAL_PIPE_STRAIGHT, "conpipe-s", PIPE_STRAIGHT), - new /datum/pipe_recipe/disposal("Bent Pipe", DISPOSAL_PIPE_CORNER, "conpipe-c"), - new /datum/pipe_recipe/disposal("Junction", DISPOSAL_PIPE_JUNCTION, "conpipe-j1", PIPE_TRIN_M, "conpipe-j2"), - new /datum/pipe_recipe/disposal("Y-Junction", DISPOSAL_PIPE_JUNCTION_Y, "conpipe-y"), - new /datum/pipe_recipe/disposal("Sort Junction", DISPOSAL_PIPE_SORTER, "conpipe-j1s", PIPE_TRIN_M, "conpipe-j2s", DISPOSAL_SORT_NORMAL), - new /datum/pipe_recipe/disposal("Sort Junction (Wildcard)",DISPOSAL_PIPE_SORTER, "conpipe-j1s", PIPE_TRIN_M, "conpipe-j2s", DISPOSAL_SORT_WILDCARD), - new /datum/pipe_recipe/disposal("Sort Junction (Untagged)",DISPOSAL_PIPE_SORTER, "conpipe-j1s", PIPE_TRIN_M, "conpipe-j2s", DISPOSAL_SORT_UNTAGGED), - new /datum/pipe_recipe/disposal("Tagger", DISPOSAL_PIPE_TAGGER, "pipe-tagger", PIPE_STRAIGHT), - new /datum/pipe_recipe/disposal("Tagger (Partial)", DISPOSAL_PIPE_TAGGER_PARTIAL, "pipe-tagger-partial", PIPE_STRAIGHT), - new /datum/pipe_recipe/disposal("Trunk", DISPOSAL_PIPE_TRUNK, "conpipe-t"), - new /datum/pipe_recipe/disposal("Upwards", DISPOSAL_PIPE_UPWARD, "pipe-u"), - new /datum/pipe_recipe/disposal("Downwards", DISPOSAL_PIPE_DOWNWARD, "pipe-d"), - new /datum/pipe_recipe/disposal("Bin", DISPOSAL_PIPE_BIN, "disposal", PIPE_ONEDIR), - new /datum/pipe_recipe/disposal("Outlet", DISPOSAL_PIPE_OUTLET, "outlet"), - new /datum/pipe_recipe/disposal("Chute", DISPOSAL_PIPE_CHUTE, "intake"), + new /datum/pipe_recipe/disposal("Pipe", DISPOSAL_PIPE_STRAIGHT, "conpipe-s", PIPE_STRAIGHT), + new /datum/pipe_recipe/disposal("Bent Pipe", DISPOSAL_PIPE_CORNER, "conpipe-c"), + new /datum/pipe_recipe/disposal("Junction", DISPOSAL_PIPE_JUNCTION, "conpipe-j1", PIPE_TRIN_M), + new /datum/pipe_recipe/disposal("Y-Junction", DISPOSAL_PIPE_JUNCTION_Y, "conpipe-y"), + new /datum/pipe_recipe/disposal("Sort Junction", DISPOSAL_PIPE_SORTER, "conpipe-j1s", PIPE_TRIN_M, DISPOSAL_SORT_NORMAL), + new /datum/pipe_recipe/disposal("Sort Junction (Wildcard)", DISPOSAL_PIPE_SORTER, "conpipe-j1s", PIPE_TRIN_M, DISPOSAL_SORT_WILDCARD), + new /datum/pipe_recipe/disposal("Sort Junction (Untagged)", DISPOSAL_PIPE_SORTER, "conpipe-j1s", PIPE_TRIN_M, DISPOSAL_SORT_UNTAGGED), + new /datum/pipe_recipe/disposal("Tagger", DISPOSAL_PIPE_TAGGER, "pipe-tagger", PIPE_STRAIGHT), + new /datum/pipe_recipe/disposal("Tagger (Partial)", DISPOSAL_PIPE_TAGGER_PARTIAL, "pipe-tagger-partial", PIPE_STRAIGHT), + new /datum/pipe_recipe/disposal("Trunk", DISPOSAL_PIPE_TRUNK, "conpipe-t"), + new /datum/pipe_recipe/disposal("Upwards", DISPOSAL_PIPE_UPWARD, "pipe-u"), + new /datum/pipe_recipe/disposal("Downwards", DISPOSAL_PIPE_DOWNWARD, "pipe-d"), + new /datum/pipe_recipe/disposal("Bin", DISPOSAL_PIPE_BIN, "disposal", PIPE_ONEDIR), + new /datum/pipe_recipe/disposal("Outlet", DISPOSAL_PIPE_OUTLET, "outlet"), + new /datum/pipe_recipe/disposal("Chute", DISPOSAL_PIPE_CHUTE, "intake"), ) ) - global.all_pipe_recipes = disposal_pipe_recipes + atmos_pipe_recipes + global.all_pipe_recipes = disposal_pipe_recipes + atmos_pipe_recipes // VOREStation Add return TRUE // // New method of handling pipe construction. Instead of numeric constants and a giant switch statement of doom // every pipe type has a datum instance which describes its name, placement rules and construction method, dispensing etc. // The advantages are obvious, mostly in simplifying the code of the dispenser, and the ability to add new pipes without hassle. +// icon_state and icon_state_m must be from among those available from the dmi files included in /datum/asset/iconsheet/pipes // /datum/pipe_recipe - var/name = "Abstract Pipe (fixme)" // Recipe name - var/pipe_type // The type PATH of what actual pipe the fitting becomes, used by RCD to print the pipe. - var/icon = 'icons/obj/pipe-item.dmi' // This tells the RPD which icon file to look for preview images in. - var/icon_state // This tells the RPD what kind of pipe icon to render for the preview. - var/icon_state_m // This stores the mirrored version of the regular state (if available). - var/dirtype // If using an RPD, this tells more about what previews to show. - var/subtype = 0 // Used for certain disposals pipes types. - var/paintable = FALSE // If TRUE, allow the RPD to paint this pipe. + var/name = "Abstract Pipe (fixme)" // Recipe name + var/icon_state = null // This tells the RPD what kind of pipe icon to render for the preview. + var/icon_state_m = null // This stores the mirrored version of the regular state (if available). + var/dirtype // If using an RPD, this tells more about what previews to show. // Render an HTML link to select this pipe type. Returns text. /datum/pipe_recipe/proc/Render(dispenser) @@ -100,8 +97,10 @@ var/global/list/all_pipe_recipes = null // /datum/pipe_recipe/pipe var/obj/item/pipe/construction_type // The type PATH to the type of pipe fitting object the recipe makes. + var/obj/machinery/atmospherics/pipe_type // The type PATH of what actual pipe the fitting becomes. + var/paintable = FALSE // If TRUE, allow the RPD to paint this pipe. // VOREStation Add -/datum/pipe_recipe/pipe/New(var/label, var/obj/machinery/atmospherics/path, var/colorable=FALSE) +/datum/pipe_recipe/pipe/New(var/label, var/obj/machinery/atmospherics/path) name = label pipe_type = path construction_type = initial(path.construction_type) @@ -109,7 +108,7 @@ var/global/list/all_pipe_recipes = null dirtype = initial(construction_type.dispenser_class) if (dirtype == PIPE_TRIN_M) icon_state_m = "[icon_state]m" - paintable = colorable + paintable = ispath(path, /obj/machinery/atmospherics/pipe) && !(ispath(path, /obj/machinery/atmospherics/pipe/vent)) // VOREStation Add // Render an HTML link to select this pipe type /datum/pipe_recipe/pipe/Render(dispenser) @@ -141,25 +140,17 @@ var/global/list/all_pipe_recipes = null // Subtype for disposal pipes // /datum/pipe_recipe/disposal - icon = 'icons/obj/pipes/disposal.dmi' + var/pipe_type // pipe_type is one of the DISPOSAL_PIPE_ ptype constants. + var/subtype // subtype is one of the DISPOSAL_SORT_ constants. -/datum/pipe_recipe/disposal/New(var/label, var/path, var/state, dt=PIPE_DIRECTIONAL, var/state_mirror=0, var/sort=0) +/datum/pipe_recipe/disposal/New(var/label, var/ptype, var/state, dt=PIPE_DIRECTIONAL, var/sort=0) name = label icon_state = state - pipe_type = path + pipe_type = ptype dirtype = dt subtype = sort if (dirtype == PIPE_TRIN_M) - icon_state_m = state_mirror - -// Render an HTML link to select this pipe type -/datum/pipe_recipe/disposal/Render(dispenser) - var/dat = ..(dispenser) - - // Blah blah, add corner pipes because dispensers have no directional information. Look up for more info. - if(istype(dispenser, /obj/machinery/pipedispenser) && (dirtype == PIPE_BENDABLE)) - dat += "Bent [name]
" - return dat + icon_state_m = replacetext(state, "j1", "j2") /datum/pipe_recipe/disposal/Params() var/param = "dmake=[pipe_type]" diff --git a/code/game/machinery/pipe/pipelayer.dm b/code/game/machinery/pipe/pipelayer.dm index 366a351d6b..8b49989e61 100644 --- a/code/game/machinery/pipe/pipelayer.dm +++ b/code/game/machinery/pipe/pipelayer.dm @@ -42,15 +42,15 @@ ..() // Whenever we move, if enabled try and lay pipe -/obj/machinery/pipelayer/Move(new_turf,M_Dir) - ..() +/obj/machinery/pipelayer/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() if(on && a_dis) dismantleFloor(old_turf) - layPipe(old_turf, M_Dir, old_dir) + layPipe(old_turf, direction, old_dir) - old_turf = new_turf - old_dir = turn(M_Dir, 180) + old_turf = loc + old_dir = turn(direction, 180) /obj/machinery/pipelayer/attack_hand(mob/user as mob) if(..()) @@ -115,8 +115,8 @@ ..() /obj/machinery/pipelayer/examine(mob/user) - ..() - to_chat(user, "\The [src] has [metal] sheet\s, is set to produce [P_type_t], and auto-dismantling is [!a_dis?"de":""]activated.") + . = ..() + . += "[src] has [metal] sheet\s, is set to produce [P_type_t], and auto-dismantling is [!a_dis?"de":""]activated." /obj/machinery/pipelayer/proc/reset() on = 0 diff --git a/code/game/machinery/pointdefense.dm b/code/game/machinery/pointdefense.dm index 3ca0ed601e..f135bdd568 100644 --- a/code/game/machinery/pointdefense.dm +++ b/code/game/machinery/pointdefense.dm @@ -158,9 +158,9 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) underlays += I /obj/machinery/power/pointdefense/examine(mob/user) - ..() + . = ..() if(powernet) - to_chat(user, "It is connected to a power cable below.") + . += "It is connected to a power cable below." /obj/machinery/power/pointdefense/get_description_interaction() . = ..() @@ -268,6 +268,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) s.set_up(5, 1, src) s.start() visible_message("[src] sputters as browns out while attempting to fire.") + flick(src, "[initial(icon_state)]_off") return //We throw a laser but it doesnt have to hit for meteor to explode var/obj/item/projectile/beam/pointdefense/beam = new(get_turf(src)) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 1312c0cc3b..06acd97d0b 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -26,13 +26,13 @@ return /obj/machinery/recharger/examine(mob/user) - if(!..(user, 5)) - return + . = ..() - to_chat(user, "[charging ? "[charging]" : "Nothing"] is in [src].") - if(charging) - var/obj/item/weapon/cell/C = charging.get_cell() - to_chat(user, "Current charge: [C.charge] / [C.maxcharge]") + if(get_dist(user, src) <= 5) + . += "[charging ? "[charging]" : "Nothing"] is in [src]." + if(charging) + var/obj/item/weapon/cell/C = charging.get_cell() + . += "Current charge: [C.charge] / [C.maxcharge]" /obj/machinery/recharger/attackby(obj/item/weapon/G as obj, mob/user as mob) var/allowed = 0 diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 3f60e0ae07..75cc5b55cc 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -62,6 +62,9 @@ recharge_amount = cell.give(recharge_amount) use_power(recharge_amount / CELLRATE) + else + // Since external power is offline, draw operating current from the internal cell + cell.use(get_power_usage() * CELLRATE) if(icon_update_tick >= 10) icon_update_tick = 0 @@ -71,19 +74,6 @@ if(occupant || recharge_amount) update_icon() -//since the recharge station can still be on even with NOPOWER. Instead it draws from the internal cell. -/obj/machinery/recharge_station/auto_use_power() - if(!(stat & NOPOWER)) - return ..() - - if(!has_cell_power()) - return 0 - if(use_power == USE_POWER_IDLE) - cell.use(idle_power_usage * CELLRATE) - else if(use_power >= USE_POWER_ACTIVE) - cell.use(active_power_usage * CELLRATE) - return 1 - //Processes the occupant, drawing from the internal power cell if needed. /obj/machinery/recharge_station/proc/process_occupant() if(isrobot(occupant)) @@ -115,8 +105,8 @@ H.adjustBrainLoss(-(rand(1,3))) // Also recharge their internal battery. - if(H.isSynthetic() && H.nutrition < 450) - H.nutrition = min(H.nutrition+10, 450) + if(H.isSynthetic() && H.nutrition < 500) //VOREStation Edit + H.nutrition = min(H.nutrition+10, 500) //VOREStation Edit cell.use(7000/450*10) // And clear up radiation @@ -125,8 +115,8 @@ /obj/machinery/recharge_station/examine(mob/user) - ..(user) - to_chat(user, "The charge meter reads: [round(chargepercentage())]%") + . = ..() + . += "The charge meter reads: [round(chargepercentage())]%" /obj/machinery/recharge_station/proc/chargepercentage() if(!cell) diff --git a/code/game/machinery/seed_extractor.dm b/code/game/machinery/seed_extractor.dm index 1b9d89dc00..9977e765e9 100644 --- a/code/game/machinery/seed_extractor.dm +++ b/code/game/machinery/seed_extractor.dm @@ -1,7 +1,7 @@ /obj/machinery/seed_extractor name = "seed extractor" desc = "Extracts and bags seeds from produce." - icon = 'icons/obj/hydroponics_machines.dmi' + icon = 'icons/obj/hydroponics_machines_vr.dmi' //VOREStation Edit icon_state = "sextractor" density = 1 anchored = 1 diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index f45872c2d8..77a35d2829 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -29,13 +29,13 @@ set_light(0) /obj/machinery/space_heater/examine(mob/user) - ..(user) + . = ..() - to_chat(user, "The heater is [on ? "on" : "off"] and the hatch is [panel_open ? "open" : "closed"].") + . += "The heater is [on ? "on" : "off"] and the hatch is [panel_open ? "open" : "closed"]." if(panel_open) - to_chat(user, "The power cell is [cell ? "installed" : "missing"].") + . += "The power cell is [cell ? "installed" : "missing"]." else - to_chat(user, "The charge meter reads [cell ? round(cell.percent(),1) : 0]%") + . += "The charge meter reads [cell ? round(cell.percent(),1) : 0]%" return /obj/machinery/space_heater/powered() diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 0780b5905a..14b85a7861 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -148,9 +148,9 @@ return 0 /obj/machinery/status_display/examine(mob/user) - . = ..(user) + . = ..() if(mode != STATUS_DISPLAY_BLANK && mode != STATUS_DISPLAY_ALERT) - to_chat(user, "The display says:
\t[sanitize(message1)]
\t[sanitize(message2)]") + . += "The display says:
\t[sanitize(message1)]
\t[sanitize(message2)]" /obj/machinery/status_display/proc/set_message(m1, m2) if(m1) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 27ce3db4f1..5f3b462452 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -789,7 +789,7 @@ if(shock(user, 100)) return - usr.set_machine(src) + user.set_machine(src) var/dat = "Suit Cycler Interface" @@ -798,7 +798,7 @@ else if(locked) dat += "
The [model_text ? "[model_text] " : ""]suit cycler is currently locked. Please contact your system administrator." - if(allowed(usr)) + if(allowed(user)) dat += "
\[unlock unit\]" else dat += "

Suit cycler

" @@ -972,7 +972,7 @@ occupant.loc = get_turf(occupant) occupant = null - add_fingerprint(usr) + add_fingerprint(user) updateUsrDialog() update_icon() diff --git a/code/game/machinery/supplybeacon.dm b/code/game/machinery/supplybeacon.dm index df40ba1a7d..20be7d52ca 100644 --- a/code/game/machinery/supplybeacon.dm +++ b/code/game/machinery/supplybeacon.dm @@ -80,7 +80,7 @@ return set_light(3, 3, "#00CCAA") icon_state = "beacon_active" - use_power = USE_POWER_IDLE + update_use_power(USE_POWER_IDLE) if(user) to_chat(user, "You activate the beacon. The supply drop will be dispatched soon.") /obj/machinery/power/supply_beacon/proc/deactivate(var/mob/user, var/permanent) @@ -90,7 +90,7 @@ else icon_state = "beacon" set_light(0) - use_power = USE_POWER_OFF + update_use_power(USE_POWER_OFF) target_drop_time = null if(user) to_chat(user, "You deactivate the beacon.") diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index f392eb5218..165df28298 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -12,7 +12,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /obj/machinery/telecomms/broadcaster name = "Subspace Broadcaster" - icon = 'icons/obj/stationobjs.dmi' + //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "broadcaster" desc = "A dish-shaped machine used to broadcast processed subspace signals." density = 1 @@ -86,8 +86,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept signal.data["name"], signal.data["job"], signal.data["realname"], signal.data["vname"], DATA_NORMAL, signal.data["compression"], signal.data["level"], signal.frequency, - signal.data["verb"], signal.data["language"], forced_radios) - + signal.data["verb"], forced_radios) /** #### - Simple Broadcast - #### **/ @@ -113,7 +112,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept signal.data["name"], signal.data["job"], signal.data["realname"], signal.data["vname"], DATA_FAKE, signal.data["compression"], signal.data["level"], signal.frequency, - signal.data["verb"], signal.data["language"], forced_radios) + signal.data["verb"], forced_radios) if(!message_delay) message_delay = 1 @@ -139,8 +138,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /obj/machinery/telecomms/allinone name = "Telecommunications Mainframe" - icon = 'icons/obj/stationobjs.dmi' - icon_state = "comm_server" + //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon + icon_state = "allinone" //VOREStation Edit desc = "A compact machine used for portable subspace telecommuniations processing." density = 1 use_power = USE_POWER_IDLE @@ -272,7 +271,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept signal.data["name"], signal.data["job"], signal.data["realname"], signal.data["vname"], DATA_NORMAL, signal.data["compression"], list(0), connection.frequency, - signal.data["verb"], signal.data["language"], forced_radios) + signal.data["verb"], forced_radios) else if(intercept) Broadcast_Message(signal.data["connection"], signal.data["mob"], @@ -281,7 +280,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept signal.data["name"], signal.data["job"], signal.data["realname"], signal.data["vname"], DATA_ANTAG, signal.data["compression"], list(0), connection.frequency, - signal.data["verb"], signal.data["language"], forced_radios) + signal.data["verb"], forced_radios) /** @@ -341,11 +340,10 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept **/ /proc/Broadcast_Message(var/datum/radio_frequency/connection, var/mob/M, - var/vmask, var/vmessage, var/obj/item/device/radio/radio, - var/message, var/name, var/job, var/realname, var/vname, + var/vmask, var/list/vmessage_pieces, var/obj/item/device/radio/radio, + var/list/message_pieces, var/name, var/job, var/realname, var/vname, var/data, var/compression, var/list/level, var/freq, var/verbage = "says", - var/datum/language/speaking = null, var/list/forced_radios) - + var/list/forced_radios) /* ###### Prepare the radio connection ###### */ @@ -355,7 +353,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept for(var/obj/item/device/radio/R in forced_radios) //Cursory check to ensure they are 'on' and stuff - if(R.receive_range(display_freq, list(0))) + if(R.receive_range(display_freq, list(0)) > -1) radios |= R // --- Broadcast only to intercom devices --- @@ -412,7 +410,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept for (var/mob/R in receive) /* --- Loop through the receivers and categorize them --- */ - if (!R.is_preference_enabled(/datum/client_preference/holder/hear_radio)) + if(!R.is_preference_enabled(/datum/client_preference/holder/hear_radio)) continue if(istype(R, /mob/new_player)) // we don't want new players to hear messages. rare but generates runtimes. @@ -429,10 +427,10 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept // --- Can understand the speech --- - if (!M || R.say_understands(M)) + if(!M || R.say_understands(M)) // - Not human or wearing a voice mask - - if (!M || !ishuman(M) || vmask) + if(!M || !ishuman(M) || vmask) heard_masked += R // - Human and not wearing voice mask - @@ -443,7 +441,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept else // - The speaker has a prespecified "voice message" to display if not understood - - if (vmessage) + if(vmessage_pieces) heard_voice += R // - Just display a garbled message - @@ -452,7 +450,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* ###### Begin formatting and sending the message ###### */ - if (length(heard_masked) || length(heard_normal) || length(heard_voice) || length(heard_garbled) || length(heard_gibberish)) + if(length(heard_masked) || length(heard_normal) || length(heard_voice) || length(heard_garbled) || length(heard_gibberish)) /* --- Some miscellaneous variables to format the string output --- */ var/freq_text = get_frequency_name(display_freq) @@ -468,12 +466,11 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept // --- Filter the message; place it in quotes apply a verb --- - var/quotedmsg = null if(M) - quotedmsg = M.say_quote(message) + quotedmsg = "[M.say_quote(multilingual_to_message(message_pieces))], \"[multilingual_to_message(message_pieces)]\"" else - quotedmsg = "says, \"[message]\"" + quotedmsg = "says, \"[multilingual_to_message(message_pieces)]\"" // --- This following recording is intended for research and feedback in the use of department radio channels --- @@ -514,44 +511,36 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept //End of research and feedback code. /* ###### Send the message ###### */ - - /* --- Process all the mobs that heard a masked voice (understood) --- */ - - if (length(heard_masked)) + if(length(heard_masked)) for (var/mob/R in heard_masked) - R.hear_radio(message,verbage, speaking, part_a, part_b, part_c, M, 0, name) + R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, M, 0, name) /* --- Process all the mobs that heard the voice normally (understood) --- */ - - if (length(heard_normal)) + if(length(heard_normal)) for (var/mob/R in heard_normal) - R.hear_radio(message, verbage, speaking, part_a, part_b, part_c, M, 0, realname) + R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, M, 0, realname) /* --- Process all the mobs that heard the voice normally (did not understand) --- */ - - if (length(heard_voice)) + if(length(heard_voice)) for (var/mob/R in heard_voice) - R.hear_radio(message,verbage, speaking, part_a, part_b, part_c, M,0, vname) + R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, M,0, vname) /* --- Process all the mobs that heard a garbled voice (did not understand) --- */ // Displays garbled message (ie "f*c* **u, **i*er!") - - if (length(heard_garbled)) + if(length(heard_garbled)) for (var/mob/R in heard_garbled) - R.hear_radio(message, verbage, speaking, part_a, part_b, part_c, M, 1, vname) - + R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, M, 1, vname) /* --- Complete gibberish. Usually happens when there's a compressed message --- */ - - if (length(heard_gibberish)) + if(length(heard_gibberish)) for (var/mob/R in heard_gibberish) - R.hear_radio(message, verbage, speaking, part_a, part_b, part_c, M, 1) + R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, M, 1) return 1 -/proc/Broadcast_SimpleMessage(var/source, var/frequency, var/text, var/data, var/mob/M, var/compression, var/level, var/list/forced_radios) - +/proc/Broadcast_SimpleMessage(var/source, var/frequency, list/message_pieces, var/data, var/mob/M, var/compression, var/level, var/list/forced_radios) + var/text = multilingual_to_message(message_pieces) /* ###### Prepare the radio connection ###### */ if(!M) @@ -633,7 +622,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept // --- Can understand the speech --- - if (R.say_understands(M)) + if(R.say_understands(M)) heard_normal += R @@ -646,7 +635,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* ###### Begin formatting and sending the message ###### */ - if (length(heard_normal) || length(heard_garbled) || length(heard_gibberish)) + if(length(heard_normal) || length(heard_garbled) || length(heard_gibberish)) /* --- Some miscellaneous variables to format the string output --- */ var/part_a = "" // goes in the actual output @@ -701,7 +690,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* --- Process all the mobs that heard the voice normally (understood) --- */ - if (length(heard_normal)) + if(length(heard_normal)) var/rendered = "[part_a][source][part_b]\"[text]\"[part_c]" for (var/mob/R in heard_normal) @@ -710,7 +699,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* --- Process all the mobs that heard a garbled voice (did not understand) --- */ // Displays garbled message (ie "f*c* **u, **i*er!") - if (length(heard_garbled)) + if(length(heard_garbled)) var/quotedmsg = "\"[stars(text)]\"" var/rendered = "[part_a][source][part_b][quotedmsg][part_c]" @@ -720,7 +709,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* --- Complete gibberish. Usually happens when there's a compressed message --- */ - if (length(heard_gibberish)) + if(length(heard_gibberish)) var/quotedmsg = "\"[Gibberish(text, compression + 50)]\"" var/rendered = "[part_a][Gibberish(source, compression + 50)][part_b][quotedmsg][part_c]" diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 5ee974e571..050502c420 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -229,11 +229,11 @@ if(href_list["range_down"]) if(overmap_range > overmap_range_min) overmap_range-- - idle_power_usage = initial(idle_power_usage)**(overmap_range+1) + update_idle_power_usage(initial(idle_power_usage)**(overmap_range+1)) if(href_list["range_up"]) if(overmap_range < overmap_range_max) overmap_range++ - idle_power_usage = initial(idle_power_usage)**(overmap_range+1) + update_idle_power_usage(initial(idle_power_usage)**(overmap_range+1)) // RECEIVER /obj/machinery/telecomms/receiver/Options_Menu() @@ -245,11 +245,11 @@ if(href_list["range_down"]) if(overmap_range > overmap_range_min) overmap_range-- - idle_power_usage = initial(idle_power_usage)**(overmap_range+1) + update_idle_power_usage(initial(idle_power_usage)**(overmap_range+1)) if(href_list["range_up"]) if(overmap_range < overmap_range_max) overmap_range++ - idle_power_usage = initial(idle_power_usage)**(overmap_range+1) + update_idle_power_usage(initial(idle_power_usage)**(overmap_range+1)) /obj/machinery/telecomms/Topic(href, href_list) diff --git a/code/game/machinery/telecomms/presets_vr.dm b/code/game/machinery/telecomms/presets_vr.dm index 01a07a5f5e..3b252f92ce 100644 --- a/code/game/machinery/telecomms/presets_vr.dm +++ b/code/game/machinery/telecomms/presets_vr.dm @@ -4,5 +4,6 @@ produces_heat = 0 autolinkers = list("hb_relay") -/obj/machinery/telecomms/relay/proc/reset_z() - listening_level = z +/obj/machinery/telecomms/relay/onTransitZ(oldz, newz) + . = ..() + listening_level = newz diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 38f1adbdfc..1d765375be 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -16,6 +16,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() /obj/machinery/telecomms + icon = 'icons/obj/stationobjs_vr.dmi' //VOREStation Add var/list/links = list() // list of machines this machine is linked to var/traffic = 0 // value increases as traffic increases var/netspeed = 5 // how much traffic to lose per tick (50 gigabytes/second * netspeed) @@ -246,7 +247,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() /obj/machinery/telecomms/receiver name = "Subspace Receiver" - icon = 'icons/obj/stationobjs.dmi' + //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "broadcast receiver" desc = "This machine has a dish-like shape and green lights. It is designed to detect and process subspace radio activity." density = 1 @@ -340,7 +341,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() /obj/machinery/telecomms/hub name = "Telecommunication Hub" - icon = 'icons/obj/stationobjs.dmi' + //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "hub" desc = "A mighty piece of hardware used to send/receive massive amounts of data." density = 1 @@ -351,11 +352,9 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() circuit = /obj/item/weapon/circuitboard/telecomms/hub long_range_link = 1 netspeed = 40 - var/list/telecomms_map /obj/machinery/telecomms/hub/Initialize() . = ..() - LAZYINITLIST(telecomms_map) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src) component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src) @@ -364,20 +363,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() component_parts += new /obj/item/stack/cable_coil(src, 2) RefreshParts() -/obj/machinery/telecomms/hub/process() - . = ..() - telecomms_map.Cut() - - if(!on) - return - - for(var/M in links) - if(istype(M,/obj/machinery/telecomms/receiver) || istype(M,/obj/machinery/telecomms/relay)) - var/obj/machinery/telecomms/R = M - if(!R.on) - continue - telecomms_map |= R.listening_level - /obj/machinery/telecomms/hub/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) if(is_freq_listening(signal)) if(istype(machine_from, /obj/machinery/telecomms/receiver)) @@ -399,7 +384,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() /obj/machinery/telecomms/relay name = "Telecommunication Relay" - icon = 'icons/obj/stationobjs.dmi' + //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "relay" desc = "A mighty piece of hardware used to send massive amounts of data far away." density = 1 @@ -465,7 +450,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() /obj/machinery/telecomms/bus name = "Bus Mainframe" - icon = 'icons/obj/stationobjs.dmi' + //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "bus" desc = "A mighty piece of hardware used to send massive amounts of data quickly." density = 1 @@ -526,7 +511,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() /obj/machinery/telecomms/processor name = "Processor Unit" - icon = 'icons/obj/stationobjs.dmi' + //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "processor" desc = "This machine is used to process large quantities of information." density = 1 @@ -578,7 +563,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() /obj/machinery/telecomms/server name = "Telecommunication Server" - icon = 'icons/obj/stationobjs.dmi' + //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "comm_server" desc = "A machine used to store data and network statistics." density = 1 @@ -601,7 +586,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() var/encryption = "null" // encryption key: ie "password" var/salt = "null" // encryption salt: ie "123comsat" // would add up to md5("password123comsat") - var/language = "human" var/obj/item/device/radio/headset/server_radio = null /obj/machinery/telecomms/server/New() @@ -642,12 +626,11 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() log.parameters["mobtype"] = signal.data["mobtype"] log.parameters["job"] = signal.data["job"] log.parameters["key"] = signal.data["key"] - log.parameters["vmessage"] = signal.data["message"] + log.parameters["vmessage"] = multilingual_to_message(signal.data["message"]) log.parameters["vname"] = signal.data["vname"] - log.parameters["message"] = signal.data["message"] + log.parameters["message"] = multilingual_to_message(signal.data["message"]) log.parameters["name"] = signal.data["name"] log.parameters["realname"] = signal.data["realname"] - log.parameters["language"] = signal.data["language"] var/race = "unknown" if(ishuman(M)) @@ -676,7 +659,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() // If the signal is still compressed, make the log entry gibberish if(signal.data["compression"] > 0) - log.parameters["message"] = Gibberish(signal.data["message"], signal.data["compression"] + 50) + log.parameters["message"] = Gibberish(multilingual_to_message(signal.data["message"]), signal.data["compression"] + 50) log.parameters["job"] = Gibberish(signal.data["job"], signal.data["compression"] + 50) log.parameters["name"] = Gibberish(signal.data["name"], signal.data["compression"] + 50) log.parameters["realname"] = Gibberish(signal.data["realname"], signal.data["compression"] + 50) @@ -752,17 +735,10 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() return FALSE //Items don't have a Z when inside an object or mob - var/turf/src_turf = get_turf(A) - var/turf/dst_turf = get_turf(B) + var/turf/src_z = get_z(A) + var/turf/dst_z = get_z(B) //Nullspace, probably. - if(!src_turf || !dst_turf) - return FALSE - - var/src_z = src_turf.z - var/dst_z = dst_turf.z - - //Mysterious! if(!src_z || !dst_z) return FALSE @@ -770,11 +746,4 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() if(ad_hoc && src_z == dst_z) return TRUE - //Let's look at hubs and see what we got. - var/can_comm = FALSE - for(var/obj/machinery/telecomms/hub/H in telecomms_list) - if((src_z in H.telecomms_map) && (dst_z in H.telecomms_map)) - can_comm = TRUE - break - - return can_comm + return src_z in using_map.get_map_levels(dst_z) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index bfc8e308a3..c27de5c31c 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -168,6 +168,7 @@ /obj/machinery/teleport/hub name = "teleporter hub" desc = "It's the hub of a teleporting machine." + icon = 'icons/obj/teleporter_vr.dmi' //VOREStation Add icon_state = "tele0" dir = 4 var/accurate = 0 @@ -323,6 +324,7 @@ /obj/machinery/teleport/station name = "station" desc = "It's the station thingy of a teleport thingy." //seriously, wtf. + icon = 'icons/obj/teleporter_vr.dmi' //VOREStation Add icon_state = "controller" dir = 4 var/active = 0 @@ -401,6 +403,7 @@ O.show_message("Test firing!", 2) com.teleport() use_power(5000) + flick(src, "controller-c") //VOREStation Add spawn(30) active=0 diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 6537b70dfa..7cfef19b80 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -949,7 +949,7 @@ /obj/item/seeds/cabbageseed = 3,/obj/item/seeds/grapeseed = 3,/obj/item/seeds/pumpkinseed = 3,/obj/item/seeds/cherryseed = 3,/obj/item/seeds/plastiseed = 3,/obj/item/seeds/riceseed = 3) contraband = list(/obj/item/seeds/amanitamycelium = 2,/obj/item/seeds/glowshroom = 2,/obj/item/seeds/libertymycelium = 2,/obj/item/seeds/mtearseed = 2, /obj/item/seeds/nettleseed = 2,/obj/item/seeds/reishimycelium = 2,/obj/item/seeds/reishimycelium = 2,/obj/item/seeds/shandseed = 2,) - premium = list(/obj/item/toy/waterflower = 1) + premium = list(/obj/item/weapon/reagent_containers/spray/waterflower = 1) /** * Populate hydroseeds product_records @@ -1014,7 +1014,8 @@ /obj/item/weapon/storage/toolbox/lunchbox/mars = 3, /obj/item/weapon/storage/toolbox/lunchbox/cti = 3, /obj/item/weapon/storage/toolbox/lunchbox/nymph = 3, - /obj/item/weapon/storage/toolbox/lunchbox/syndicate = 3) + /obj/item/weapon/storage/toolbox/lunchbox/syndicate = 3, + /obj/item/trash/bowl = 10) //VOREStation Add contraband = list(/obj/item/weapon/material/knife/butch = 2) /obj/machinery/vending/sovietsoda @@ -1124,7 +1125,17 @@ /obj/item/toy/plushie/carp = 1, /obj/item/toy/plushie/deer = 1, /obj/item/toy/plushie/tabby_cat = 1, - /obj/item/device/threadneedle = 3) + /obj/item/device/threadneedle = 3, + //VOREStation Add Start + /obj/item/toy/plushie/lizardplushie/kobold = 1, + /obj/item/toy/plushie/slimeplushie = 1, + /obj/item/toy/plushie/box = 1, + /obj/item/toy/plushie/borgplushie = 1, + /obj/item/toy/plushie/borgplushie/medihound = 1, + /obj/item/toy/plushie/borgplushie/scrubpuppy = 1, + /obj/item/toy/plushie/foxbear = 1, + /obj/item/toy/plushie/nukeplushie = 1) + //VOREStation Add End premium = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne = 1, /obj/item/weapon/storage/trinketbox = 2) prices = list(/obj/item/weapon/storage/fancy/heartbox = 15, @@ -1153,7 +1164,17 @@ /obj/item/toy/plushie/carp = 50, /obj/item/toy/plushie/deer = 50, /obj/item/toy/plushie/tabby_cat = 50, - /obj/item/device/threadneedle = 2) + /obj/item/device/threadneedle = 2, + //VOREStation Add Start + /obj/item/toy/plushie/lizardplushie/kobold = 50, + /obj/item/toy/plushie/slimeplushie = 50, + /obj/item/toy/plushie/box = 50, + /obj/item/toy/plushie/borgplushie = 50, + /obj/item/toy/plushie/borgplushie/medihound = 50, + /obj/item/toy/plushie/borgplushie/scrubpuppy = 50, + /obj/item/toy/plushie/foxbear = 50, + /obj/item/toy/plushie/nukeplushie = 50) + //VOREStation Add End /obj/machinery/vending/fishing name = "Loot Trawler" diff --git a/code/game/machinery/vending_vr.dm b/code/game/machinery/vending_vr.dm index ed06132e7f..892bb0bf48 100644 --- a/code/game/machinery/vending_vr.dm +++ b/code/game/machinery/vending_vr.dm @@ -22,35 +22,6 @@ /obj/item/clothing/glasses/omnihud/med = 4, /obj/item/device/glasses_kit = 1, /obj/item/weapon/storage/quickdraw/syringe_case = 4) ..() -//Custom vendors -/obj/machinery/vending/dinnerware - name = "Dinnerware" - desc = "A kitchen and restaurant equipment vendor." - product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..." - icon_state = "dinnerware" - products = list( - /obj/item/weapon/tray = 8, - /obj/item/weapon/material/kitchen/utensil/fork = 6, - /obj/item/weapon/material/knife/plastic = 6, - /obj/item/weapon/material/kitchen/utensil/spoon = 6, - /obj/item/weapon/material/knife = 3, - /obj/item/weapon/material/kitchen/rollingpin = 2, - /obj/item/weapon/reagent_containers/food/drinks/glass2/square = 8, - /obj/item/weapon/reagent_containers/food/drinks/glass2/shake = 8, - /obj/item/weapon/glass_extra/stick = 15, - /obj/item/weapon/glass_extra/straw = 15, - /obj/item/clothing/suit/chef/classic = 2, - /obj/item/weapon/storage/toolbox/lunchbox = 3, - /obj/item/weapon/storage/toolbox/lunchbox/heart = 3, - /obj/item/weapon/storage/toolbox/lunchbox/cat = 3, - /obj/item/weapon/storage/toolbox/lunchbox/nt = 3, - /obj/item/weapon/storage/toolbox/lunchbox/mars = 3, - /obj/item/weapon/storage/toolbox/lunchbox/cti = 3, - /obj/item/weapon/storage/toolbox/lunchbox/nymph = 3, - /obj/item/weapon/storage/toolbox/lunchbox/syndicate = 3, - /obj/item/trash/bowl = 30) - contraband = list(/obj/item/weapon/material/knife/butch = 2) - //I want this not just as part of the zoo. ;v /obj/machinery/vending/food name = "Food-O-Mat" @@ -136,6 +107,7 @@ product_ads = "The true life juice!;Vampire's choice!;Home-grown blood only!;Donate today, be saved tomorrow!;Approved by Zeng-Hu Pharmaceuticals Incorporated!; Curse you, Vey-Med artificial blood!" icon = 'icons/obj/vending_vr.dmi' icon_state = "blood" + vend_delay = 7 idle_power_usage = 211 req_access = list(access_medical) products = list(/obj/item/weapon/reagent_containers/blood/prelabeled/APlus = 3,/obj/item/weapon/reagent_containers/blood/prelabeled/AMinus = 3, @@ -634,6 +606,9 @@ /obj/item/clothing/under/dress/sailordress = 5, /obj/item/clothing/under/dress/sari = 5, /obj/item/clothing/under/dress/sari/green = 5, + /obj/item/clothing/under/dress/qipao = 5, + /obj/item/clothing/under/dress/qipao/red = 5, + /obj/item/clothing/under/dress/qipao/white = 5, /obj/item/clothing/under/shorts/red = 5, /obj/item/clothing/under/shorts/green = 5, /obj/item/clothing/under/shorts/blue = 5, @@ -801,6 +776,9 @@ /obj/item/clothing/under/dress/sailordress = 100, /obj/item/clothing/under/dress/sari = 100, /obj/item/clothing/under/dress/sari/green = 100, + /obj/item/clothing/under/dress/qipao = 100, + /obj/item/clothing/under/dress/qipao/red = 100, + /obj/item/clothing/under/dress/qipao/white = 100, /obj/item/clothing/under/shorts/red = 100, /obj/item/clothing/under/shorts/green = 100, /obj/item/clothing/under/shorts/blue = 100, diff --git a/code/game/machinery/vitals_monitor.dm b/code/game/machinery/vitals_monitor.dm new file mode 100644 index 0000000000..a26c3ff706 --- /dev/null +++ b/code/game/machinery/vitals_monitor.dm @@ -0,0 +1,149 @@ +/obj/item/weapon/circuitboard/machine/vitals_monitor + name = "circuit board (vitals monitor)" + build_path = /obj/machinery/vitals_monitor + board_type = new /datum/frame/frame_types/machine + origin_tech = list(TECH_DATA = 3, TECH_BIO = 4, TECH_ENGINEERING = 2) + req_components = list( + /obj/item/weapon/stock_parts/console_screen = 1, + /obj/item/weapon/cell/high = 1 + ) + +/obj/machinery/vitals_monitor + name = "vitals monitor" + desc = "A bulky yet mobile machine, showing some odd graphs." + icon = 'icons/obj/heartmonitor.dmi' + icon_state = "base" + anchored = FALSE + power_channel = EQUIP + idle_power_usage = 10 + active_power_usage = 100 + + var/mob/living/carbon/human/victim + var/beep = TRUE + +/obj/machinery/vitals_monitor/Initialize() + . = ..() + default_apply_parts() + +/obj/machinery/vitals_monitor/Destroy() + victim = null + . = ..() + +/obj/machinery/vitals_monitor/examine(mob/user) + . = ..() + if(victim) + if(stat & NOPOWER) + . += "It's unpowered." + return + . += "Vitals of [victim]:" + . += "Pulse: [victim.get_pulse(GETPULSE_TOOL)]" + + var/brain_activity = "none" + var/breathing = "none" + + if(victim.stat != DEAD && !(victim.status_flags & FAKEDEATH)) + var/obj/item/organ/internal/brain/brain = victim.internal_organs_by_name[O_BRAIN] + if(istype(brain)) + if(victim.getBrainLoss()) + brain_activity = "anomalous" + else if(victim.stat == UNCONSCIOUS) + brain_activity = "weak" + else + brain_activity = "normal" + + var/obj/item/organ/internal/lungs/lungs = victim.internal_organs_by_name[O_LUNGS] + if(istype(lungs)) + var/oxyloss = victim.getOxyLoss() + if(oxyloss > 50) + breathing = "erratic" + else if(oxyloss > 10) + breathing = "shallow" + else + breathing = "normal" + + . += "Brain activity: [brain_activity]" + . += "Breathing: [breathing]" + +/obj/machinery/vitals_monitor/process() + if(QDELETED(victim)) + victim = null + update_icon() + update_use_power(USE_POWER_IDLE) + if(victim && !Adjacent(victim)) + victim = null + update_icon() + update_use_power(USE_POWER_IDLE) + if(victim) + update_icon() + if(beep && victim && victim.pulse) + playsound(src, 'sound/machines/quiet_beep.ogg') + +/obj/machinery/vitals_monitor/MouseDrop(over_object, src_location, over_location) + if(!CanMouseDrop(over_object)) + return + if(victim) + victim = null + update_use_power(USE_POWER_IDLE) + else if(ishuman(over_object)) + victim = over_object + update_use_power(USE_POWER_ACTIVE) + visible_message("\The [src] is now showing data for [victim].") + +/obj/machinery/vitals_monitor/update_icon() + cut_overlays() + if(stat & NOPOWER) + return + add_overlay("screen") + + if(!victim) + return + + switch(victim.pulse) + if(PULSE_NONE) + add_overlay("pulse_flatline") + add_overlay("pulse_warning") + if(PULSE_SLOW, PULSE_NORM,) + add_overlay("pulse_normal") + if(PULSE_FAST, PULSE_2FAST) + add_overlay("pulse_veryfast") + if(PULSE_THREADY) + add_overlay("pulse_thready") + add_overlay("pulse_warning") + + var/obj/item/organ/internal/brain/brain = victim.internal_organs_by_name[O_BRAIN] + if(istype(brain) && victim.stat != DEAD && !(victim.status_flags & FAKEDEATH)) + if(victim.getBrainLoss()) + add_overlay("brain_verybad") + add_overlay("brain_warning") + else if(victim.stat == UNCONSCIOUS) + add_overlay("brain_bad") + else + add_overlay("brain_ok") + else + add_overlay("brain_warning") + + var/obj/item/organ/internal/lungs/lungs = victim.internal_organs_by_name[O_LUNGS] + if(istype(lungs) && victim.stat != DEAD && !(victim.status_flags & FAKEDEATH)) + var/oxyloss = victim.getOxyLoss() + if(oxyloss > 50) + add_overlay("breathing_shallow") + add_overlay("breathing_warning") + else if(oxyloss > 10) + add_overlay("breathing_shallow") + else + add_overlay("breathing_normal") + else + add_overlay("breathing_warning") + +/obj/machinery/vitals_monitor/verb/toggle_beep() + set name = "Toggle Monitor Beeping" + set category = "Object" + set src in view(1) + + var/mob/user = usr + if(!istype(user)) + return + + if(CanInteract(user, physical_state)) + beep = !beep + to_chat(user, "You turn the sound on \the [src] [beep ? "on" : "off"].") diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index fd46233390..2a6b90cdc6 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -1,8 +1,8 @@ /obj/machinery/washing_machine name = "Washing Machine" desc = "Not a hiding place." - icon = 'icons/obj/machines/washing_machine.dmi' - icon_state = "wm_10" + icon = 'icons/obj/machines/washing_machine_vr.dmi' //VOREStation Edit + icon_state = "wm_1" //VOREStation Edit density = 1 anchored = 1.0 clicksound = "button" @@ -85,7 +85,12 @@ usr.loc = src.loc /obj/machinery/washing_machine/update_icon() - icon_state = "wm_[state][panel_open]" + //VOREStation Edit + cut_overlays() + icon_state = "wm_[state]" + if(panel_open) + add_overlay("panel") + //VOREStation Edit End /obj/machinery/washing_machine/attackby(obj/item/weapon/W as obj, mob/user as mob) if(state == 2 && washing.len < 1) diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index b58956579a..b5d3351b21 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -119,134 +119,6 @@ melee_can_hit = 1 return -/* -/obj/mecha/combat/proc/mega_shake(target) - if(!istype(target, /obj) && !istype(target, /mob)) return - if(istype(target, /mob)) - var/mob/M = target - M.make_dizzy(3) - M.adjustBruteLoss(1) - M.updatehealth() - for (var/mob/V in viewers(src)) - V.show_message("[src.name] shakes [M] like a rag doll.") - return -*/ - -/* - if(energy>0 && can_move) - if(step(src,direction)) - can_move = 0 - spawn(step_in) can_move = 1 - if(overload) - energy = energy-2 - health-- - else - energy-- - return 1 - - return 0 -*/ -/* -/obj/mecha/combat/hear_talk(mob/M as mob, text) - ..() - if(am && M==occupant) - if(findtext(text,"")) - sam() - return - -/obj/mecha/combat/proc/sam() - if(am) - var/window = {" - - - - - -
-
- - -
-
- - - "} - occupant << browse(window, "window=sam;size=800x600;") - onclose(occupant, "sam", src) - return -*/ /obj/mecha/combat/moved_inside(var/mob/living/carbon/human/H as mob) if(..()) if(H.client) @@ -275,10 +147,3 @@ if(top_filter.get("close")) am = null return - /* - if(top_filter.get("saminput")) - if(md5(top_filter.get("saminput")) == am) - occupant_message("From the lies of the Antipath, Circuit preserve us.") - am = null - return - */ diff --git a/code/game/mecha/combat/fighter.dm b/code/game/mecha/combat/fighter.dm index 171c96395e..5b04451dce 100644 --- a/code/game/mecha/combat/fighter.dm +++ b/code/game/mecha/combat/fighter.dm @@ -8,7 +8,7 @@ var/stabilization_enabled = TRUE //If our anti-space-drift is on var/ground_capable = FALSE //If we can fly over normal turfs and not just space - icon = 'icons/mecha/fighters64x64.dmi' + icon = 'icons/mecha/fighters64x64.dmi' //See ATTRIBUTIONS.md for details on license icon_state = "" initial_icon = "" @@ -208,16 +208,6 @@ else who << sound('sound/mecha/fighter_entered.ogg',volume=50) -////////////// Equipment ////////////// - -// For 64x64 fighters -/obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64 - shield_type = /obj/item/shield_projector/rectangle/mecha/fighter64 -/obj/item/shield_projector/rectangle/mecha/fighter64 - shift_x = 16 - shift_y = 16 - - ////////////// Gunpod ////////////// /obj/mecha/combat/fighter/gunpod @@ -316,7 +306,7 @@ . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64 + ME = new /obj/item/mecha_parts/mecha_equipment/omni_shield ME.attach(src) /obj/effect/decal/mecha_wreckage/baron diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm index 8f72de5f51..48394f47f4 100644 --- a/code/game/mecha/combat/phazon.dm +++ b/code/game/mecha/combat/phazon.dm @@ -18,6 +18,7 @@ internal_damage_threshold = 25 force = 15 var/phasing = 0 + var/can_phase = TRUE var/phasing_energy_drain = 200 max_equip = 4 @@ -38,13 +39,13 @@ /obj/mecha/combat/phazon/Bump(var/atom/obstacle) if(phasing && get_charge()>=phasing_energy_drain) spawn() - if(can_move) - can_move = 0 + if(can_phase) + can_phase = FALSE flick("[initial_icon]-phase", src) src.loc = get_step(src,src.dir) src.use_power(phasing_energy_drain) sleep(step_in*3) - can_move = 1 + can_phase = TRUE else . = ..() return diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index c031e0941a..56a2169b06 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -38,8 +38,8 @@ return 0 /obj/item/mecha_parts/mecha_equipment/examine(mob/user) - ..() - to_chat(user, "\The [src] will fill [equip_type?"a [equip_type]":"any"] slot.") + . = ..() + . += "[src] will fill [equip_type?"a [equip_type]":"any"] slot." /obj/item/mecha_parts/mecha_equipment/New() ..() diff --git a/code/game/mecha/equipment/tools/energy_relay.dm b/code/game/mecha/equipment/tools/energy_relay.dm index d6917a0de1..0e02f927e4 100644 --- a/code/game/mecha/equipment/tools/energy_relay.dm +++ b/code/game/mecha/equipment/tools/energy_relay.dm @@ -111,5 +111,5 @@ if(pow_chan) var/delta = min(12, ER.chassis.cell.maxcharge-cur_charge) ER.chassis.give_power(delta) - A.use_power(delta*ER.coeff, pow_chan) + A.use_power_oneoff(delta*ER.coeff, pow_chan) return \ No newline at end of file diff --git a/code/game/mecha/equipment/tools/extinguisher.dm b/code/game/mecha/equipment/tools/extinguisher.dm index d383573017..4ed6735b62 100644 --- a/code/game/mecha/equipment/tools/extinguisher.dm +++ b/code/game/mecha/equipment/tools/extinguisher.dm @@ -14,14 +14,14 @@ . = ..() reagents = new/datum/reagents(max_water) reagents.my_atom = src - reagents.add_reagent("water", max_water) + reagents.add_reagent("firefoam", max_water) //VOREStation Edit /obj/item/mecha_parts/mecha_equipment/tool/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch. if(!action_checks(target) || get_dist(chassis, target)>3) return if(get_dist(chassis, target)>2) return set_ready_state(0) if(do_after_cooldown(target)) - if( istype(target, /obj/structure/reagent_dispensers/watertank) && get_dist(chassis,target) <= 1) + if( istype(target, /obj/structure/reagent_dispensers) && get_dist(chassis,target) <= 1) //VOREStation Edit var/obj/o = target var/amount = o.reagents.trans_to_obj(src, 200) occupant_message("[amount] units transferred into internal tank.") diff --git a/code/game/mecha/equipment/tools/shield_omni.dm b/code/game/mecha/equipment/tools/shield_omni.dm index 8088cf296a..1d230c4deb 100644 --- a/code/game/mecha/equipment/tools/shield_omni.dm +++ b/code/game/mecha/equipment/tools/shield_omni.dm @@ -75,6 +75,14 @@ . = ..() my_mech = loc GLOB.moved_event.register(my_mech, src, /obj/item/shield_projector/proc/update_shield_positions) + update_shift(my_mech) + +/obj/item/shield_projector/rectangle/mecha/proc/update_shift(atom/movable/mech) + var/icon/my_icon = icon(mech.icon) //holy heck + var/x_dif = (my_icon.Width() - world.icon_size) / 2 + shift_x = round(x_dif, 1) + var/y_dif = (my_icon.Height() - world.icon_size) / 2 + shift_y = round(y_dif, 1) /obj/item/shield_projector/rectangle/mecha/Destroy() GLOB.moved_event.unregister(my_mech, src, /obj/item/shield_projector/proc/update_shield_positions) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index d9198cc6e7..ba863c8c31 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -95,6 +95,11 @@ var/list/cargo = list() var/cargo_capacity = 3 + var/static/image/radial_image_eject = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_eject"), + var/static/image/radial_image_airtoggle = image(icon= 'icons/mob/radial.dmi', icon_state = "radial_airtank"), + var/static/image/radial_image_lighttoggle = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_light"), + var/static/image/radial_image_statpanel = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_examine2") + /obj/mecha/drain_power(var/drain_check) @@ -267,33 +272,75 @@ return 0 /obj/mecha/examine(mob/user) - ..(user) + . = ..() var/integrity = health/initial(health)*100 switch(integrity) if(85 to 100) - to_chat(user, "It's fully intact.") + . += "It's fully intact." if(65 to 85) - to_chat(user, "It's slightly damaged.") + . += "It's slightly damaged." if(45 to 65) - to_chat(user, "It's badly damaged.") + . += "It's badly damaged." if(25 to 45) - to_chat(user, "It's heavily damaged.") + . += "It's heavily damaged." else - to_chat(user, "It's falling apart.") - if(equipment && equipment.len) - to_chat(user, "It's equipped with:") + . += "It's falling apart." + if(equipment?.len) + . += "It's equipped with:" for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment) - to_chat(user, "[bicon(ME)] [ME]") - return - + . += "[bicon(ME)] [ME]" /obj/mecha/proc/drop_item()//Derpfix, but may be useful in future for engineering exosuits. return -/obj/mecha/hear_talk(mob/M as mob, text) - if(M==occupant && radio.broadcasting) - radio.talk_into(M, text) - return +/obj/mecha/hear_talk(mob/M, list/message_pieces, verb) + if(M == occupant && radio.broadcasting) + radio.talk_into(M, message_pieces) + +/obj/mecha/proc/check_occupant_radial(var/mob/user) + if(!user) + return FALSE + if(user.stat) + return FALSE + if(user != occupant) + return FALSE + if(user.incapacitated()) + return FALSE + + return TRUE + +/obj/mecha/proc/show_radial_occupant(var/mob/user) + var/list/choices = list( + "Eject" = radial_image_eject, + "Toggle Airtank" = radial_image_airtoggle, + "Toggle Light" = radial_image_lighttoggle, + "View Stats" = radial_image_statpanel + ) + var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_occupant_radial, user), require_near = TRUE, tooltips = TRUE) + if(!check_occupant_radial(user)) + return + if(!choice) + return + switch(choice) + if("Eject") + go_out() + add_fingerprint(usr) + if("Toggle Airtank") + use_internal_tank = !use_internal_tank + occupant_message("Now taking air from [use_internal_tank?"internal airtank":"environment"].") + log_message("Now taking air from [use_internal_tank?"internal airtank":"environment"].") + if("Toggle Light") + lights = !lights + if(lights) + set_light(light_range + lights_power) + else + set_light(light_range - lights_power) + occupant_message("Toggled lights [lights?"on":"off"].") + log_message("Toggled lights [lights?"on":"off"].") + playsound(src, 'sound/mecha/heavylightswitch.ogg', 50, 1) + if("View Stats") + occupant << browse(src.get_stats_html(), "window=exosuit") + //////////////////////////// ///// Action processing //// @@ -324,6 +371,9 @@ /obj/mecha/proc/click_action(atom/target,mob/user, params) if(!src.occupant || src.occupant != user ) return if(user.stat) return + if(target == src && user == occupant) + show_radial_occupant(user) + return if(state) occupant_message("Maintenance protocols in effect") return @@ -383,11 +433,9 @@ //////// Movement procs //////// ////////////////////////////////// -/obj/mecha/Move() +/obj/mecha/Moved(atom/old_loc, direction, forced = FALSE) . = ..() - if(.) - MoveAction() - return + MoveAction() /obj/mecha/proc/MoveAction() //Allows mech equipment to do an action once the mech moves if(!equipment.len) @@ -608,6 +656,10 @@ return /obj/mecha/attack_hand(mob/user as mob) + if(user == occupant) + show_radial_occupant(user) + return + user.setClickCooldown(user.get_attack_speed()) src.log_message("Attack by hand/paw. Attacker - [user].",1) diff --git a/code/game/objects/banners.dm b/code/game/objects/banners.dm index d38afacaf4..d3614f03c2 100644 --- a/code/game/objects/banners.dm +++ b/code/game/objects/banners.dm @@ -31,8 +31,10 @@ desc = "A banner with the symbol of the Solar Confederate Government." catalogue_data = list(/datum/category_item/catalogue/information/organization/solgov) +/* //VOREStation Removal /obj/item/weapon/banner/virgov name = "\improper VirGov banner" icon_state = "banner-virgov" desc = "A banner with the symbol of the local government, the Vir Governmental Authority, also known as VirGov." - //catalogue_data = list(/datum/category_item/catalogue/information/organization/virgov) YW Edit \ No newline at end of file + catalogue_data = list(/datum/category_item/catalogue/information/organization/virgov) +*/ diff --git a/code/game/objects/banners_vr.dm b/code/game/objects/banners_vr.dm new file mode 100644 index 0000000000..75b014b1cc --- /dev/null +++ b/code/game/objects/banners_vr.dm @@ -0,0 +1,2 @@ +/obj/item/weapon/banner/solgov + name = "\improper SolCom banner" \ No newline at end of file diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index cc1e327478..c1e6b9adda 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -176,19 +176,16 @@ add_fingerprint(user) return M -/atom/movable/proc/handle_buckled_mob_movement(newloc,direct) - if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/L = A -// if(!L.Move(newloc, direct)) - if(!L.forceMove(newloc, direct)) - loc = L.loc - last_move = L.last_move - L.inertia_dir = last_move - return FALSE - else - L.set_dir(dir) - return TRUE +/atom/movable/proc/handle_buckled_mob_movement(atom/old_loc, direct, movetime) + for(var/A in buckled_mobs) + var/mob/living/L = A + if(!L.Move(loc, direct, movetime)) + L.forceMove(loc, direct, movetime) + L.last_move = last_move + L.inertia_dir = last_move + + if(!buckle_dir) + L.set_dir(dir) /atom/movable/proc/can_buckle_check(mob/living/M, forced = FALSE) if(!buckled_mobs) diff --git a/code/game/objects/effects/alien/aliens.dm b/code/game/objects/effects/alien/aliens.dm index d8b0821a4d..203b768d75 100644 --- a/code/game/objects/effects/alien/aliens.dm +++ b/code/game/objects/effects/alien/aliens.dm @@ -160,18 +160,32 @@ #define WEED_NODE_BASE "nodebase" /obj/effect/alien/weeds - name = "weeds" - desc = "Weird purple weeds." + name = "growth" + desc = "Weird organic growth." icon_state = "weeds" - anchored = 1 density = 0 plane = TURF_PLANE layer = ABOVE_TURF_LAYER + var/health = 15 var/obj/effect/alien/weeds/node/linked_node = null var/static/list/weedImageCache +/obj/effect/alien/weeds/Initialize(var/mapload, var/node, var/newcolor) + . = ..() + if(isspace(loc)) + return INITIALIZE_HINT_QDEL + + linked_node = node + if(newcolor) + color = newcolor + + if(icon_state == "weeds") + icon_state = pick("weeds", "weeds1", "weeds2") + + fullUpdateWeedOverlays() + /obj/effect/alien/weeds/Destroy() var/turf/T = get_turf(src) // To not mess up the overlay updates. @@ -181,50 +195,43 @@ W.updateWeedOverlays() linked_node = null - ..() + return ..() /obj/effect/alien/weeds/node icon_state = "weednode" - name = "purple sac" - desc = "Weird purple octopus-like thing." + name = "glowing growth" + desc = "Weird glowing organic growth." layer = ABOVE_TURF_LAYER+0.01 light_range = NODERANGE + var/node_range = NODERANGE + var/set_color = "#321D37" - var/set_color = null +/obj/effect/alien/weeds/node/Initialize(var/mapload, var/node, var/newcolor) + . = ..() -/obj/effect/alien/weeds/node/New() - ..(src.loc, src) + for(var/obj/effect/alien/weeds/existing in loc) + if(existing == src) + continue + else + qdel(existing) -/obj/effect/alien/weeds/node/Initialize() - ..() - START_PROCESSING(SSobj, src) + if(newcolor) + set_color = newcolor + if(set_color) + color = set_color - spawn(1 SECOND) - if(color) - set_color = color + START_PROCESSING(SSobj, src) // Only the node processes in a subsystem, the rest are process()'d by the node /obj/effect/alien/weeds/node/Destroy() STOP_PROCESSING(SSobj, src) - ..() - -/obj/effect/alien/weeds/New(pos, node) - ..() - if(istype(loc, /turf/space)) - qdel(src) - return - linked_node = node - if(icon_state == "weeds")icon_state = pick("weeds", "weeds1", "weeds2") - - fullUpdateWeedOverlays() + return ..() /obj/effect/alien/weeds/proc/updateWeedOverlays() + cut_overlays() - overlays.Cut() - - if(!weedImageCache || !weedImageCache.len) + if(!weedImageCache) weedImageCache = list() -// weedImageCache.len = 4 weedImageCache[WEED_NORTH_EDGING] = image('icons/mob/alien.dmi', "weeds_side_n", layer=2.11, pixel_y = -32) weedImageCache[WEED_SOUTH_EDGING] = image('icons/mob/alien.dmi', "weeds_side_s", layer=2.11, pixel_y = 32) weedImageCache[WEED_EAST_EDGING] = image('icons/mob/alien.dmi', "weeds_side_e", layer=2.11, pixel_x = -32) @@ -234,18 +241,14 @@ var/turf/S = get_step(src, SOUTH) var/turf/E = get_step(src, EAST) var/turf/W = get_step(src, WEST) - if(!locate(/obj/effect/alien) in N.contents) - if(istype(N, /turf/simulated/floor)) - overlays += weedImageCache[WEED_SOUTH_EDGING] - if(!locate(/obj/effect/alien) in S.contents) - if(istype(S, /turf/simulated/floor)) - overlays += weedImageCache[WEED_NORTH_EDGING] - if(!locate(/obj/effect/alien) in E.contents) - if(istype(E, /turf/simulated/floor)) - overlays += weedImageCache[WEED_WEST_EDGING] - if(!locate(/obj/effect/alien) in W.contents) - if(istype(W, /turf/simulated/floor)) - overlays += weedImageCache[WEED_EAST_EDGING] + if(istype(N, /turf/simulated/floor) && !locate(/obj/effect/alien) in N.contents) + add_overlay(weedImageCache[WEED_SOUTH_EDGING]) + if(istype(S, /turf/simulated/floor) && !locate(/obj/effect/alien) in S.contents) + add_overlay(weedImageCache[WEED_NORTH_EDGING]) + if(istype(E, /turf/simulated/floor) && !locate(/obj/effect/alien) in E.contents) + add_overlay(weedImageCache[WEED_WEST_EDGING]) + if(istype(W, /turf/simulated/floor) && !locate(/obj/effect/alien) in W.contents) + add_overlay(weedImageCache[WEED_EAST_EDGING]) /obj/effect/alien/weeds/proc/fullUpdateWeedOverlays() for (var/obj/effect/alien/weeds/W in range(1,src)) @@ -253,70 +256,51 @@ return +// NB: This is not actually called by a processing subsystem, it's called by the node processing /obj/effect/alien/weeds/process() set background = 1 var/turf/U = get_turf(src) -/* - if (locate(/obj/movable, U)) - U = locate(/obj/movable, U) - if(U.density == 1) - qdel(src) - return -Alien plants should do something if theres a lot of poison - if(U.poison> 200000) - health -= round(U.poison/200000) - update() - return -*/ - if (istype(U, /turf/space)) + + if(isspace(U)) qdel(src) return - if(!linked_node || (get_dist(linked_node, src) > linked_node.node_range) ) + if(!linked_node) return - if(linked_node != src) - color = linked_node.set_color + if(get_dist(linked_node, src) > linked_node.node_range) + return - direction_loop: - for(var/dirn in cardinal) - var/turf/T = get_step(src, dirn) + for(var/dirn in cardinal) + var/turf/T1 = get_turf(src) + var/turf/T2 = get_step(src, dirn) - if (!istype(T) || T.density || locate(/obj/effect/alien/weeds) in T || istype(T.loc, /area/arrival) || istype(T, /turf/space)) - continue + if(!istype(T2) || locate(/obj/effect/alien/weeds) in T2 || istype(T2.loc, /area/arrival) || isspace(T2)) + continue - // if (locate(/obj/movable, T)) // don't propogate into movables - // continue + if(T1.c_airblock(T2) == BLOCKED) + continue - for(var/obj/O in T) - if(!O.CanZASPass(U)) - continue direction_loop + new /obj/effect/alien/weeds(T2, linked_node, color) - var/obj/effect/E = new /obj/effect/alien/weeds(T, linked_node) +/obj/effect/alien/weeds/node/process() + set background = 1 + . = ..() - E.color = color + var/list/nearby_weeds = list() + for(var/obj/effect/alien/weeds/W in orange(node_range, src)) + nearby_weeds |= W - if(istype(src, /obj/effect/alien/weeds/node)) - var/obj/effect/alien/weeds/node/N = src - var/list/nearby_weeds = list() - for(var/obj/effect/alien/weeds/W in range(N.node_range,src)) - nearby_weeds |= W + for(var/nbw in nearby_weeds) + var/obj/effect/alien/weeds/W = nbw - for(var/obj/effect/alien/weeds/W in nearby_weeds) - if(!W) - continue + if(!W.linked_node) + W.linked_node = src - if(!W.linked_node) - W.linked_node = src - - W.color = W.linked_node.set_color - - if(W == src) - continue - - if(prob(max(10, 40 - (5 * nearby_weeds.len)))) - W.process() + W.color = W.linked_node.set_color + if(prob(max(10, 40 - (5 * nearby_weeds.len)))) + W.process() /obj/effect/alien/weeds/ex_act(severity) switch(severity) diff --git a/code/game/objects/effects/chem/foam.dm b/code/game/objects/effects/chem/foam.dm index 5a461e1525..993cbc6edc 100644 --- a/code/game/objects/effects/chem/foam.dm +++ b/code/game/objects/effects/chem/foam.dm @@ -14,23 +14,25 @@ var/amount = 3 var/expand = 1 var/metal = 0 + var/dries = 1 //VOREStation Add + var/slips = 0 //VOREStation Add /obj/effect/effect/foam/Initialize(var/mapload, var/ismetal = 0) . = ..() - icon_state = "[ismetal? "m" : ""]foam" + //icon_state = "[ismetal? "m" : ""]foam" //VOREStation Removal metal = ismetal playsound(src, 'sound/effects/bubbles2.ogg', 80, 1, -3) - - addtimer(CALLBACK(src, .proc/post_spread), 3 + metal * 3) - addtimer(CALLBACK(src, .proc/pre_harden), 12 SECONDS) - addtimer(CALLBACK(src, .proc/harden), 15 SECONDS) + if(dries) //VOREStation Add + addtimer(CALLBACK(src, .proc/post_spread), 3 + metal * 3) + addtimer(CALLBACK(src, .proc/pre_harden), 12 SECONDS) + addtimer(CALLBACK(src, .proc/harden), 15 SECONDS) /obj/effect/effect/foam/proc/post_spread() process() checkReagents() /obj/effect/effect/foam/proc/pre_harden() - STOP_PROCESSING(SSobj, src) + return //VOREStation Edit /obj/effect/effect/foam/proc/harden() if(metal) @@ -83,7 +85,7 @@ return if(metal) return - if(istype(AM, /mob/living)) + if(slips && istype(AM, /mob/living)) //VOREStation Add var/mob/living/M = AM M.slip("the foam", 6) diff --git a/code/game/objects/effects/chem/foam_vr.dm b/code/game/objects/effects/chem/foam_vr.dm new file mode 100644 index 0000000000..b7a22e629e --- /dev/null +++ b/code/game/objects/effects/chem/foam_vr.dm @@ -0,0 +1,20 @@ +/obj/effect/effect/foam/firefighting + name = "firefighting foam" + icon_state = "mfoam" //Whiter + color = "#A6FAFF" + var/lifetime = 3 + dries = FALSE // We do this ourselves + slips = FALSE + +/obj/effect/effect/foam/firefighting/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/effect/effect/foam/firefighting/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/effect/effect/foam/firefighting/process() + if(lifetime-- <= 0) + flick("[icon_state]-disolve", src) + QDEL_IN(src, 5) \ No newline at end of file diff --git a/code/game/objects/effects/chem/water.dm b/code/game/objects/effects/chem/water.dm index 7de9b9f8ff..72934e2da1 100644 --- a/code/game/objects/effects/chem/water.dm +++ b/code/game/objects/effects/chem/water.dm @@ -21,7 +21,7 @@ step_towards(src, target) var/turf/T = get_turf(src) if(T && reagents) - reagents.touch_turf(T) + reagents.touch_turf(T, reagents.total_volume) //VOREStation Add var/mob/M for(var/atom/A in T) if(!ismob(A) && A.simulated) // Mobs are handled differently diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index fba219e924..ce0f117e5a 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -159,8 +159,8 @@ var/global/list/image/splatter_cache=list() icon_state = "writing1" /obj/effect/decal/cleanable/blood/writing/examine(mob/user) - ..(user) - to_chat(user, "It reads: \"[message]\"") + . = ..() + . += "It reads: \"[message]\"" /obj/effect/decal/cleanable/blood/gibs name = "gibs" diff --git a/code/game/objects/effects/decals/posters/polarisposters_vr.dm b/code/game/objects/effects/decals/posters/polarisposters_vr.dm new file mode 100644 index 0000000000..5045346289 --- /dev/null +++ b/code/game/objects/effects/decals/posters/polarisposters_vr.dm @@ -0,0 +1,5 @@ +/datum/poster/nanotrasen/nt_7 + name = "SolCom" + desc = "This poster showcases an TCG emblem. The outer ring reads,\ + \"NIL MORTALIBUS ARDUI EST\".\ + Commonwealth of Sol-Procyon." diff --git a/code/game/objects/effects/decals/posters/voreposters_vr.dm b/code/game/objects/effects/decals/posters/voreposters_vr.dm index bd951f88b3..6f4935718d 100644 --- a/code/game/objects/effects/decals/posters/voreposters_vr.dm +++ b/code/game/objects/effects/decals/posters/voreposters_vr.dm @@ -42,3 +42,11 @@ icon_state = "sbsposter11" name = "Fear" desc = "Depicted on this poster is a monster crackling with crimson energy that seems to drip off its body. The word 'RUN' is printed across the bottom." +/datum/poster/vore_12 + icon_state = "sbsposter12" + name = "Baa" + desc = "A lewd exclusive poster of a certain security commander, taken from a old 'New Ewe' magazine!" +/datum/poster/vore_13 + icon_state = "sbsposter13" + name = "Ammer" + desc = "You see a blue panda on the poster. She's awfully smug about her size." \ No newline at end of file diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 00896e7107..b872f9b3d3 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -113,12 +113,11 @@ steam.start() -- spawns the effect T.hotspot_expose(1000,100) return ..() -/obj/effect/effect/sparks/Move() - ..() - var/turf/T = src.loc - if (istype(T, /turf)) +/obj/effect/effect/sparks/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + if(isturf(loc)) + var/turf/T = loc T.hotspot_expose(1000,100) - return /datum/effect/effect/system/spark_spread var/total_sparks = 0 // To stop it being spammed and lagging! @@ -225,8 +224,8 @@ steam.start() -- spawns the effect time_to_live = 600 //var/list/projectiles -/obj/effect/effect/smoke/bad/Move() - ..() +/obj/effect/effect/smoke/bad/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() for(var/mob/living/L in get_turf(src)) affect(L) @@ -281,8 +280,8 @@ steam.start() -- spawns the effect STOP_PROCESSING(SSobj, src) return ..() -/obj/effect/effect/smoke/elemental/Move() - ..() +/obj/effect/effect/smoke/elemental/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() for(var/mob/living/L in range(1, src)) affect(L) diff --git a/code/game/objects/effects/explosion_particles.dm b/code/game/objects/effects/explosion_particles.dm index 63b2a09c24..12a1e92020 100644 --- a/code/game/objects/effects/explosion_particles.dm +++ b/code/game/objects/effects/explosion_particles.dm @@ -12,10 +12,6 @@ qdel(src) return -/obj/effect/expl_particles/Move() - ..() - return - /datum/effect/system/expl_particles var/number = 10 var/turf/location diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index d7ab1ebfa6..5958f79d00 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -40,9 +40,11 @@ /obj/effect/temporary_effect/shuttle_landing name = "shuttle landing" desc = "You better move if you don't want to go splat!" + //VOREStation Edit Start icon = 'icons/goonstation/featherzone.dmi' icon_state = "hazard-corners" time_to_die = 5 SECONDS + //VOREStation Edit End // The manifestation of Zeus's might. Or just a really unlucky day. // This is purely a visual effect, this isn't the part of the code that hurts things. diff --git a/code/game/objects/effects/temporary_visuals/projectiles/impact.dm b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm index d4f65fc9d1..e48606a2ac 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/impact.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm @@ -74,7 +74,7 @@ light_power = 0.5 light_color = "#8837A3" -/obj/effect/projectile/tungsten/impact +/obj/effect/projectile/impact/tungsten icon_state = "impact_mhd_laser" light_range = 4 light_power = 3 diff --git a/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm index d901aeaa61..a5c70aab2c 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm @@ -86,7 +86,7 @@ light_power = 0.5 light_color = "#FF0D00" -/obj/effect/projectile/tungsten/muzzle +/obj/effect/projectile/muzzle/tungsten icon_state = "muzzle_mhd_laser" light_range = 4 light_power = 3 diff --git a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm index 59d56b6c7c..4326bc536d 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm @@ -109,12 +109,18 @@ light_power = 0.5 light_color = "#0066FF" -/obj/effect/projectile/tungsten/tracer +/obj/effect/projectile/tracer/tungsten icon_state = "mhd_laser" light_range = 4 light_power = 3 light_color = "#3300ff" +/obj/effect/projectile/tracer/cannon + icon_state = "cannon" + light_range = 1 + light_power = 0.5 + light_color = "#f6f2b6" + //VOREStation edit: medigun /obj/effect/projectile/tracer/medigun icon = 'icons/obj/projectiles_vr.dmi' @@ -122,4 +128,4 @@ light_range = 2 light_power = 0.5 light_color = "#80F5FF" -//VOREStation edit ends \ No newline at end of file +//VOREStation edit ends diff --git a/code/game/objects/effects/zone_divider.dm b/code/game/objects/effects/zone_divider.dm index 01e6834f16..acab441d52 100644 --- a/code/game/objects/effects/zone_divider.dm +++ b/code/game/objects/effects/zone_divider.dm @@ -7,6 +7,7 @@ anchored = 1 density = 0 opacity = 0 + can_atmos_pass = ATMOS_PASS_PROC /obj/effect/zone_divider/CanZASPass(turf/T, is_zone) // Special case to prevent us from being part of a zone during the first air master tick. @@ -15,5 +16,5 @@ if(air_master && air_master.current_cycle == 0) spawn(1) air_master.mark_for_update(get_turf(src)) - return ATMOS_PASS_NO - return is_zone ? ATMOS_PASS_NO : ATMOS_PASS_YES // Anything except zones can pass + return FALSE + return is_zone ? FALSE : TRUE // Anything except zones can pass diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index f6fb3c94cf..be8deb5df6 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -197,7 +197,7 @@ src.loc = T // See inventory_sizes.dm for the defines. -/obj/item/examine(mob/user, var/distance = -1) +/obj/item/examine(mob/user) var/size switch(src.w_class) if(ITEMSIZE_TINY) @@ -210,7 +210,7 @@ size = "bulky" if(ITEMSIZE_HUGE) size = "huge" - return ..(user, distance, "", "It is a [size] item.") + return ..(user, "", "It is a [size] item.") /obj/item/attack_hand(mob/living/user as mob) if (!user) return @@ -636,6 +636,11 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. //Looking through a scope or binoculars should /not/ improve your periphereal vision. Still, increase viewsize a tiny bit so that sniping isn't as restricted to NSEW /obj/item/var/ignore_visor_zoom_restriction = FALSE +/obj/item/on_loc_moved(var/oldloc) + . = ..() + if(zoom) + zoom() // aka unzoom + /obj/item/proc/zoom(var/tileoffset = 14,var/viewsize = 9) //tileoffset is client view offset in the direction the user is facing. viewsize is how far out this thing zooms. 7 is normal view var/devicename diff --git a/code/game/objects/items/bells.dm b/code/game/objects/items/bells.dm index c7aa08a440..af9d7ce0f8 100644 --- a/code/game/objects/items/bells.dm +++ b/code/game/objects/items/bells.dm @@ -13,9 +13,9 @@ var/static/radial_pickup = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_pickup") /obj/item/weapon/deskbell/examine(mob/user) - ..() + . = ..() if(broken) - to_chat(user,"It looks damaged, the ringer is stuck firmly inside.") + . += "It looks damaged, the ringer is stuck firmly inside." /obj/item/weapon/deskbell/attack(mob/target as mob, mob/living/user as mob) if(!broken) @@ -49,7 +49,7 @@ // Once the player has decided their option, choose the behaviour that will happen under said option. switch(choice) if("examine") - examine(user) + user.examinate(src) if("use") if(check_ability(user)) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 1105cf8388..181eea4137 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -242,13 +242,13 @@ syringe.reagents.trans_to_mob(H, 30, CHEM_BLOOD) /obj/structure/closet/body_bag/cryobag/examine(mob/user) - ..() + . = ..() if(Adjacent(user)) //The bag's rather thick and opaque from a distance. - to_chat(user, "You peer into \the [src].") + . += "You peer into \the [src]." if(syringe) - to_chat(user, "It has a syringe added to it.") + . += "It has a syringe added to it." for(var/mob/living/L in contents) - L.examine(user) + . += L.examine(user) /obj/structure/closet/body_bag/cryobag/attackby(obj/item/W, mob/user) if(opened) diff --git a/code/game/objects/items/contraband_vr.dm b/code/game/objects/items/contraband_vr.dm index a7b0c48aa9..b7b70f74a6 100644 --- a/code/game/objects/items/contraband_vr.dm +++ b/code/game/objects/items/contraband_vr.dm @@ -101,11 +101,11 @@ icon_type = "cigar" /obj/item/weapon/miscdisc - name = "wah thing" - desc = "wahwahwah wahwahwa" + name = "strange artefact" + desc = "A large disc-shaped item, with a red, opaque crystal embedded in the center. It is some what heavy. There are indentations along the ring of the disc. Alien scripture lines the disc." icon_state = "wahdisc" icon = 'icons/obj/contraband_vr.dmi' w_class = ITEMSIZE_NORMAL /obj/item/weapon/miscdisc/attack_self(mob/living/user as mob) - to_chat(user, "LORE.") \ No newline at end of file + to_chat(user, "As you hold the large disc in your open palm, fingers cusped around the edge, the crystal embedded in the item begins to vibrate. It lifts itself from the disc a few cenimetres, before beginning to glow with a bright red light. The glow lasts for a few seconds, before the crystal embeds itself back into the disc with a quick snap.") \ No newline at end of file diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 45ad1fa5b8..198288311c 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -109,7 +109,7 @@ qdel(src) return -/obj/item/weapon/pen/crayon/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/pen/crayon/attack(mob/living/M as mob, mob/living/user as mob) if(M == user) to_chat(user, "You take a bite of the crayon and swallow it.") user.nutrition += 1 @@ -195,7 +195,7 @@ shadeColour = input(user, "Please select the shade colour.", "Marker colour") as color return -/obj/item/weapon/pen/crayon/marker/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/pen/crayon/marker/attack(mob/living/M as mob, mob/living/user as mob) if(M == user) to_chat(user, "You take a bite of the marker and swallow it.") user.nutrition += 1 diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 9488be9e82..c3f70abc12 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -68,8 +68,9 @@ var/global/list/obj/item/device/pda/PDAs = list() var/spam_proof = FALSE // If true, it can't be spammed by random events. /obj/item/device/pda/examine(mob/user) - if(..(user, 1)) - to_chat(user, "The time [stationtime2text()] is displayed in the corner of the screen.") + . = ..() + if(Adjacent(user)) + . += "The time [stationtime2text()] is displayed in the corner of the screen." /obj/item/device/pda/CtrlClick() if(issilicon(usr)) diff --git a/code/game/objects/items/devices/PDA/PDA_vr.dm b/code/game/objects/items/devices/PDA/PDA_vr.dm index 6a6da399eb..32551625c9 100644 --- a/code/game/objects/items/devices/PDA/PDA_vr.dm +++ b/code/game/objects/items/devices/PDA/PDA_vr.dm @@ -1,6 +1,12 @@ /obj/item/device/pda var/delete_id = FALSE //Guaranteed deletion of ID upon deletion of PDA +/obj/item/device/pda/multicaster/exploration/New() + ..() + owner = "Exploration Department" + name = "Exploration Department (Relay)" + cartridges_to_send_to = exploration_cartridges + /obj/item/device/pda/centcom default_cartridge = /obj/item/weapon/cartridge/captain icon_state = "pda-h" @@ -8,13 +14,13 @@ // hidden = 1 /obj/item/device/pda/pathfinder - default_cartridge = /obj/item/weapon/cartridge/signal/science + default_cartridge = /obj/item/weapon/cartridge/explorer icon_state = "pda-lawyer-old" /obj/item/device/pda/explorer - default_cartridge = /obj/item/weapon/cartridge/signal/science + default_cartridge = /obj/item/weapon/cartridge/explorer icon_state = "pda-det" /obj/item/device/pda/sar - default_cartridge = /obj/item/weapon/cartridge/medical + default_cartridge = /obj/item/weapon/cartridge/sar icon_state = "pda-h" diff --git a/code/game/objects/items/devices/PDA/cart_vr.dm b/code/game/objects/items/devices/PDA/cart_vr.dm new file mode 100644 index 0000000000..fc4e3d098a --- /dev/null +++ b/code/game/objects/items/devices/PDA/cart_vr.dm @@ -0,0 +1,17 @@ +var/list/exploration_cartridges = list( + /obj/item/weapon/cartridge/explorer, + /obj/item/weapon/cartridge/sar + ) + +/obj/item/weapon/cartridge/explorer + name = "\improper Explorator cartridge" + icon_state = "cart-e" + access_reagent_scanner = 1 + access_atmos = 1 + +/obj/item/weapon/cartridge/sar + name = "\improper Med-Exp cartridge" + icon_state = "cart-m" + access_medical = 1 + access_reagent_scanner = 1 + access_atmos = 1 diff --git a/code/game/objects/items/devices/advnifrepair.dm b/code/game/objects/items/devices/advnifrepair.dm index ab71b97324..b3b54e56c7 100644 --- a/code/game/objects/items/devices/advnifrepair.dm +++ b/code/game/objects/items/devices/advnifrepair.dm @@ -56,8 +56,9 @@ return 1 /obj/item/device/nifrepairer/examine(mob/user) - if(..(user, 1)) + . = ..() + if(Adjacent(user)) if(supply.total_volume) - to_chat(user, "\The [src] contains [supply.total_volume] units of programmed nanites, ready for dispensing.") + . += "\The [src] contains [supply.total_volume] units of programmed nanites, ready for dispensing." else - to_chat(user, "\The [src] is empty and ready to accept nanopaste.") + . += "\The [src] is empty and ready to accept nanopaste." diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index 05260e3d2f..f20e340f34 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -115,6 +115,9 @@ show_message(span("critical", "\The [user] is transferring you into \the [src]!")) if(do_after(user, 100)) + if(carded_ai) + to_chat(user, "Transfer failed: Existing AI found on remote device. Remove existing AI to install a new one.") + return 0 if(istype(ai.loc, /turf/)) new /obj/structure/AIcore/deactivated(get_turf(ai)) diff --git a/code/game/objects/items/devices/binoculars.dm b/code/game/objects/items/devices/binoculars.dm index a971115ada..ca28fe8df3 100644 --- a/code/game/objects/items/devices/binoculars.dm +++ b/code/game/objects/items/devices/binoculars.dm @@ -1,6 +1,7 @@ /obj/item/device/binoculars name = "binoculars" desc = "A pair of binoculars." + icon = 'icons/obj/device_vr.dmi' //VOREStation Edit icon_state = "binoculars" force = 5.0 w_class = ITEMSIZE_SMALL diff --git a/code/game/objects/items/devices/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm index fae2d4586f..392af1b870 100644 --- a/code/game/objects/items/devices/communicator/communicator.dm +++ b/code/game/objects/items/devices/communicator/communicator.dm @@ -108,9 +108,9 @@ var/global/list/obj/item/device/communicator/all_communicators = list() // Parameters: user - the user doing the examining // Description: Allows the user to click a link when examining to look at video if one is going. /obj/item/device/communicator/examine(mob/user) - . = ..(user, 1) - if(. && video_source) - to_chat(user, "It looks like it's on a video call: \[view\]") + . = ..() + if(Adjacent(user) && video_source) + . += "It looks like it's on a video call: \[view\]" // Proc: initialize_exonet() // Parameters: 1 (user - the person the communicator belongs to) @@ -131,28 +131,22 @@ var/global/list/obj/item/device/communicator/all_communicators = list() // Parameters: 1 (user - the person examining the device) // Description: Shows all the voice mobs inside the device, and their status. /obj/item/device/communicator/examine(mob/user) - if(!..(user)) - return - - var/msg = "" + . = ..() + for(var/mob/living/voice/voice in contents) - msg += "On the screen, you can see a image feed of [voice].\n" - msg += "" - + . += "On the screen, you can see a image feed of [voice]." + if(voice && voice.key) switch(voice.stat) if(CONSCIOUS) if(!voice.client) - msg += "[voice] appears to be asleep.\n" //afk + . += "[voice] appears to be asleep." //afk if(UNCONSCIOUS) - msg += "[voice] doesn't appear to be conscious.\n" + . += "[voice] doesn't appear to be conscious." if(DEAD) - msg += "[voice] appears to have died...\n" //Hopefully this never has to be used. + . += "[voice] appears to have died..." //Hopefully this never has to be used. else - msg += "The device doesn't appear to be transmitting any data.\n" - msg += "" - to_chat(user, msg) - return + . += "The device doesn't appear to be transmitting any data." // Proc: emp_act() // Parameters: None diff --git a/code/game/objects/items/devices/communicator/phone.dm b/code/game/objects/items/devices/communicator/phone.dm index 3042b06fa9..d7816fbb82 100644 --- a/code/game/objects/items/devices/communicator/phone.dm +++ b/code/game/objects/items/devices/communicator/phone.dm @@ -227,12 +227,12 @@ ..() // Proc: hear_talk() -// Parameters: 4 (M - the mob the speech originated from, text - what is being said, verb - the word used to describe how text is being said, speaking - language -// being used) +// Parameters: 3 (M - the mob the speech originated from, +// list/message_pieces - what is being said w/ baked languages, +// verb - the word used to describe how text is being said) // Description: Relays the speech to all linked communicators. -/obj/item/device/communicator/hear_talk(mob/living/M, text, verb, datum/language/speaking) +/obj/item/device/communicator/hear_talk(mob/M, list/message_pieces, verb) for(var/obj/item/device/communicator/comm in communicating) - var/turf/T = get_turf(comm) if(!T) return //VOREStation Edit Start for commlinks @@ -246,18 +246,10 @@ //VOREStation Edit End for(var/mob/mob in mobs_to_relay) - //Can whoever is hearing us understand? - if(!mob.say_understands(M, speaking)) - if(speaking) - text = speaking.scramble(text) - else - text = stars(text) + var/message = mob.combine_message(message_pieces, verb, M) var/name_used = M.GetVoice() var/rendered = null - if(speaking) //Language being used - rendered = "[bicon(src)] [name_used] [speaking.format_message(text, verb)]" - else - rendered = "[bicon(src)] [name_used] [verb], \"[text]\"" + rendered = "[bicon(src)] [name_used] [message]" mob.show_message(rendered, 2) // Proc: show_message() diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 6930e5f26d..8f300aaaf7 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -86,23 +86,20 @@ set_light(0) /obj/item/device/flashlight/examine(mob/user) - ..() + . = ..() if(power_use && brightness_level) - var/tempdesc - tempdesc += "\The [src] is set to [brightness_level]. " + . += "\The [src] is set to [brightness_level]." if(cell) - tempdesc += "\The [src] has a \the [cell] attached. " + . += "\The [src] has a \the [cell] attached." if(cell.charge <= cell.maxcharge*0.25) - tempdesc += "It appears to have a low amount of power remaining." + . += "It appears to have a low amount of power remaining." else if(cell.charge > cell.maxcharge*0.25 && cell.charge <= cell.maxcharge*0.5) - tempdesc += "It appears to have an average amount of power remaining." + . += "It appears to have an average amount of power remaining." else if(cell.charge > cell.maxcharge*0.5 && cell.charge <= cell.maxcharge*0.75) - tempdesc += "It appears to have an above average amount of power remaining." + . += "It appears to have an above average amount of power remaining." else if(cell.charge > cell.maxcharge*0.75 && cell.charge <= cell.maxcharge) - tempdesc += "It appears to have a high amount of power remaining." - - to_chat(user, "[tempdesc]") + . += "It appears to have a high amount of power remaining." /obj/item/device/flashlight/attack_self(mob/user) if(power_use) @@ -421,7 +418,7 @@ . = ..() if(.) - user.visible_message("[user] cracks and shakes the glowstick.", "You crack and shake the glowstick, turning it on!") + user.visible_message("[user] cracks and shakes \the [name].", "You crack and shake \the [src], turning it on!") START_PROCESSING(SSobj, src) /obj/item/device/flashlight/glowstick/red diff --git a/code/game/objects/items/devices/floor_painter.dm b/code/game/objects/items/devices/floor_painter.dm index 72e6d2ced7..d84f4bc3ca 100644 --- a/code/game/objects/items/devices/floor_painter.dm +++ b/code/game/objects/items/devices/floor_painter.dm @@ -110,8 +110,8 @@ choose_colour() /obj/item/device/floor_painter/examine(mob/user) - ..(user) - to_chat(user, "It is configured to produce the '[decal]' decal with a direction of '[paint_dir]' using [paint_colour] paint.") + . = ..() + . += "It is configured to produce the '[decal]' decal with a direction of '[paint_dir]' using [paint_colour] paint." /obj/item/device/floor_painter/verb/choose_colour() set name = "Choose Colour" diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm index c6f7c3f9f1..b9b177e683 100644 --- a/code/game/objects/items/devices/geiger.dm +++ b/code/game/objects/items/devices/geiger.dm @@ -33,9 +33,9 @@ update_sound() /obj/item/device/geiger/examine(mob/user) - ..(user) + . = ..() get_radiation() - to_chat(user, "[scanning ? "Ambient" : "Stored"] radiation level: [radiation_count ? radiation_count : "0"]Bq.") + . += "[scanning ? "Ambient" : "Stored"] radiation level: [radiation_count ? radiation_count : "0"]Bq." /obj/item/device/geiger/rad_act(amount) if(!amount || !scanning) diff --git a/code/game/objects/items/devices/holowarrant.dm b/code/game/objects/items/devices/holowarrant.dm index bcf456126e..854282f55a 100644 --- a/code/game/objects/items/devices/holowarrant.dm +++ b/code/game/objects/items/devices/holowarrant.dm @@ -13,11 +13,11 @@ /obj/item/device/holowarrant/examine(mob/user) . = ..() if(active) - to_chat(user, "It's a holographic warrant for '[active.fields["namewarrant"]]'.") + . += "It's a holographic warrant for '[active.fields["namewarrant"]]'." if(in_range(user, src) || istype(user, /mob/observer/dead)) - show_content(user) + show_content(user) //Opens a browse window, not chatbox related else - to_chat(user, "You have to go closer if you want to read it.") + . += "You have to go closer if you want to read it." //hit yourself with it /obj/item/device/holowarrant/attack_self(mob/living/user as mob) diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index f85e424604..3ce7a0b236 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -64,8 +64,9 @@ ..() /obj/item/device/lightreplacer/examine(mob/user) - if(..(user, 2)) - to_chat(user, "It has [uses] lights remaining.") + . = ..() + if(get_dist(user, src) <= 2) + . += "It has [uses] lights remaining." /obj/item/device/lightreplacer/attackby(obj/item/W, mob/user) if(istype(W, /obj/item/stack/material) && W.get_material_name() == "glass") diff --git a/code/game/objects/items/devices/locker_painter.dm b/code/game/objects/items/devices/locker_painter.dm index 816c9790ff..3d41d9fcab 100644 --- a/code/game/objects/items/devices/locker_painter.dm +++ b/code/game/objects/items/devices/locker_painter.dm @@ -125,8 +125,8 @@ choose_colour_secure() /obj/item/device/closet_painter/examine(mob/user) - ..(user) - to_chat(user, "It is configured to produce the '[colour]' paint scheme or the '[colour_secure]' secure closet paint scheme.") + . = ..() + . += "It is configured to produce the '[colour]' paint scheme or the '[colour_secure]' secure closet paint scheme." /obj/item/device/closet_painter/verb/choose_colour() set name = "Choose Colour" diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 0a12b31df2..7e7bbdb629 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -10,53 +10,52 @@ var/list/insultmsg = list("FUCK EVERYONE!", "I'M A TERRORIST!", "ALL SECURITY TO SHOOT ME ON SIGHT!", "I HAVE A BOMB!", "CAPTAIN IS A COMDOM!", "GLORY TO ALMACH!") /obj/item/device/megaphone/proc/can_broadcast(var/mob/living/user) - if (user.client) + if(user.client) if(user.client.prefs.muted & MUTE_IC) to_chat(user, "You cannot speak in IC (muted).") - return 0 + return FALSE if(!(ishuman(user) || user.isSynthetic())) to_chat(user, "You don't know how to use this!") - return 0 + return FALSE if(user.silent) - return 0 - if(spamcheck) - to_chat(user, "\The [src] needs to recharge!") - return 0 - return 1 + return FALSE + if(spamcheck > world.time) + to_chat(user, "[src] needs to recharge!") + return FALSE + if(loc != user) + return FALSE + if(user.stat != CONSCIOUS) + return FALSE + return TRUE /obj/item/device/megaphone/proc/do_broadcast(var/mob/living/user, var/message) - if ((src.loc == user && usr.stat == 0)) - if(emagged) - if(insults) - user.audible_message("[user] broadcasts, \"[pick(insultmsg)]\"") - insults-- - else - to_chat(user, "*BZZZZzzzzzt*") + if(emagged) + if(insults) + user.audible_message("[user.GetVoice()][user.GetAltName()] broadcasts, \"[pick(insultmsg)]\"") + insults-- else - user.audible_message("[user] broadcasts, \"[message]\"") - - spamcheck = 1 - spawn(20) - spamcheck = 0 - return - -/obj/item/device/megaphone/attack_self(mob/living/user as mob) - if(!can_broadcast(user)) - return + to_chat(user, "*BZZZZzzzzzt*") + else + user.audible_message("[user.GetVoice()][user.GetAltName()] broadcasts, \"[message]\"") +/obj/item/device/megaphone/attack_self(var/mob/living/user) var/message = sanitize(input(user, "Shout a message?", "Megaphone", null) as text) if(!message) return message = capitalize(message) + if(!can_broadcast(user)) + return + + spamcheck = world.time + 20 do_broadcast(user, message) /obj/item/device/megaphone/emag_act(var/remaining_charges, var/mob/user) if(!emagged) - to_chat(user, "You overload \the [src]'s voice synthesizer.") - emagged = 1 + to_chat(user, "You overload [src]'s voice synthesizer.") + emagged = TRUE insults = rand(1, 3)//to prevent caps spam. - return 1 + return TRUE /obj/item/device/megaphone/super name = "gigaphone" @@ -130,41 +129,35 @@ broadcast_color = new_color /obj/item/device/megaphone/super/do_broadcast(var/mob/living/user, var/message) - if ((src.loc == user && usr.stat == 0)) - if(emagged) - if(insults) - user.audible_message("[user] broadcasts, \"[pick(insultmsg)]\"") - if(broadcast_size >= 11) - var/turf/T = get_turf(user) - playsound(T, 'sound/items/AirHorn.ogg', 100, 1) - for(var/mob/living/carbon/M in oviewers(4, T)) - if(M.get_ear_protection() >= 2) - continue - M.sleeping = 0 - M.stuttering += 20 - M.ear_deaf += 30 - M.Weaken(3) - if(prob(30)) - M.Stun(10) - M.Paralyse(4) - else - M.make_jittery(50) - insults-- - else - user.audible_message("*BZZZZzzzzzt*") - if(prob(40) && insults <= 0) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(2, 1, get_turf(user)) - s.start() - user.visible_message("\The [src] sparks violently!") - spawn(30) - explosion(get_turf(src), -1, -1, 1, 3, adminlog = 1) - qdel(src) - return + if(emagged) + if(insults) + user.audible_message("[user.GetVoice()][user.GetAltName()] broadcasts, \"[pick(insultmsg)]\"") + if(broadcast_size >= 11) + var/turf/T = get_turf(user) + playsound(T, 'sound/items/AirHorn.ogg', 100, 1) + for(var/mob/living/carbon/M in oviewers(4, T)) + if(M.get_ear_protection() >= 2) + continue + M.sleeping = 0 + M.stuttering += 20 + M.ear_deaf += 30 + M.Weaken(3) + if(prob(30)) + M.Stun(10) + M.Paralyse(4) + else + M.make_jittery(50) + insults-- else - user.audible_message("[user] broadcasts, \"[message]\"") - - spamcheck = 1 - spawn(20) - spamcheck = 0 - return + user.audible_message("*BZZZZzzzzzt*") + if(prob(40) && insults <= 0) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(2, 1, get_turf(user)) + s.start() + user.visible_message("\The [src] sparks violently!") + spawn(30) + explosion(get_turf(src), -1, -1, 1, 3, adminlog = 1) + qdel(src) + return + else + user.audible_message("[user.GetVoice()][user.GetAltName()] broadcasts, \"[message]\"") diff --git a/code/game/objects/items/devices/modkit.dm b/code/game/objects/items/devices/modkit.dm index 1ceaa3e9d1..6847bb6fb0 100644 --- a/code/game/objects/items/devices/modkit.dm +++ b/code/game/objects/items/devices/modkit.dm @@ -63,8 +63,8 @@ qdel(src) /obj/item/device/modkit/examine(mob/user) - ..(user) - to_chat(user, "It looks as though it modifies hardsuits to fit [target_species] users.") + . = ..() + . += "It looks as though it modifies hardsuits to fit [target_species] users." /obj/item/device/modkit/tajaran name = "tajaran hardsuit modification kit" diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm index 8a32988fb6..59e386b608 100644 --- a/code/game/objects/items/devices/pipe_painter.dm +++ b/code/game/objects/items/devices/pipe_painter.dm @@ -27,5 +27,5 @@ mode = input("Which colour do you want to use?", "Pipe painter", mode) in modes /obj/item/device/pipe_painter/examine(mob/user) - ..(user) - to_chat(user, "It is in [mode] mode.") + . = ..() + . += "It is in [mode] mode." diff --git a/code/game/objects/items/devices/radio/encryptionkey_vr.dm b/code/game/objects/items/devices/radio/encryptionkey_vr.dm index 5be1effb35..1f6110d16a 100644 --- a/code/game/objects/items/devices/radio/encryptionkey_vr.dm +++ b/code/game/objects/items/devices/radio/encryptionkey_vr.dm @@ -17,10 +17,38 @@ /obj/item/device/encryptionkey/heads/rd name = "research director's encryption key" icon_state = "rd_cypherkey" - channels = list("Command" = 1, "Science" = 1, "Explorer" = 1) + channels = list("Command" = 1, "Science" = 1) /obj/item/device/encryptionkey/ert channels = list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1, "Explorer" = 1) /obj/item/device/encryptionkey/omni //Literally only for the admin intercoms channels = list("Mercenary" = 1, "Raider" = 1, "Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1, "Explorer" = 1) + +/obj/item/device/encryptionkey/pathfinder + name = "pathfinder's encryption key" + icon_state = "com_cypherkey" + channels = list("Command" = 1, "Explorer" = 1) + +/obj/item/device/encryptionkey/qm + name = "quartermaster's encryption key" + icon_state = "qm_cypherkey" + channels = list("Command" = 1, "Supply" = 1) + +/obj/item/device/encryptionkey/pilot + name = "pilot's encryption key" + icon_state = "cypherkey" + channels = list("Explorer" = 1) + +/obj/item/device/encryptionkey/explorer + name = "explorer's encryption key" + icon_state = "rob_cypherkey" + channels = list("Explorer" = 1) + +/obj/item/device/encryptionkey/sar + name = "fm's encryption key" + icon_state = "med_cypherkey" + channels = list("Medical" = 1, "Explorer" = 1) + +/obj/item/device/encryptionkey/talon + channels = list("Talon" = 1) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 67ad07567f..47de7ff7dd 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -37,21 +37,23 @@ return list_secure_channels() /obj/item/device/radio/headset/examine(mob/user) - if(!(..(user, 1) && radio_desc)) - return + . = ..() - to_chat(user, "The following channels are available:") - to_chat(user, radio_desc) + if(radio_desc && Adjacent(user)) + . += "The following channels are available:" + . += radio_desc -/obj/item/device/radio/headset/handle_message_mode(mob/living/M as mob, message, channel) - if (channel == "special") - if (translate_binary) +/obj/item/device/radio/headset/handle_message_mode(mob/living/M as mob, list/message_pieces, channel) + if(channel == "special") + if(translate_binary) var/datum/language/binary = GLOB.all_languages["Robot Talk"] - binary.broadcast(M, message) - if (translate_hive) + binary.broadcast(M, M.strip_prefixes(multilingual_to_message(message_pieces))) + return RADIO_CONNECTION_NON_SUBSPACE + if(translate_hive) var/datum/language/hivemind = GLOB.all_languages["Hivemind"] - hivemind.broadcast(M, message) - return null + hivemind.broadcast(M, M.strip_prefixes(multilingual_to_message(message_pieces))) + return RADIO_CONNECTION_NON_SUBSPACE + return RADIO_CONNECTION_FAIL return ..() diff --git a/code/game/objects/items/devices/radio/headset_vr.dm b/code/game/objects/items/devices/radio/headset_vr.dm index 14398d9f59..9204c81dd1 100644 --- a/code/game/objects/items/devices/radio/headset_vr.dm +++ b/code/game/objects/items/devices/radio/headset_vr.dm @@ -48,4 +48,83 @@ M.mob_radio.forceMove(M.loc) M.mob_radio = null return - ..() \ No newline at end of file + ..() + +/obj/item/device/radio/headset/headset_cargo + desc = "A headset used by the QM's slaves." + +/obj/item/device/radio/headset/headset_cargo/alt + desc = "A bowman headset used by the QM's slaves." + +/obj/item/device/radio/headset/headset_qm + name = "qm radio headset" + desc = "A headset used by the QM." + icon_state = "cargo_headset" + ks2type = /obj/item/device/encryptionkey/qm + +/obj/item/device/radio/headset/headset_qm/alt + name = "qm bowman headset" + desc = "A bowman headset used by the QM." + icon_state = "cargo_headset_alt" + +/obj/item/device/radio/headset/pathfinder + name = "pathfinder's headset" + desc = "Headset used by pathfinders for exploring. Access to the explorer and command channels." + icon_state = "exp_headset" + adhoc_fallback = TRUE + ks2type = /obj/item/device/encryptionkey/pathfinder + +/obj/item/device/radio/headset/pathfinder/alt + name = "pathfinder's bowman headset" + desc = "Bowman headset used by pathfinders for exploring. Access to the explorer and command channels." + icon_state = "exp_headset_alt" + +/obj/item/device/radio/headset/pilot + name = "pilot's headset" + desc = "A headset used by pilots, has access to the explorer channel." + icon_state = "pilot_headset" + adhoc_fallback = TRUE + ks2type = /obj/item/device/encryptionkey/pilot + +/obj/item/device/radio/headset/pilot/alt + name = "pilot's bowman headset" + desc = "A bowman headset used by pilots, has access to the explorer channel." + icon_state = "pilot_headset_alt" + +/obj/item/device/radio/headset/explorer + name = "explorer's headset" + desc = "Headset used by explorers for exploring. Access to the explorer channel." + icon_state = "exp_headset" + adhoc_fallback = TRUE + ks2type = /obj/item/device/encryptionkey/explorer + +/obj/item/device/radio/headset/explorer/alt + name = "explorer's bowman headset" + desc = "Bowman headset used by explorers for exploring. Access to the explorer channel." + icon_state = "exp_headset_alt" + +/obj/item/device/radio/headset/sar + name = "fm radio headset" + desc = "A headset for field medics." + icon_state = "sar_headset" + adhoc_fallback = TRUE + ks2type = /obj/item/device/encryptionkey/sar + +/obj/item/device/radio/headset/sar/alt + name = "fm radio bowman headset" + desc = "A bowman headset for field medics." + icon_state = "sar_headset_alt" + +/obj/item/device/radio/headset/volunteer + name = "volunteer's headset" + desc = "A headset used by volunteers to expedition teams, has access to the exploration channel." + icon_state = "pilot_headset" + adhoc_fallback = TRUE + ks2type = /obj/item/device/encryptionkey/pilot + +/obj/item/device/radio/headset/talon + name = "talon headset" + desc = "A headset for communication between the crew of the ITV Talon." + adhoc_fallback = TRUE + icon_state = "pilot_headset" + ks2type = /obj/item/device/encryptionkey/talon diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 69b5192abb..4ef7cc576a 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -11,10 +11,10 @@ var/global/list/default_internal_channels = list( num2text(MED_I_FREQ)=list(access_medical_equip), num2text(SEC_FREQ) = list(access_security), num2text(SEC_I_FREQ)=list(access_security), - num2text(SCI_FREQ) = list(access_tox, access_robotics, access_xenobiology, access_explorer), + num2text(SCI_FREQ) = list(access_tox, access_robotics, access_xenobiology), num2text(SUP_FREQ) = list(access_cargo, access_mining_station), num2text(SRV_FREQ) = list(access_janitor, access_library, access_hydroponics, access_bar, access_kitchen), - num2text(EXP_FREQ) = list(access_explorer, access_pilot, access_rd) + num2text(EXP_FREQ) = list(access_explorer, access_pilot) ) var/global/list/default_medbay_channels = list( @@ -287,7 +287,7 @@ var/global/list/default_medbay_channels = list( /obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/list/zlevels) //BS12 EDIT var/datum/radio_frequency/connection = null if(channel && channels && channels.len > 0) - if (channel == "department") + if(channel == "department") channel = channels[1] connection = secure_radio_connections[channel] else @@ -303,11 +303,11 @@ var/global/list/default_medbay_channels = list( A.SetName(from) Broadcast_Message(connection, A, 0, "*garbled automated announcement*", src, - message, from, "Automated Announcement", from, "synthesized voice", - 4, 0, zlevels, connection.frequency, "states") + message_to_multilingual(message), from, "Automated Announcement", from, "synthesized voice", + DATA_FAKE, 0, zlevels, connection.frequency, "states") // Interprets the message mode when talking into a radio, possibly returning a connection datum -/obj/item/device/radio/proc/handle_message_mode(mob/living/M as mob, message, message_mode) +/obj/item/device/radio/proc/handle_message_mode(mob/living/M as mob, list/message_pieces, message_mode) // If a channel isn't specified, send to common. if(!message_mode || message_mode == "headset") return radio_connection @@ -321,16 +321,17 @@ var/global/list/default_medbay_channels = list( return secure_radio_connections[message_mode] // If we were to send to a channel we don't have, drop it. - return null + return RADIO_CONNECTION_FAIL -/obj/item/device/radio/talk_into(mob/living/M as mob, message, channel, var/verb = "says", var/datum/language/speaking = null) - if(!on) return FALSE // the device has to be on +/obj/item/device/radio/talk_into(mob/living/M as mob, list/message_pieces, channel, var/verb = "says") + if(!on) + return FALSE // the device has to be on // Fix for permacell radios, but kinda eh about actually fixing them. - if(!M || !message) return FALSE + if(!M || !message_pieces) + return FALSE - if(speaking && (speaking.flags & (SIGNLANG|NONVERBAL))) return FALSE - - if(istype(M)) M.trigger_aiming(TARGET_CAN_RADIO) + if(istype(M)) + M.trigger_aiming(TARGET_CAN_RADIO) // Uncommenting this. To the above comment: // The permacell radios aren't suppose to be able to transmit, this isn't a bug and this "fix" is just making radio wires useless. -Giacom @@ -352,11 +353,18 @@ var/global/list/default_medbay_channels = list( */ //#### Grab the connection datum ####// - var/datum/radio_frequency/connection = handle_message_mode(M, message, channel) - if (!istype(connection)) + var/message_mode = handle_message_mode(M, message_pieces, channel) + switch(message_mode) + if(RADIO_CONNECTION_FAIL) + return FALSE + if(RADIO_CONNECTION_NON_SUBSPACE) + return TRUE + + if(!istype(message_mode, /datum/radio_frequency)) return FALSE var/pos_z = get_z(src) + var/datum/radio_frequency/connection = message_mode //#### Tagging the signal with all appropriate identity values ####// @@ -417,7 +425,7 @@ var/global/list/default_medbay_channels = list( "name" = displayname, // the mob's display name "job" = jobname, // the mob's job "key" = mobkey, // the mob's key - "vmessage" = pick(M.speak_emote), // the message to display if the voice wasn't understood + "vmessage" = message_to_multilingual(pick(M.speak_emote)), // the message to display if the voice wasn't understood "vname" = M.voice_name, // the name to display if the voice wasn't understood "vmask" = voicemask, // 1 if the mob is using a voice gas mask @@ -426,7 +434,7 @@ var/global/list/default_medbay_channels = list( // Other tags: "compression" = rand(45,50), // compressed radio signal - "message" = message, // the actual sent message + "message" = message_pieces, // the actual sent message "connection" = connection, // the radio connection to use "radio" = src, // stores the radio used for transmission "slow" = 0, // how much to sleep() before broadcasting - simulates net lag @@ -435,7 +443,6 @@ var/global/list/default_medbay_channels = list( "server" = null, // the last server to log this signal "reject" = 0, // if nonzero, the signal will not be accepted by any broadcasting machinery "level" = pos_z, // The source's z level - "language" = speaking, "verb" = verb ) signal.frequency = connection.frequency // Quick frequency set @@ -472,7 +479,6 @@ var/global/list/default_medbay_channels = list( signal.transmission_method = TRANSMISSION_SUBSPACE //#### Sending the signal to all subspace receivers ####// - for(var/obj/machinery/telecomms/receiver/R in telecomms_list) R.receive_signal(signal) @@ -487,7 +493,7 @@ var/global/list/default_medbay_channels = list( else if(adhoc_fallback) //Less huzzah, we have to fallback to_chat(loc, "\The [src] pings as it falls back to local radio transmission.") subspace_transmission = FALSE - + else //Oh well return FALSE @@ -520,16 +526,14 @@ var/global/list/default_medbay_channels = list( //Nothing handled any sort of remote radio-ing and returned before now, just squawk on this zlevel. return Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), - src, message, displayname, jobname, real_name, M.voice_name, - filter_type, signal.data["compression"], using_map.get_map_levels(pos_z), connection.frequency, verb, speaking) + src, message_pieces, displayname, jobname, real_name, M.voice_name, + filter_type, signal.data["compression"], using_map.get_map_levels(pos_z), connection.frequency, verb) -/obj/item/device/radio/hear_talk(mob/M as mob, msg, var/verb = "says", var/datum/language/speaking = null) - if (broadcasting) +/obj/item/device/radio/hear_talk(mob/M as mob, list/message_pieces, var/verb = "says") + if(broadcasting) if(get_dist(src, M) <= canhear_range) - talk_into(M, msg,null,verb,speaking) - - + talk_into(M, message_pieces, null, verb) /obj/item/device/radio/proc/receive_range(freq, level) // check if this radio can receive on the given frequency, and if so, @@ -577,12 +581,12 @@ var/global/list/default_medbay_channels = list( /obj/item/device/radio/examine(mob/user) . = ..() - if ((in_range(src, user) || loc == user)) - if (b_stat) - user.show_message("\The [src] can be attached and modified!") + + if((in_range(src, user) || loc == user)) + if(b_stat) + . += "\The [src] can be attached and modified!" else - user.show_message("\The [src] can not be modified or attached!") - return + . += "\The [src] can not be modified or attached!" /obj/item/device/radio/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() diff --git a/code/game/objects/items/devices/radio/radiopack.dm b/code/game/objects/items/devices/radio/radiopack.dm index c2ba25ecc2..8f2e849320 100644 --- a/code/game/objects/items/devices/radio/radiopack.dm +++ b/code/game/objects/items/devices/radio/radiopack.dm @@ -132,22 +132,13 @@ return -1 if(!listening) return -1 - if(is_jammed(src)) + if(!on) return -1 - if (!on) + if(!freq) return -1 - if (!freq) //recieved on main frequency - if (!listening) - return -1 - else - var/accept = (freq==frequency && listening) - if (!accept) - for (var/ch_name in channels) - var/datum/radio_frequency/RF = secure_radio_connections[ch_name] - if (RF && RF.frequency==freq && (channels[ch_name]&FREQ_LISTENING)) - accept = 1 - break - if (!accept) - return -1 - return canhear_range + //Only listen on main freq + if(freq == frequency) + return canhear_range + else + return -1 diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index a085e59d24..06197f202d 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -492,7 +492,7 @@ HALOGEN COUNTER - Radcount on mobs for(var/potential_color in S.slime_mutation) var/mob/living/simple_mob/slime/xenobio/slime = potential_color mutations.Add(initial(slime.slime_color)) - user.show_message("Potental to mutate into [english_list(mutations)] colors.
Extract potential: [S.cores]
Nutrition: [S.nutrition]/[S.get_max_nutrition()]") + user.show_message("Potental to mutate into [english_list(mutations)] colors.
Extract potential: [S.cores]
Nutrition: [S.nutrition]/[S.max_nutrition]") if (S.nutrition < S.get_starve_nutrition()) user.show_message("Warning: Subject is starving!") diff --git a/code/game/objects/items/devices/spy_bug.dm b/code/game/objects/items/devices/spy_bug.dm index 1f15d36b12..03d0bdd60c 100644 --- a/code/game/objects/items/devices/spy_bug.dm +++ b/code/game/objects/items/devices/spy_bug.dm @@ -84,9 +84,9 @@ camtype = /obj/machinery/camera/bug/spy /obj/item/device/camerabug/examine(mob/user) - . = ..(user, 0) - if(.) - to_chat(user, "It has a tiny camera inside. Needs to be both configured and brought in contact with monitor device to be fully functional.") + . = ..() + if(get_dist(user, src) == 0) + . += "It has a tiny camera inside. Needs to be both configured and brought in contact with monitor device to be fully functional." /obj/item/device/camerabug/attackby(obj/item/W as obj, mob/living/user as mob) if(istype(W, /obj/item/device/bug_monitor)) @@ -126,10 +126,7 @@ linkedmonitor.unpair(src) linkedmonitor = null ..() -/* -/obj/item/device/camerabug/hear_talk(mob/M, var/msg, verb, datum/language/speaking) - radio.hear_talk(M, msg, speaking) -*/ + /obj/item/device/bug_monitor name = "mobile camera pod monitor" desc = "A portable camera console designed to work with mobile camera pods." @@ -208,10 +205,7 @@ return return 1 -/* -/obj/item/device/bug_monitor/hear_talk(mob/M, var/msg, verb, datum/language/speaking) - return radio.hear_talk(M, msg, speaking) -*/ + /obj/item/device/bug_monitor/spy name = "\improper PDA" desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge." @@ -221,9 +215,9 @@ origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1, TECH_ILLEGAL = 3) /obj/item/device/bug_monitor/spy/examine(mob/user) - . = ..(user, 1) - if(.) - to_chat(user, "The time '12:00' is blinking in the corner of the screen and \the [src] looks very cheaply made.") + . = ..() + if(Adjacent(user)) + . += "The time '12:00' is blinking in the corner of the screen and \the [src] looks very cheaply made." /obj/machinery/camera/bug/check_eye(var/mob/user as mob) return 0 diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index e11cce4762..8c8a208db8 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -173,24 +173,25 @@ icon_state = "suitcooler0" /obj/item/device/suit_cooling_unit/examine(mob/user) - if(!..(user, 1)) - return + . = ..() - if (on) - if (attached_to_suit(src.loc)) - to_chat(user, "It's switched on and running.") + if(Adjacent(user)) + + if (on) + if (attached_to_suit(src.loc)) + . += "It's switched on and running." + else + . += "It's switched on, but not attached to anything." else - to_chat(user, "It's switched on, but not attached to anything.") - else - to_chat(user, "It is switched off.") + . += "It is switched off." - if (cover_open) - if(cell) - to_chat(user, "The panel is open, exposing the [cell].") + if (cover_open) + if(cell) + . += "The panel is open, exposing the [cell]." + else + . += "The panel is open." + + if (cell) + . += "The charge meter reads [round(cell.percent())]%." else - to_chat(user, "The panel is open.") - - if (cell) - to_chat(user, "The charge meter reads [round(cell.percent())]%.") - else - to_chat(user, "It doesn't have a power cell installed.") + . += "It doesn't have a power cell installed." diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index c2320dcf44..bdb35fb643 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -86,15 +86,10 @@ update_icon() -/obj/item/device/taperecorder/hear_talk(mob/living/M as mob, msg, var/verb="says", datum/language/speaking=null) +/obj/item/device/taperecorder/hear_talk(mob/M, list/message_pieces, verb) + var/msg = multilingual_to_message(message_pieces, requires_machine_understands = TRUE, with_capitalization = TRUE) if(mytape && recording) - - if(speaking) - if(!speaking.machine_understands) - msg = speaking.scramble(msg) - mytape.record_speech("[M.name] [speaking.format_message_plain(msg, verb)]") - else - mytape.record_speech("[M.name] [verb], \"[msg]\"") + mytape.record_speech("[M.name] [verb], \"[msg]\"") /obj/item/device/taperecorder/see_emote(mob/M as mob, text, var/emote_type) diff --git a/code/game/objects/items/devices/translator.dm b/code/game/objects/items/devices/translator.dm index fc6352de29..868481d51e 100644 --- a/code/game/objects/items/devices/translator.dm +++ b/code/game/objects/items/devices/translator.dm @@ -33,8 +33,8 @@ icon_state = "[initial(icon_state)]" to_chat(user, "You disable \the [src].") -/obj/item/device/universal_translator/hear_talk(var/mob/speaker, var/message, var/vrb, var/datum/language/language) - if(!listening || !istype(speaker)) +/obj/item/device/universal_translator/hear_talk(mob/M, list/message_pieces, verb) + if(!listening || !istype(M)) return //Show the "I heard something" animation. @@ -46,34 +46,38 @@ return var/mob/living/L = loc + if(visual && ((L.sdisabilities & BLIND) || L.eye_blind)) + return + if(audio && ((L.sdisabilities & DEAF) || L.ear_deaf)) + return - if(!language) - return //Borgs were causing runtimes when passing language=null + // Using two for loops kinda sucks, but I think it's more efficient + // to shortcut past string building if we're just going to discard the string + // anyways. + if(user_understands(M, L, message_pieces)) + return - if (language && (language.flags & NONVERBAL)) - return //Not gonna translate sign language + var/new_message = "" - if (!language.machine_understands) - return //Any other languages that it can't translate. + for(var/datum/multilingual_say_piece/S in message_pieces) + if(S.speaking.flags & NONVERBAL) + continue + if(!S.speaking.machine_understands) + new_message += stars(S.message) + " " + continue - if (visual && ((L.sdisabilities & BLIND) || L.eye_blind)) - return //Can't see the screen, don't get the message + new_message += (S.message + " ") - if (audio && ((L.sdisabilities & DEAF) || L.ear_deaf)) - return //Can't hear the translation, don't get the message + if(!L.say_understands(null, langset)) + new_message = langset.scramble(new_message) - //Only translate if they can't understand, otherwise pointlessly spammy - //I'll just assume they don't look at the screen in that case + to_chat(L, "[src] translates, \"[new_message]\"") - //They don't understand the spoken language we're translating FROM - if(!L.say_understands(speaker,language)) - //They understand the output language - if(L.say_understands(null,langset)) - to_chat(L, "[src] translates, \"[message]\"") - - //They don't understand the output language - else - to_chat(L, "[src] translates, \"[langset.scramble(message)]\"") +/obj/item/device/universal_translator/proc/user_understands(mob/M, mob/living/L, list/message_pieces) + for(var/datum/multilingual_say_piece/S in message_pieces) + if(S.speaking && !L.say_understands(M, S.speaking)) + return FALSE + return TRUE //Let's try an ear-worn version /obj/item/device/universal_translator/ear diff --git a/code/game/objects/items/devices/translocator_vr.dm b/code/game/objects/items/devices/translocator_vr.dm index f171f147c3..40c61b1c2c 100644 --- a/code/game/objects/items/devices/translocator_vr.dm +++ b/code/game/objects/items/devices/translocator_vr.dm @@ -25,9 +25,15 @@ var/list/warned_users = list() var/list/logged_events = list() + var/list/radial_images = list() + + var/static/radial_plus = image(icon = 'icons/mob/radial_vr.dmi', icon_state = "tl_plus") + var/static/radial_set = image(icon = 'icons/mob/radial_vr.dmi', icon_state = "tl_set") + var/static/radial_seton = image(icon = 'icons/mob/radial_vr.dmi', icon_state = "tl_seton") /obj/item/device/perfect_tele/Initialize() . = ..() + flags |= NOBLUDGEON if(cell_type) power_source = new cell_type(src) @@ -37,6 +43,8 @@ spk.set_up(5, 0, src) spk.attach(src) + rebuild_radial_images() + /obj/item/device/perfect_tele/Destroy() // Must clear the beacon's backpointer or we won't GC. Someday maybe do something nicer even. for(var/obj/item/device/perfect_tele_beacon/B in beacons) @@ -56,6 +64,28 @@ ..() +/obj/item/device/perfect_tele/proc/rebuild_radial_images() + radial_images.Cut() + + var/index = 1 + for(var/bcn in beacons) //Grumble + var/image/I = image(icon = 'icons/mob/radial_vr.dmi', icon_state = "tl_[index]") + + var/obj/item/device/perfect_tele_beacon/beacon = beacons[bcn] + if(destination == beacon) + I.overlays += radial_seton + else + I.overlays += radial_set + + radial_images[bcn] = I + + index++ + + if(beacons_left) + var/image/I = image(icon = 'icons/mob/radial_vr.dmi', icon_state = "tl_[index]") + I.overlays += radial_plus + radial_images["New Beacon"] = I + /obj/item/device/perfect_tele/attack_hand(mob/user) if(user.get_inactive_hand() == src) unload_ammo(user) @@ -74,6 +104,13 @@ else to_chat(user,"[src] does not have a power cell.") +/obj/item/device/perfect_tele/proc/check_menu(var/mob/living/user) + if(!istype(user)) + return FALSE + if(user.incapacitated() || !user.Adjacent(src)) + return FALSE + return TRUE + /obj/item/device/perfect_tele/attack_self(mob/user) if(loc_network) for(var/obj/item/device/perfect_tele_beacon/stationary/nb in premade_tele_beacons) @@ -87,7 +124,45 @@ and tele-vore. Make sure you carefully examine someone's OOC prefs before teleporting them if you are \ going to use this device for ERP purposes. This device records all warnings given and teleport events for \ admin review in case of pref-breaking, so just don't do it.","OOC WARNING") + + var/choice = show_radial_menu(user, src, radial_images, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + + if(!choice) + return + + else if(choice == "New Beacon") + if(beacons_left <= 0) + to_chat(user, "The translocator can't support any more beacons!") + return + var/new_name = html_encode(input(user,"New beacon's name (2-20 char):","[src]") as text|null) + if(!check_menu(user)) + return + + if(length(new_name) > 20 || length(new_name) < 2) + to_chat(user, "Entered name length invalid (must be longer than 2, no more than than 20).") + return + + if(new_name in beacons) + to_chat(user, "No duplicate names, please. '[new_name]' exists already.") + return + + var/obj/item/device/perfect_tele_beacon/nb = new(get_turf(src)) + nb.tele_name = new_name + nb.tele_hand = src + nb.creator = user.ckey + beacons[new_name] = nb + beacons_left-- + if(isliving(user)) + var/mob/living/L = user + L.put_in_any_hand_if_possible(nb) + rebuild_radial_images() + + else + destination = beacons[choice] + rebuild_radial_images() + + /* Ye olde text-based way var/choice = alert(user,"What do you want to do?","[src]","Create Beacon","Cancel","Target Beacon") switch(choice) if("Create Beacon") @@ -124,6 +199,7 @@ to_chat(user,"Destination set to '[target]'.") else return + */ /obj/item/device/perfect_tele/attackby(obj/W, mob/user) if(istype(W,cell_type) && !power_source) diff --git a/code/game/objects/items/devices/tvcamera.dm b/code/game/objects/items/devices/tvcamera.dm index 3fdaa5e79f..e8b6df0b98 100644 --- a/code/game/objects/items/devices/tvcamera.dm +++ b/code/game/objects/items/devices/tvcamera.dm @@ -22,9 +22,9 @@ ..() /obj/item/device/tvcamera/examine() - ..() - to_chat(usr, "Video feed is [camera.status ? "on" : "off"]") - to_chat(usr, "Audio feed is [radio.broadcasting ? "on" : "off"]") + . = ..() + . += "Video feed is [camera.status ? "on" : "off"]" + . += "Audio feed is [radio.broadcasting ? "on" : "off"]" /obj/item/device/tvcamera/Initialize() . = ..() @@ -38,9 +38,9 @@ radio.icon_state = src.icon_state update_icon() -/obj/item/device/tvcamera/hear_talk(mob/living/M, msg, var/verb="says", datum/language/speaking=null) - radio.hear_talk(M,msg,verb,speaking) - ..() +/obj/item/device/tvcamera/hear_talk(mob/M, list/message_pieces, verb) + radio.hear_talk(M, message_pieces, verb) + . = ..() /obj/item/device/tvcamera/attack_self(mob/user) add_fingerprint(user) diff --git a/code/game/objects/items/paintkit.dm b/code/game/objects/items/paintkit.dm index 4b3bd408d2..a0bebc699f 100644 --- a/code/game/objects/items/paintkit.dm +++ b/code/game/objects/items/paintkit.dm @@ -11,8 +11,8 @@ var/list/allowed_types = list() /obj/item/device/kit/examine() - ..() - to_chat(usr, "It has [uses] use\s left.") + . = ..() + . += "It has [uses] use\s left." /obj/item/device/kit/proc/use(var/amt, var/mob/user) uses -= amt @@ -216,11 +216,11 @@ /obj/item/device/kit/paint/examine() - ..() - to_chat(usr, "This kit will convert an exosuit into: [new_name].") - to_chat(usr, "This kit can be used on the following exosuit models:") + . = ..() + . += "This kit will convert an exosuit into: [new_name]." + . += "This kit can be used on the following exosuit models:" for(var/exotype in allowed_types) - to_chat(usr, "- [capitalize(exotype)]") + . += "- [capitalize(exotype)]" /obj/item/device/kit/paint/customize(var/obj/mecha/M, var/mob/user) if(!can_customize(M)) diff --git a/code/game/objects/items/robobag.dm b/code/game/objects/items/robobag.dm index f367f6a145..33c3ba89ed 100644 --- a/code/game/objects/items/robobag.dm +++ b/code/game/objects/items/robobag.dm @@ -27,9 +27,9 @@ var/obj/item/clothing/accessory/badge/corptag // The tag on the bag. /obj/structure/closet/body_bag/cryobag/robobag/examine(mob/user) - ..() - if(Adjacent(user) && corptag) - to_chat(user, "\The [src] has a [corptag] attached to it.") + . = ..() + if(corptag && Adjacent(user)) + . += "[src] has a [corptag] attached to it." /obj/structure/closet/body_bag/cryobag/robobag/update_icon() overlays.Cut() diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index c3bc83d3b9..982236f43c 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -18,12 +18,12 @@ break ..() // delete target - Move() - ..() + Moved(atom/old_loc, direction, forced = FALSE) + . = ..() // After target moves, check for nearby stakes. If associated, move to target for(var/obj/structure/target_stake/M in view(3,src)) if(M.density == 0 && M.pinned_target == src) - M.loc = loc + M.forceMove(loc) // This may seem a little counter-intuitive but I assure you that's for a purpose. // Stakes are the ones that carry targets, yes, but in the stake code we set diff --git a/code/game/objects/items/stacks/fifty_spawner.dm b/code/game/objects/items/stacks/fifty_spawner.dm index 6cd9051c6f..81dfce9691 100644 --- a/code/game/objects/items/stacks/fifty_spawner.dm +++ b/code/game/objects/items/stacks/fifty_spawner.dm @@ -9,9 +9,13 @@ /obj/fiftyspawner/Initialize() ..() //We're not returning . because we're going to ask to be deleted. - var/obj/item/stack/M = new type_to_spawn(get_turf(src)) + var/turf/T = get_turf(src) + var/obj/item/stack/M = new type_to_spawn(T) M.amount = M.max_amount //some stuff spawns with 60, we're still calling it fifty M.update_icon() // Some stacks have different sprites depending on how full they are. + var/obj/structure/closet/C = locate() in T + if(C) + C.contents += M return INITIALIZE_HINT_QDEL //Bye! /obj/fiftyspawner/rods diff --git a/code/game/objects/items/stacks/marker_beacons.dm b/code/game/objects/items/stacks/marker_beacons.dm index 93462c640e..88eb8e6271 100644 --- a/code/game/objects/items/stacks/marker_beacons.dm +++ b/code/game/objects/items/stacks/marker_beacons.dm @@ -42,9 +42,9 @@ var/list/marker_beacon_colors = list( update_icon() /obj/item/stack/marker_beacon/examine(mob/user) - ..() - to_chat(user, "Use in-hand to place a [singular_name].") - to_chat(user, "Alt-click to select a color. Current color is [picked_color].") + . = ..() + . += "Use in-hand to place a [singular_name]." + . += "Alt-click to select a color. Current color is [picked_color]." /obj/item/stack/marker_beacon/update_icon() icon_state = "[initial(icon_state)][lowertext(picked_color)]" @@ -93,8 +93,8 @@ var/list/marker_beacon_colors = list( update_icon() /obj/structure/marker_beacon/examine(mob/user) - ..() - to_chat(user, "Alt-click to select a color. Current color is [picked_color].") + . = ..() + . += "Alt-click to select a color. Current color is [picked_color]." /obj/structure/marker_beacon/update_icon() while(!picked_color || !marker_beacon_colors[picked_color]) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 8887dd0053..20f098e5d1 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -111,7 +111,7 @@ continue if(used == amount) break - if(!do_mob(user, M, W.damage/3)) + if(!do_mob(user, M, W.damage/3, exclusive = TRUE)) to_chat(user, "You must stand still to bandage wounds.") break @@ -174,7 +174,7 @@ continue if(used == amount) break - if(!do_mob(user, M, W.damage/5)) + if(!do_mob(user, M, W.damage/5, exclusive = TRUE)) to_chat(user, "You must stand still to bandage wounds.") break @@ -234,7 +234,7 @@ else user.visible_message("\The [user] starts salving wounds on [M]'s [affecting.name].", \ "You start salving the wounds on [M]'s [affecting.name]." ) - if(!do_mob(user, M, 10)) + if(!do_mob(user, M, 10, exclusive = TRUE)) to_chat(user, "You must stand still to salve wounds.") return 1 if(affecting.is_salved()) // We do a second check after the delay, in case it was bandaged after the first check. @@ -281,7 +281,7 @@ continue //if(used == amount) //VOREStation Edit // break //VOREStation Edit - if(!do_mob(user, M, W.damage/5)) + if(!do_mob(user, M, W.damage/5, exclusive = TRUE)) to_chat(user, "You must stand still to bandage wounds.") break if(affecting.is_bandaged() && affecting.is_disinfected()) // We do a second check after the delay, in case it was bandaged after the first check. @@ -336,7 +336,7 @@ else user.visible_message("\The [user] starts salving wounds on [M]'s [affecting.name].", \ "You start salving the wounds on [M]'s [affecting.name]." ) - if(!do_mob(user, M, 10)) + if(!do_mob(user, M, 10, exclusive = TRUE)) to_chat(user, "You must stand still to salve wounds.") return 1 if(affecting.is_salved()) // We do a second check after the delay, in case it was bandaged after the first check. @@ -383,7 +383,7 @@ to_chat(user, "You can't apply a splint to the arm you're using!") return user.visible_message("[user] starts to apply \the [src] to their [limb].", "You start to apply \the [src] to your [limb].", "You hear something being wrapped.") - if(do_after(user, 50, M)) + if(do_after(user, 50, M, exclusive = TRUE)) if(affecting.splinted) to_chat(user, "[M]'s [limb] is already splinted!") return diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm index bc1f6486c1..3d5aeffa3d 100644 --- a/code/game/objects/items/stacks/nanopaste.dm +++ b/code/game/objects/items/stacks/nanopaste.dm @@ -16,7 +16,7 @@ if (istype(M,/mob/living/silicon/robot)) //Repairing cyborgs var/mob/living/silicon/robot/R = M if (R.getBruteLoss() || R.getFireLoss()) - if(do_after(user,7 * toolspeed)) + if(do_after(user, 7 * toolspeed, exclusive = TRUE)) R.adjustBruteLoss(-15) R.adjustFireLoss(-15) R.updatehealth() @@ -51,9 +51,9 @@ else if(can_use(1)) user.setClickCooldown(user.get_attack_speed(src)) if(S.open >= 2) - if(do_after(user,5 * toolspeed)) + if(do_after(user, 5 * toolspeed, exclusive = TRUE)) S.heal_damage(restoration_internal, restoration_internal, robo_repair = 1) - else if(do_after(user,5 * toolspeed)) + else if(do_after(user, 5 * toolspeed, exclusive = TRUE)) S.heal_damage(restoration_external,restoration_external, robo_repair =1) H.updatehealth() use(1) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 324ade23ce..1aa69305f5 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -58,11 +58,13 @@ item_state = initial(icon_state) /obj/item/stack/examine(mob/user) - if(..(user, 1)) + . = ..() + + if(Adjacent(user)) if(!uses_charge) - to_chat(user, "There are [src.amount] [src.singular_name]\s in the stack.") + . += "There are [src.amount] [src.singular_name]\s in the stack." else - to_chat(user, "There is enough charge for [get_amount()].") + . += "There is enough charge for [get_amount()]." /obj/item/stack/attack_self(mob/user as mob) list_recipes(user) @@ -143,7 +145,7 @@ if (recipe.time) to_chat(user, "Building [recipe.title] ...") - if (!do_after(user, recipe.time)) + if (!do_after(user, recipe.time, exclusive = TRUE)) return if (use(required)) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index cb177e0080..5eb7a8f69a 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -154,8 +154,9 @@ drop_sound = 'sound/items/drop/gun.ogg' examine(mob/user) - if(..(user, 2) && bullets) - to_chat(user, "It is loaded with [bullets] foam darts!") + . = ..() + if(bullets && get_dist(user, src) <= 2) + . += "It is loaded with [bullets] foam darts!" attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/toy/ammo/crossbow)) @@ -315,8 +316,8 @@ update_icon() /obj/item/toy/sword/examine(mob/user) - ..() - to_chat(user, "Alt-click to recolor it.") + . = ..() + . += "Alt-click to recolor it." /obj/item/toy/sword/attackby(obj/item/weapon/W, mob/user) if(istype(W, /obj/item/device/multitool) && !active) @@ -379,75 +380,6 @@ playsound(src, 'sound/effects/snap.ogg', 50, 1) qdel(src) -/* - * Water flower - */ -/obj/item/toy/waterflower - name = "water flower" - desc = "A seemingly innocent sunflower...with a twist." - icon = 'icons/obj/device.dmi' - drop_sound = 'sound/items/drop/food.ogg' - icon_state = "sunflower" - item_state = "sunflower" - var/empty = 0 - slot_flags = SLOT_HOLSTER - -/obj/item/toy/waterflower/New() - var/datum/reagents/R = new/datum/reagents(10) - reagents = R - R.my_atom = src - R.add_reagent("water", 10) - -/obj/item/toy/waterflower/attack(mob/living/carbon/human/M as mob, mob/user as mob) - return - -/obj/item/toy/waterflower/afterattack(atom/A as mob|obj, mob/user as mob) - - if (istype(A, /obj/item/weapon/storage/backpack )) - return - - else if (locate (/obj/structure/table, src.loc)) - return - - else if (istype(A, /obj/structure/reagent_dispensers/watertank) && get_dist(src,A) <= 1) - A.reagents.trans_to_obj(src, 10) - to_chat(user, "You refill your flower!") - return - - else if (src.reagents.total_volume < 1) - src.empty = 1 - to_chat(user, "Your flower has run dry!") - return - - else - src.empty = 0 - - - var/obj/effect/decal/D = new/obj/effect/decal/(get_turf(src)) - D.name = "water" - D.icon = 'icons/obj/chemical.dmi' - D.icon_state = "chempuff" - D.create_reagents(5) - src.reagents.trans_to_obj(D, 1) - playsound(src.loc, 'sound/effects/spray3.ogg', 50, 1, -6) - - spawn(0) - for(var/i=0, i<1, i++) - step_towards(D,A) - D.reagents.touch_turf(get_turf(D)) - for(var/atom/T in get_turf(D)) - D.reagents.touch(T) - if(ismob(T) && T:client) - to_chat(T:client, "\The [user] has sprayed you with water!") - sleep(4) - qdel(D) - - return - -/obj/item/toy/waterflower/examine(mob/user) - if(..(user, 0)) - to_chat(user, "[bicon(src)] [src.reagents.total_volume] units of water left!") - /* * Bosun's whistle */ @@ -893,11 +825,11 @@ var/obj/item/stored_item // Note: Stored items can't be bigger than the plushie itself. /obj/structure/plushie/examine(mob/user) - ..() + . = ..() if(opened) - to_chat(user, "You notice an incision has been made on [src].") + . += "You notice an incision has been made on [src]." if(in_range(user, src) && stored_item) - to_chat(user, "You can see something in there...") + . += "You can see something in there..." /obj/structure/plushie/attack_hand(mob/user) user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) @@ -992,11 +924,11 @@ /obj/item/toy/plushie/examine(mob/user) - ..() + . = ..() if(opened) - to_chat(user, "You notice an incision has been made on [src].") + . += "You notice an incision has been made on [src]." if(in_range(user, src) && stored_item) - to_chat(user, "You can see something in there...") + . += "You can see something in there..." /obj/item/toy/plushie/attack_self(mob/user as mob) if(stored_item && opened && !searching) diff --git a/code/game/objects/items/toys_vr.dm b/code/game/objects/items/toys_vr.dm new file mode 100644 index 0000000000..1b456393db --- /dev/null +++ b/code/game/objects/items/toys_vr.dm @@ -0,0 +1,53 @@ +/obj/item/toy/plushie/lizardplushie + name = "lizard plushie" + desc = "An adorable stuffed toy that resembles a lizardperson." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "plushie_lizard" + attack_verb = list("clawed", "hissed", "tail slapped") + +/obj/item/toy/plushie/lizardplushie/kobold + name = "kobold plushie" + desc = "An adorable stuffed toy that resembles a kobold." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "kobold" + +/obj/item/toy/plushie/slimeplushie + name = "slime plushie" + desc = "An adorable stuffed toy that resembles a slime. It is practically just a hacky sack." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "plushie_slime" + attack_verb = list("blorbled", "slimed", "absorbed", "glomped") + gender = FEMALE //given all the jokes and drawings, I'm not sure the xenobiologists would make a slimeboy + +/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..." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "box" + attack_verb = list("open", "closed", "packed", "hidden", "rigged", "bombed", "sent", "gave") + +/obj/item/toy/plushie/borgplushie + name = "robot plushie" + desc = "An adorable stuffed toy of a robot." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "securityk9" + attack_verb = list("beeped", "booped", "pinged") + +/obj/item/toy/plushie/borgplushie/medihound + icon_state = "medihound" + +/obj/item/toy/plushie/borgplushie/scrubpuppy + icon_state = "scrubpuppy" + +/obj/item/toy/plushie/foxbear + name = "toy fox" + desc = "Issa fox!" + icon = 'icons/obj/toy_vr.dmi' + icon_state = "fox" + +/obj/item/toy/plushie/nukeplushie + name = "operative plushie" + desc = "A stuffed toy that resembles a syndicate nuclear operative. The tag claims operatives to be purely fictitious." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "plushie_nuke" + attack_verb = list("shot", "nuked", "detonated") diff --git a/code/game/objects/items/uav.dm b/code/game/objects/items/uav.dm new file mode 100644 index 0000000000..166ad9e9a5 --- /dev/null +++ b/code/game/objects/items/uav.dm @@ -0,0 +1,360 @@ +#define UAV_OFF 0 +#define UAV_ON 1 +#define UAV_PAIRING 2 +#define UAV_PACKED 3 + +/obj/item/device/uav + name = "recon skimmer" + desc = "A semi-portable reconisance drone that folds into a backpack-sized carrying case." + icon = 'icons/obj/uav.dmi' + icon_state = "uav" + + var/obj/item/weapon/cell/cell + var/cell_type = null //Can put a starting cell here + + density = 1 //Is dense, but not anchored, so you can swap with it + slowdown = 3 //Heevvee. + + health = 100 + var/power_per_process = 50 // About 6.5 minutes of use on a high-cell (10,000) + var/state = UAV_OFF + + var/datum/effect/effect/system/ion_trail_follow/ion_trail + + var/list/mob/living/masters + + // So you know which is which + var/nickname = "Generic Droan" + + // Radial menu + var/static/image/radial_pickup = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_pickup") + var/static/image/radial_wrench = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_wrench") + var/static/image/radial_power = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_power") + var/static/image/radial_pair = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_pair") + + // Movement cooldown + var/next_move = 0 + + // Idle shutdown time + var/no_masters_time = 0 + +/obj/item/device/uav/loaded + cell_type = /obj/item/weapon/cell/high + +/obj/item/device/uav/Initialize() + . = ..() + + if(!cell && cell_type) + cell = new cell_type + + ion_trail = new /datum/effect/effect/system/ion_trail_follow() + ion_trail.set_up(src) + ion_trail.stop() + +/obj/item/device/uav/Destroy() + qdel_null(cell) + qdel_null(ion_trail) + LAZYCLEARLIST(masters) + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/item/device/uav/examine(mob/user) + . = ..() + if(Adjacent(user)) + . += "It has '[nickname]' scribbled on the side." + if(!cell) + . += "It appears to be missing a power cell." + + if(health <= (initial(health)/4)) + . += "It looks like it might break at any second!" + else if(health <= (initial(health)/2)) + . += "It looks pretty beaten up..." + +/obj/item/device/uav/attack_hand(var/mob/user) + //Has to be on the ground to work with it properly + if(!isturf(loc)) + return ..() + + var/list/options = list( + "Pick Up" = radial_pickup, + "(Dis)Assemble" = radial_wrench, + "Toggle Power" = radial_power, + "Pairing Mode" = radial_pair) + var/choice = show_radial_menu(user, src, options, require_near = !issilicon(user)) + + switch(choice) + // Can pick up when off or packed + if("Pick Up") + if(state == UAV_OFF || state == UAV_PACKED) + return ..() + else + to_chat(user,"Turn [nickname] off or pack it first!") + return + // Can disasemble or reassemble from packed or off (and this one takes time) + if("(Dis)Assemble") + if(can_transition_to(state == UAV_PACKED ? UAV_OFF : UAV_PACKED, user) && do_after(user, 10 SECONDS, src)) + return toggle_packed(user) + // Can toggle power from on and off + if("Toggle Power") + if(can_transition_to(state == UAV_ON ? UAV_OFF : UAV_ON, user)) + return toggle_power(user) + // Can pair when off + if("Pairing Mode") + if(can_transition_to(state == UAV_PAIRING ? UAV_OFF : UAV_PAIRING, user)) + return toggle_pairing(user) + +/obj/item/device/uav/attackby(var/obj/item/I, var/mob/user) + if(istype(I, /obj/item/modular_computer) && state == UAV_PAIRING) + var/obj/item/modular_computer/MC = I + LAZYDISTINCTADD(MC.paired_uavs, weakref(src)) + playsound(src, 'sound/machines/buttonbeep.ogg', 50, 1) + visible_message("[user] pairs [I] to [nickname]") + toggle_pairing() + + else if(I.is_screwdriver() && cell) + if(do_after(user, 3 SECONDS, src)) + to_chat(user, "You remove [cell] into [nickname].") + playsound(src, I.usesound, 50, 1) + power_down() + cell.forceMove(get_turf(src)) + cell = null + + else if(istype(I, /obj/item/weapon/cell) && !cell) + if(do_after(user, 3 SECONDS, src)) + to_chat(user, "You insert [I] into [nickname].") + playsound(src, 'sound/items/deconstruct.ogg', 50, 1) + power_down() + user.remove_from_mob(I) + I.forceMove(src) + cell = I + + else if(istype(I, /obj/item/weapon/pen) || istype(I, /obj/item/device/flashlight/pen)) + var/tmp_label = sanitizeSafe(input(user, "Enter a nickname for [src]", "Nickname", nickname), MAX_NAME_LEN) + if(length(tmp_label) > 50 || length(tmp_label) < 3) + to_chat(user, "The nickname must be between 3 and 50 characters.") + else + to_chat(user, "You scribble your new nickname on the side of [src].") + nickname = tmp_label + desc = initial(desc) + " This one has '[nickname]' scribbled on the side." + else + return ..() + +/obj/item/device/uav/proc/can_transition_to(var/new_state, var/mob/user) + switch(state) //Current one + if(UAV_ON) + if(new_state == UAV_OFF || new_state == UAV_PACKED) + . = TRUE + if(UAV_OFF) + if(new_state == UAV_ON || new_state == UAV_PACKED || new_state == UAV_PAIRING) + . = TRUE + if(UAV_PAIRING) + if(new_state == UAV_OFF) + . = TRUE + if(UAV_PACKED) + if(new_state == UAV_OFF) + . = TRUE + + if(!.) + if(user) + to_chat(user, "You can't do that while [nickname] is in this state.") + return FALSE + +/obj/item/device/uav/update_icon() + cut_overlays() + switch(state) + if(UAV_PAIRING) + add_overlay("[initial(icon_state)]_pairing") + icon_state = "[initial(icon_state)]" + if(UAV_ON) + icon_state = "[initial(icon_state)]_on" + if(UAV_OFF) + icon_state = "[initial(icon_state)]" + if(UAV_PACKED) + icon_state = "[initial(icon_state)]_packed" + +/obj/item/device/uav/process() + if(cell?.use(power_per_process) != power_per_process) + visible_message("[src] sputters and thuds to the ground, inert.") + playsound(src, 'sound/items/drop/metalboots.ogg', 75, 1) + power_down() + health -= initial(health)*0.25 //Lose 25% of your original health + + if(LAZYLEN(masters)) + no_masters_time = 0 + else if(no_masters_time++ > 50) + power_down() + +/obj/item/device/uav/proc/toggle_pairing() + switch(state) + if(UAV_PAIRING) + state = UAV_OFF + update_icon() + return TRUE + if(UAV_OFF) + state = UAV_PAIRING + update_icon() + return TRUE + return FALSE + +/obj/item/device/uav/proc/toggle_power() + switch(state) + if(UAV_OFF) + power_up() + return TRUE + if(UAV_ON) + power_down() + return TRUE + return FALSE + +/obj/item/device/uav/proc/toggle_packed() + if(UAV_ON) + power_down() + switch(state) + if(UAV_OFF) //Packing + state = UAV_PACKED + w_class = ITEMSIZE_LARGE + slowdown = 1 + density = FALSE + update_icon() + return TRUE + if(UAV_PACKED) //Unpacking + state = UAV_OFF + w_class = ITEMSIZE_HUGE + slowdown = 3 + density = TRUE + update_icon() + return TRUE + return FALSE + +/obj/item/device/uav/proc/power_up() + if(state != UAV_OFF || !isturf(loc)) + return + if(cell?.use(power_per_process) != power_per_process) + visible_message("[src] sputters and chugs as it tries, and fails, to power up.") + return + + state = UAV_ON + update_icon() + start_hover() + set_light(4, 4, "#FFFFFF") + START_PROCESSING(SSobj, src) + no_masters_time = 0 + visible_message("[nickname] buzzes and lifts into the air.") + +/obj/item/device/uav/proc/power_down() + if(state != UAV_ON) + return + + state = UAV_OFF + update_icon() + stop_hover() + set_light(0) + LAZYCLEARLIST(masters) + STOP_PROCESSING(SSobj, src) + visible_message("[nickname] gracefully settles onto the ground.") + +//////////////// Helpers +/obj/item/device/uav/get_cell() + return cell + +/obj/item/device/uav/relaymove(var/mob/user, direction, signal = 1) + if(signal && state == UAV_ON && (weakref(user) in masters)) + if(next_move <= world.time) + next_move = world.time + (1 SECOND/signal) + step(src, direction) + return TRUE // Even if we couldn't step, we're taking credit for absorbing the move + return FALSE + +/obj/item/device/uav/proc/get_status_string() + return "[nickname] - [get_x(src)],[get_y(src)],[get_z(src)] - I:[health]/[initial(health)] - C:[cell ? "[cell.charge]/[cell.maxcharge]" : "Not Installed"]" + +/obj/item/device/uav/proc/add_master(var/mob/living/M) + LAZYDISTINCTADD(masters, weakref(M)) + +/obj/item/device/uav/proc/remove_master(var/mob/living/M) + LAZYREMOVE(masters, weakref(M)) + +/obj/item/device/uav/check_eye() + if(state == UAV_ON) + return 0 + else + return -1 + +/obj/item/device/uav/proc/start_hover() + if(!ion_trail.on) //We'll just use this to store if we're floating or not + ion_trail.start() + var/amplitude = 2 //maximum displacement from original position + var/period = 36 //time taken for the mob to go up >> down >> original position, in deciseconds. Should be multiple of 4 + + var/top = old_y + amplitude + var/bottom = old_y - amplitude + var/half_period = period / 2 + var/quarter_period = period / 4 + + animate(src, pixel_y = top, time = quarter_period, easing = SINE_EASING | EASE_OUT, loop = -1) //up + animate(pixel_y = bottom, time = half_period, easing = SINE_EASING, loop = -1) //down + animate(pixel_y = old_y, time = quarter_period, easing = SINE_EASING | EASE_IN, loop = -1) //back + +/obj/item/device/uav/proc/stop_hover() + if(ion_trail.on) + ion_trail.stop() + animate(src, pixel_y = old_y, time = 5, easing = SINE_EASING | EASE_IN) //halt animation + +/obj/item/device/uav/hear_talk(var/mob/M, list/message_pieces, verb) + var/name_used = M.GetVoice() + for(var/wr_master in masters) + var/weakref/wr = wr_master + var/mob/master = wr.resolve() + var/message = master.combine_message(message_pieces, verb, M) + var/rendered = "UAV received: [name_used] [message]" + master.show_message(rendered, 2) + +/obj/item/device/uav/see_emote(var/mob/living/M, text) + for(var/wr_master in masters) + var/weakref/wr = wr_master + var/mob/master = wr.resolve() + var/rendered = "UAV received, [text]" + master.show_message(rendered, 2) + +/obj/item/device/uav/show_message(msg, type, alt, alt_type) + for(var/wr_master in masters) + var/weakref/wr = wr_master + var/mob/master = wr.resolve() + var/rendered = "UAV received, [msg]" + master.show_message(rendered, type) + +/obj/item/device/uav/take_damage(var/damage) + health -= damage + CheckHealth() + return + +/obj/item/device/uav/attack_generic(var/mob/user, var/damage, var/attack_verb) + visible_message("[user] [attack_verb] the [src]!") + playsound(src, 'sound/weapons/smash.ogg', 50, 1) + user.do_attack_animation(src) + health -= damage + CheckHealth() + return + +/obj/item/device/uav/ex_act(severity) + switch(severity) + if(1.0) + die() + if(2.0) + health -= 25 + CheckHealth() + +/obj/item/device/uav/proc/CheckHealth() + if(health <= 0) + die() + +/obj/item/device/uav/proc/die() + visible_message("[src] shorts out and explodes!") + power_down() + var/turf/T = get_turf(src) + qdel(src) + explosion(T, -1, 0, 1, 2) //Not very large + +#undef UAV_OFF +#undef UAV_ON +#undef UAV_PACKED \ No newline at end of file diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 034063c453..5a0deea83a 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -27,27 +27,29 @@ var/window_type = /obj/structure/window/reinforced/full var/material_to_use = DEFAULT_WALL_MATERIAL // So badmins can make RCDs that print diamond walls. var/make_rwalls = FALSE // If true, when building walls, they will be reinforced. - +/* VOREStation Removal - Unused /obj/item/weapon/rcd/Initialize() + src.spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) return ..() - +*/ /obj/item/weapon/rcd/Destroy() QDEL_NULL(spark_system) spark_system = null return ..() /obj/item/weapon/rcd/examine(mob/user) - ..() - to_chat(user, display_resources()) + . = ..() + . += display_resources() // Used to show how much stuff (matter units, cell charge, etc) is left inside. /obj/item/weapon/rcd/proc/display_resources() return "It currently holds [stored_matter]/[max_stored_matter] matter-units." // Used to add new cartridges. +/* VOREStation Tweak - Wow this is annoying, moved to _vr file for overhaul /obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user) if(istype(W, /obj/item/weapon/rcd_ammo)) var/obj/item/weapon/rcd_ammo/cartridge = W @@ -61,9 +63,10 @@ to_chat(user, span("notice", "The RCD now holds [stored_matter]/[max_stored_matter] matter-units.")) return TRUE return ..() - +*/ // Changes which mode it is on. /obj/item/weapon/rcd/attack_self(mob/living/user) +/* VOREStation Removal - Moved to VR if(mode_index >= modes.len) // Shouldn't overflow unless someone messes with it in VV poorly but better safe than sorry. mode_index = 1 else @@ -74,7 +77,7 @@ if(prob(20)) src.spark_system.start() - +*/ // Removes resources if the RCD can afford it. /obj/item/weapon/rcd/proc/consume_resources(amount) if(!can_afford(amount)) @@ -118,6 +121,7 @@ rcd_beam = beam_origin.Beam(A, icon_state = "rped_upgrade", time = max(true_delay, 5)) busy = TRUE + perform_effect(A, true_delay) //VOREStation Add if(do_after(user, true_delay, target = A)) busy = FALSE // Doing another check in case we lost matter during the delay for whatever reason. diff --git a/code/game/objects/items/weapons/RCD_vr.dm b/code/game/objects/items/weapons/RCD_vr.dm new file mode 100644 index 0000000000..5cfc822efa --- /dev/null +++ b/code/game/objects/items/weapons/RCD_vr.dm @@ -0,0 +1,218 @@ +/obj/item/weapon/rcd + icon = 'icons/obj/tools_vr.dmi' + icon_state = "rcd" + item_state = "rcd" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_vr.dmi', + ) + var/ammostate + var/list/effects = list() + + var/static/image/radial_image_airlock = image(icon = 'icons/mob/radial.dmi', icon_state = "airlock"), + var/static/image/radial_image_decon = image(icon= 'icons/mob/radial.dmi', icon_state = "delete"), + var/static/image/radial_image_grillewind = image(icon = 'icons/mob/radial.dmi', icon_state = "grillewindow"), + var/static/image/radial_image_floorwall = image(icon = 'icons/mob/radial.dmi', icon_state = "wallfloor") + +// Ammo for the (non-electric) RCDs. +/obj/item/weapon/rcd_ammo + name = "compressed matter cartridge" + desc = "Highly compressed matter for the RCD." + icon = 'icons/obj/tools_vr.dmi' + icon_state = "rcdammo" + item_state = "rcdammo" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_vr.dmi', + ) + +/obj/item/weapon/rcd/Initialize() + . = ..() + update_icon() + +/obj/item/weapon/rcd/consume_resources(amount) + . = ..() + update_icon() + +/obj/item/weapon/rcd/update_icon() + var/nearest_ten = round((stored_matter/max_stored_matter)*10, 1) + + //Just to prevent updates every use + if(ammostate == nearest_ten) + return //No change + ammostate = nearest_ten + + cut_overlays() + + //Main sprite update + if(!nearest_ten) + icon_state = "[initial(icon_state)]_empty" + else + icon_state = "[initial(icon_state)]" + + add_overlay("[initial(icon_state)]_charge[nearest_ten]") + +/obj/item/weapon/rcd/proc/perform_effect(var/atom/A, var/time_taken) + effects[A] = new /obj/effect/constructing_effect(get_turf(A), time_taken, modes[mode_index]) + +/obj/item/weapon/rcd/use_rcd(atom/A, mob/living/user) + . = ..() + cleanup_effect(A) + +/obj/item/weapon/rcd/proc/cleanup_effect(var/atom/A) + if(A in effects) + qdel(effects[A]) + effects -= A + +/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user) + if(istype(W, /obj/item/weapon/rcd_ammo)) + var/obj/item/weapon/rcd_ammo/cartridge = W + var/can_store = min(max_stored_matter - stored_matter, cartridge.remaining) + if(can_store <= 0) + to_chat(user, span("warning", "There's either no space or \the [cartridge] is empty!")) + return FALSE + stored_matter += can_store + cartridge.remaining -= can_store + if(!cartridge.remaining) + to_chat(user, span("warning", "\The [cartridge] dissolves as it empties of compressed matter.")) + user.drop_from_inventory(W) + qdel(W) + playsound(src.loc, 'sound/machines/click.ogg', 50, 1) + to_chat(user, span("notice", "The RCD now holds [stored_matter]/[max_stored_matter] matter-units.")) + update_icon() + return TRUE + return ..() + +/obj/item/weapon/rcd/proc/check_menu(mob/living/user) + if(!istype(user)) + return FALSE + if(user.incapacitated() || !user.Adjacent(src)) + return FALSE + return TRUE + +/obj/item/weapon/rcd/attack_self(mob/living/user) + ..() + var/list/choices = list( + "Airlock" = radial_image_airlock, + "Deconstruct" = radial_image_decon, + "Grilles & Windows" = radial_image_grillewind, + "Floors & Walls" = radial_image_floorwall + ) + /* We don't have these features yet + if(upgrade & RCD_UPGRADE_FRAMES) + choices += list( + "Machine Frames" = image(icon = 'icons/mob/radial.dmi', icon_state = "machine"), + "Computer Frames" = image(icon = 'icons/mob/radial.dmi', icon_state = "computer_dir"), + ) + if(upgrade & RCD_UPGRADE_SILO_LINK) + choices += list( + "Silo Link" = image(icon = 'icons/obj/mining.dmi', icon_state = "silo"), + ) + if(mode == RCD_AIRLOCK) + choices += list( + "Change Access" = image(icon = 'icons/mob/radial.dmi', icon_state = "access"), + "Change Airlock Type" = image(icon = 'icons/mob/radial.dmi', icon_state = "airlocktype") + ) + else if(mode == RCD_WINDOWGRILLE) + choices += list( + "Change Window Type" = image(icon = 'icons/mob/radial.dmi', icon_state = "windowtype") + ) + */ + var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + if(!check_menu(user)) + return + switch(choice) + if("Floors & Walls") + mode_index = modes.Find(RCD_FLOORWALL) + if("Airlock") + mode_index = modes.Find(RCD_AIRLOCK) + if("Deconstruct") + mode_index = modes.Find(RCD_DECONSTRUCT) + if("Grilles & Windows") + mode_index = modes.Find(RCD_WINDOWGRILLE) + /* We don't have these features yet + if("Machine Frames") + mode = RCD_MACHINE + if("Computer Frames") + mode = RCD_COMPUTER + change_computer_dir(user) + return + if("Change Access") + change_airlock_access(user) + return + if("Change Airlock Type") + change_airlock_setting(user) + return + if("Change Window Type") + toggle_window_type(user) + return + if("Silo Link") + toggle_silo_link(user) + return + */ + else + return + playsound(src, 'sound/effects/pop.ogg', 50, FALSE) + to_chat(user, "You change RCD's mode to '[choice]'.") + +////////////////// +/obj/item/weapon/rcd/electric/update_icon() + return + +/obj/item/weapon/rcd/shipwright + icon_state = "swrcd" + item_state = "ircd" + can_remove_rwalls = TRUE + make_rwalls = TRUE + +////////////////// +/obj/item/weapon/rcd_ammo/examine(mob/user) + . = ..() + . += display_resources() + +// Used to show how much stuff (matter units, cell charge, etc) is left inside. +/obj/item/weapon/rcd_ammo/proc/display_resources() + return "It currently holds [remaining]/[initial(remaining)] matter-units." + +////////////////// +/obj/effect/constructing_effect + icon = 'icons/effects/effects_rcd.dmi' + icon_state = "" + plane = TURF_PLANE + layer = ABOVE_TURF_LAYER + anchored = TRUE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + var/status = 0 + var/delay = 0 + +/obj/effect/constructing_effect/Initialize(mapload, rcd_delay, rcd_status) + . = ..() + status = rcd_status + delay = rcd_delay + if (status == RCD_DECONSTRUCT) + addtimer(CALLBACK(src, /atom/.proc/update_icon), 11) + delay -= 11 + icon_state = "rcd_end_reverse" + else + update_icon() + +/obj/effect/constructing_effect/update_icon() + icon_state = "rcd" + if (delay < 10) + icon_state += "_shortest" + else if (delay < 20) + icon_state += "_shorter" + else if (delay < 37) + icon_state += "_short" + if (status == RCD_DECONSTRUCT) + icon_state += "_reverse" + +/obj/effect/constructing_effect/proc/end_animation() + if (status == RCD_DECONSTRUCT) + qdel(src) + else + icon_state = "rcd_end" + addtimer(CALLBACK(src, .proc/end), 15) + +/obj/effect/constructing_effect/proc/end() + qdel(src) diff --git a/code/game/objects/items/weapons/RPD_vr.dm b/code/game/objects/items/weapons/RPD_vr.dm new file mode 100644 index 0000000000..c627956d63 --- /dev/null +++ b/code/game/objects/items/weapons/RPD_vr.dm @@ -0,0 +1,377 @@ +#define PAINT_MODE -2 +#define EATING_MODE -1 +#define ATMOS_MODE 0 +#define DISPOSALS_MODE 1 +#define TRANSIT_MODE 2 + +/obj/item/weapon/pipe_dispenser + name = "Rapid Piping Device (RPD)" + desc = "A device used to rapidly pipe things." + icon = 'icons/obj/tools_vr.dmi' + icon_state = "rpd" + item_state = "rpd" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_vr.dmi', + ) + flags = NOBLUDGEON + force = 10 + throwforce = 10 + throw_speed = 1 + throw_range = 5 + w_class = ITEMSIZE_NORMAL + matter = list(MAT_STEEL = 50000, MAT_GLASS = 25000) + var/datum/effect/effect/system/spark_spread/spark_system + var/mode = ATMOS_MODE + var/p_dir = NORTH // Next pipe will be built with this dir + var/p_flipped = FALSE // If the next pipe should be built flipped + var/paint_color = "grey" // Pipe color index for next pipe painted/built. + var/screen = ATMOS_MODE // Starts on the atmos tab. + var/piping_layer = PIPING_LAYER_DEFAULT + var/wrench_mode = FALSE + var/obj/item/weapon/tool/wrench/tool + var/datum/pipe_recipe/recipe // pipe recipie selected for display/construction + var/static/datum/pipe_recipe/first_atmos + var/static/datum/pipe_recipe/first_disposal + var/static/datum/asset/iconsheet/pipes/icon_assets + var/static/list/pipe_layers = list( + "Regular" = PIPING_LAYER_REGULAR, + "Supply" = PIPING_LAYER_SUPPLY, + "Scrubber" = PIPING_LAYER_SCRUBBER, + "Fuel" = PIPING_LAYER_FUEL, + "Aux" = PIPING_LAYER_AUX + ) + +/obj/item/weapon/pipe_dispenser/Initialize() + . = ..() + src.spark_system = new /datum/effect/effect/system/spark_spread + spark_system.set_up(5, 0, src) + spark_system.attach(src) + tool = new /obj/item/weapon/tool/wrench/cyborg(src) // RPDs have wrenches inside of them, so that they can wrench down spawned pipes without being used as superior wrenches themselves. + +/obj/item/weapon/pipe_dispenser/proc/SetupPipes() + if(!first_atmos) + first_atmos = atmos_pipe_recipes[atmos_pipe_recipes[1]][1] + recipe = first_atmos + if(!first_disposal) + first_disposal = disposal_pipe_recipes[disposal_pipe_recipes[1]][1] + +/obj/item/weapon/pipe_dispenser/Destroy() + qdel_null(spark_system) + qdel_null(tool) + return ..() + +/obj/item/weapon/pipe_dispenser/suicide_act(mob/user) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + user.visible_message("[user] points the end of the RPD down [TU.his] throat and presses a button! It looks like [TU.hes] trying to commit suicide...") + playsound(get_turf(user), 'sound/machines/click.ogg', 50, 1) + playsound(get_turf(user), 'sound/items/deconstruct.ogg', 50, 1) + return(BRUTELOSS) + +/obj/item/weapon/pipe_dispenser/attack_self(mob/user) + src.interact(user) + +// TODO - Wouldn't it be nice to have nanoui? +/obj/item/weapon/pipe_dispenser/interact(mob/user) + SetupPipes() + if(!icon_assets) + icon_assets = get_asset_datum(/datum/asset/iconsheet/pipes) + icon_assets.send(user) + + var/list/lines = list() + if(mode >= ATMOS_MODE) + lines += "

Direction:

" + switch(recipe.dirtype) + + if(PIPE_STRAIGHT) // Straight, N-S, W-E + lines += render_dir_img(recipe.icon_state,user,NORTH,"Vertical","↕") + lines += render_dir_img(recipe.icon_state,user,EAST,"Horizontal","↔") + + if(PIPE_BENDABLE) // Bent, N-W, N-E etc + lines += render_dir_img(recipe.icon_state,user,NORTH,"Vertical","↕") + lines += render_dir_img(recipe.icon_state,user,EAST,"Horizontal","↔") + lines += "
" + lines += render_dir_img(recipe.icon_state,user,NORTHWEST,"West to North","╝") + lines += render_dir_img(recipe.icon_state,user,NORTHEAST,"North to East","╚") + lines += render_dir_img(recipe.icon_state,user,SOUTHWEST,"South to West","╗") + lines += render_dir_img(recipe.icon_state,user,SOUTHEAST,"East to South","╔") + + if(PIPE_TRINARY) // Manifold + lines += render_dir_img(recipe.icon_state,user,NORTH,"West South East","╦") + lines += render_dir_img(recipe.icon_state,user,EAST,"North West South","╣") + lines += render_dir_img(recipe.icon_state,user,SOUTH,"East North West","╩") + lines += render_dir_img(recipe.icon_state,user,WEST,"South East North","╠") + + if(PIPE_TRIN_M) // Mirrored ones + //each mirror icon is 45 anticlockwise from it's real direction + lines += render_dir_img(recipe.icon_state,user,NORTH,"West South East","╦") + lines += render_dir_img(recipe.icon_state,user,EAST,"North West South","╣") + lines += render_dir_img(recipe.icon_state,user,SOUTH,"East North West","╩") + lines += render_dir_img(recipe.icon_state,user,WEST,"South East North","╠") + lines += "
" + lines += render_dir_img(recipe.icon_state_m,user,SOUTH,"West South East","╦", 1) + lines += render_dir_img(recipe.icon_state_m,user,WEST,"South East North","╠", 1) + lines += render_dir_img(recipe.icon_state_m,user,NORTH,"East North West","╩", 1) + lines += render_dir_img(recipe.icon_state_m,user,EAST,"North West South","╣", 1) + + if(PIPE_DIRECTIONAL) // Stuff with four directions - includes pumps etc. + lines += render_dir_img(recipe.icon_state,user,NORTH,"North","↑") + lines += render_dir_img(recipe.icon_state,user,EAST,"East","→") + lines += render_dir_img(recipe.icon_state,user,SOUTH,"South","↓") + lines += render_dir_img(recipe.icon_state,user,WEST,"West","←") + + if(PIPE_ONEDIR) // Single icon_state (eg 4-way manifolds) + lines += render_dir_img(recipe.icon_state,user,SOUTH,"Pipe","↕") + lines += "
" + + if(mode == ATMOS_MODE || mode == PAINT_MODE) + lines += "

Color:

" + var/i = 0 + for(var/c in pipe_colors) + ++i + lines += "[c]" + if(i == 4) + lines += "
" + i = 0 + lines += "
" + + lines += "

Mode:

" + lines += "Lay Pipes" + lines += "Eat Pipes" + lines += "Paint Pipes" + lines += "
" + + lines += "

Category:

" + lines += "Atmospherics" + lines += "Disposals" + //lines += "Transit Tube" + lines += "
Wrench Mode" + lines += "
" + + if(screen == ATMOS_MODE) + for(var/category in atmos_pipe_recipes) + lines += "

[category]:

" + + if(category == "Pipes") + lines += "
" + for(var/pipename in pipe_layers) + var/pipelayer = pipe_layers[pipename] + lines += "[pipename] " + lines += "
" + lines += "
" + for(var/i in 1 to atmos_pipe_recipes[category].len) + var/datum/pipe_recipe/PI = atmos_pipe_recipes[category][i] + lines += "
" + lines += "[PI.name]" + lines += "
" + lines += "
" + else if(screen == DISPOSALS_MODE) + for(var/category in disposal_pipe_recipes) + lines += "

[category]:

" + for(var/i in 1 to disposal_pipe_recipes[category].len) + var/datum/pipe_recipe/PI = disposal_pipe_recipes[category][i] + lines += "
" + lines += "[PI.name]" + lines += "
" + lines += "
" + + var/dat = lines.Join() + var/datum/browser/popup = new(user, "rpd", name, 300, 800, src) + popup.set_content("[dat]") + popup.add_head_content(icon_assets.css_tag()) + popup.open() + +/obj/item/weapon/pipe_dispenser/Topic(href, href_list, state = global.inventory_state) + SetupPipes() + if(..()) + return 1 + if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) + return 1 + var/playeffect = TRUE // Do we spark the device + var/anyclicked = FALSE // Tells us if we need to refresh the window. + if(href_list["paint_color"]) + paint_color = href_list["paint_color"] + playeffect = FALSE + anyclicked = TRUE + if(href_list["mode"]) + mode = text2num(href_list["mode"]) + anyclicked = TRUE + if(href_list["screen"]) + if(mode == screen) + mode = text2num(href_list["screen"]) + screen = text2num(href_list["screen"]) + switch(screen) + if(DISPOSALS_MODE) + recipe = first_disposal + if(ATMOS_MODE) + recipe = first_atmos + p_dir = NORTH + playeffect = FALSE + anyclicked = TRUE + if(href_list["piping_layer"]) + piping_layer = text2num(href_list["piping_layer"]) + playeffect = FALSE + anyclicked = TRUE + if(href_list["pipe_type"]) + recipe = all_pipe_recipes[href_list["category"]][text2num(href_list["pipe_type"])] + if(recipe.dirtype == PIPE_ONEDIR) // One hell of a hack for the fact that the image previews for the onedir types only show on the south, but the default pipe type is north. + p_dir = SOUTH // Did I fuck this up? Maybe. Or maybe it's just the icon files not being ready for an RPD. + else // If going to try and fix this hack, be aware the pipe dispensers might rely on pipes defaulting south instead of north. + p_dir = NORTH + p_flipped = FALSE + anyclicked = TRUE + if(href_list["dir"]) + p_dir = text2dir(href_list["dir"]) + p_flipped = text2num(href_list["flipped"]) + playeffect = FALSE + anyclicked = TRUE + if(href_list["switch_wrench"]) + wrench_mode = text2num(href_list["wrench_mode"]) + anyclicked = TRUE + if(anyclicked) + if(playeffect) + spark_system.start() + playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0) + src.interact(usr) + +/obj/item/weapon/pipe_dispenser/afterattack(atom/A, mob/user as mob, proximity) + if(!user.IsAdvancedToolUser() || istype(A, /turf/space/transit) || !proximity) + return ..() + + //So that changing the menu settings doesn't affect the pipes already being built. + var/queued_piping_layer = piping_layer + var/queued_p_dir = p_dir + var/queued_p_flipped = p_flipped + + //make sure what we're clicking is valid for the current mode + var/static/list/make_pipe_whitelist // This should probably be changed to be in line with polaris standards. Oh well. + if(!make_pipe_whitelist) + make_pipe_whitelist = typecacheof(list(/obj/structure/lattice, /obj/structure/girder, /obj/item/pipe)) + var/can_make_pipe = (isturf(A) || is_type_in_typecache(A, make_pipe_whitelist)) + + . = FALSE + switch(mode) //if we've gotten this var, the target is valid + if(PAINT_MODE) //Paint pipes + if(!istype(A, /obj/machinery/atmospherics/pipe)) + return ..() + var/obj/machinery/atmospherics/pipe/P = A + playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) + P.change_color(pipe_colors[paint_color]) + user.visible_message("[user] paints \the [P] [paint_color].", "You paint \the [P] [paint_color].") + return + + if(EATING_MODE) //Eating pipes + if(!(istype(A, /obj/item/pipe) || istype(A, /obj/item/pipe_meter) || istype(A, /obj/structure/disposalconstruct))) + return ..() + to_chat(user, "You start destroying a pipe...") + playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) + if(do_after(user, 2, target = A)) + activate() + animate_deletion(A) + + if(ATMOS_MODE) //Making pipes + if(!can_make_pipe) + return ..() + playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) + if (istype(recipe, /datum/pipe_recipe/meter)) + to_chat(user, "You start building a meter...") + if(do_after(user, 2, target = A)) + activate() + var/obj/item/pipe_meter/PM = new /obj/item/pipe_meter(get_turf(A)) + PM.setAttachLayer(queued_piping_layer) + if(wrench_mode) + do_wrench(PM, user) + else if(istype(recipe, /datum/pipe_recipe/pipe)) + var/datum/pipe_recipe/pipe/R = recipe + to_chat(user, "You start building a pipe...") + if(do_after(user, 2, target = A)) + activate() + var/obj/machinery/atmospherics/path = R.pipe_type + var/pipe_item_type = initial(path.construction_type) || /obj/item/pipe + var/obj/item/pipe/P = new pipe_item_type(get_turf(A), path, queued_p_dir) + + P.update() + P.add_fingerprint(usr) + if (R.paintable) + P.color = pipe_colors[paint_color] + P.setPipingLayer(queued_piping_layer) + if(queued_p_flipped) + P.do_a_flip() + if(wrench_mode) + do_wrench(P, user) + else + build_effect(P) + + if(DISPOSALS_MODE) //Making disposals pipes + var/datum/pipe_recipe/disposal/R = recipe + if(!istype(R) || !can_make_pipe) + return ..() + A = get_turf(A) + if(istype(A, /turf/unsimulated)) + to_chat(user, "[src]'s error light flickers; there's something in the way!") + return + to_chat(user, "You start building a disposals pipe...") + playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) + if(do_after(user, 4, target = A)) + var/obj/structure/disposalconstruct/C = new(A, R.pipe_type, queued_p_dir, queued_p_flipped, R.subtype) + + if(!C.can_place()) + to_chat(user, "There's not enough room to build that here!") + qdel(C) + return + + activate() + + C.add_fingerprint(usr) + C.update_icon() + if(wrench_mode) + do_wrench(C, user) + else + build_effect(C) + + else + return ..() + +/obj/item/weapon/pipe_dispenser/proc/build_effect(var/obj/P, var/time = 1.5) + set waitfor = FALSE + P.filters += filter(type = "angular_blur", size = 30) + animate(P.filters[P.filters.len], size = 0, time = time) + var/outline = filter(type = "outline", size = 1, color = "#22AAFF") + P.filters += outline + sleep(time) + P.filters -= outline + P.filters -= filter(type = "angular_blur", size = 0) + +/obj/item/weapon/pipe_dispenser/proc/animate_deletion(var/obj/P, var/time = 1.5) + set waitfor = FALSE + P.filters += filter(type = "angular_blur", size = 0) + animate(P.filters[P.filters.len], size = 30, time = time) + sleep(time) + if(!QDELETED(P)) + P.filters -= filter(type = "angular_blur", size = 30) + qdel(P) + +/obj/item/weapon/pipe_dispenser/proc/activate() + playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, 1) + +/obj/item/weapon/pipe_dispenser/proc/do_wrench(var/atom/target, mob/user) + var/resolved = target.attackby(tool,user) + if(!resolved && tool && target) + tool.afterattack(target,user,1) + +/obj/item/weapon/pipe_dispenser/proc/render_dir_img(icon_state, user, _dir, title, noimg, flipped = FALSE) + var/dirtext = dir2text(_dir) + var/attrs = " style=\"height:34px;width:34px;display:inline-block\"" + if(_dir == p_dir && flipped == p_flipped) + attrs += " class=\"linkOn\"" + if(icon_state) + var/img_tag = icon_assets.icon_tag(icon_state, _dir) + return "[img_tag]" + else + return "[noimg]" + + +#undef PAINT_MODE +#undef EATING_MODE +#undef ATMOS_MODE +#undef DISPOSALS_MODE diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index 8684a9c058..b8eded77c6 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -8,8 +8,8 @@ RSF name = "\improper Rapid-Service-Fabricator" desc = "A device used to rapidly deploy service items." description_info = "Control Clicking on the device will allow you to choose the glass it dispenses when in the proper mode." - icon = 'icons/obj/tools.dmi' - icon_state = "rcd" + icon = 'icons/obj/tools_vr.dmi' //VOREStation Edit + icon_state = "rsf" //VOREStation Edit opacity = 0 density = 0 anchored = 0.0 @@ -33,8 +33,9 @@ RSF w_class = ITEMSIZE_NORMAL /obj/item/weapon/rsf/examine(mob/user) - if(..(user, 0)) - to_chat(user,"It currently holds [stored_matter]/30 fabrication-units.") + . = ..() + if(get_dist(user, src) == 0) + . += "It currently holds [stored_matter]/30 fabrication-units." /obj/item/weapon/rsf/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index f3df3c914b..ffa3753233 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -149,22 +149,21 @@ CIGARETTE PACKETS ARE IN FANCY.DM ..() /obj/item/clothing/mask/smokable/examine(mob/user) - ..() - if(is_pipe) - return - var/smoke_percent = round((smoketime / max_smoketime) * 100) - switch(smoke_percent) - if(90 to INFINITY) - to_chat(user, "[src] is still fresh.") - if(60 to 90) - to_chat(user, "[src] has a good amount of burn time remaining.") - if(30 to 60) - to_chat(user, "[src] is about half finished.") - if(10 to 30) - to_chat(user, "[src] is starting to burn low.") - else - to_chat(user, "[src] is nearly burnt out!") - + . = ..() + + if(!is_pipe) + var/smoke_percent = round((smoketime / max_smoketime) * 100) + switch(smoke_percent) + if(90 to INFINITY) + . += "[src] is still fresh." + if(60 to 90) + . += "[src] has a good amount of burn time remaining." + if(30 to 60) + . += "[src] is about half finished." + if(10 to 30) + . += "[src] is starting to burn low." + else + . += "[src] is nearly burnt out!" /obj/item/clothing/mask/smokable/proc/light(var/flavor_text = "[usr] lights the [name].") if(!src.lit) diff --git a/code/game/objects/items/weapons/circuitboards/machinery/power.dm b/code/game/objects/items/weapons/circuitboards/machinery/power.dm index 9bd5f98bad..e874d04d49 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/power.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/power.dm @@ -18,14 +18,7 @@ build_path = /obj/machinery/power/smes/batteryrack board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2) - req_components = list(/obj/item/weapon/cell = 3) - -/obj/item/weapon/circuitboard/ghettosmes - name = T_BOARD("makeshift PSU") - desc = "An APC circuit repurposed into some power storage device controller" - build_path = /obj/machinery/power/smes/batteryrack/makeshift - board_type = new /datum/frame/frame_types/machine - req_components = list(/obj/item/weapon/cell = 3) + req_components = list(/obj/item/weapon/stock_parts/capacitor/ = 3, /obj/item/weapon/stock_parts/matter_bin/ = 1) /obj/item/weapon/circuitboard/grid_checker name = T_BOARD("power grid checker") diff --git a/code/game/objects/items/weapons/ecigs.dm b/code/game/objects/items/weapons/ecigs.dm new file mode 100644 index 0000000000..29ae810f9f --- /dev/null +++ b/code/game/objects/items/weapons/ecigs.dm @@ -0,0 +1,227 @@ +/obj/item/clothing/mask/smokable/ecig + name = "electronic cigarette" + desc = "Device with modern approach to smoking." + icon = 'icons/obj/ecig.dmi' + var/active = 0 + //var/obj/item/weapon/cell/ec_cell = /obj/item/weapon/cell/device + var/cartridge_type = /obj/item/weapon/reagent_containers/ecig_cartridge/med_nicotine + var/obj/item/weapon/reagent_containers/ecig_cartridge/ec_cartridge + w_class = ITEMSIZE_TINY + slot_flags = SLOT_EARS | SLOT_MASK + attack_verb = list("attacked", "poked", "battered") + body_parts_covered = 0 + var/brightness_on = 1 + chem_volume = 0 //ecig has no storage on its own but has reagent container created by parent obj + item_state = "ecigoff" + var/icon_off + var/icon_empty + var/ecig_colors = list(null, COLOR_DARK_GRAY, COLOR_RED_GRAY, COLOR_BLUE_GRAY, COLOR_GREEN_GRAY, COLOR_PURPLE_GRAY) + +/obj/item/clothing/mask/smokable/ecig/New() + ..() + ec_cartridge = new cartridge_type(src) + +/obj/item/clothing/mask/smokable/ecig/simple + name = "simple electronic cigarette" + desc = "A cheap Lucky 1337 electronic cigarette, styled like a traditional cigarette." + icon_state = "ccigoff" + icon_off = "ccigoff" + icon_empty = "ccigoff" + icon_on = "ccigon" + +/obj/item/clothing/mask/smokable/ecig/util + name = "electronic cigarette" + desc = "A popular utilitarian model electronic cigarette, the ONI-55. Comes in a variety of colors." + icon_state = "ecigoff1" + icon_off = "ecigoff1" + icon_empty = "ecigoff1" + icon_on = "ecigon" +/obj/item/clothing/mask/smokable/ecig/util/New() + ..() + color = pick(ecig_colors) + +/obj/item/clothing/mask/smokable/ecig/deluxe + name = "deluxe electronic cigarette" + desc = "A premium model eGavana MK3 electronic cigarette, shaped like a cigar." + icon_state = "pcigoff1" + icon_off = "pcigoff1" + icon_empty = "pcigoff2" + icon_on = "pcigon" + +/obj/item/clothing/mask/smokable/ecig/process() + if(ishuman(loc)) + var/mob/living/carbon/human/C = loc + if (src == C.wear_mask && C.check_has_mouth()) // if it's in the human/monkey mouth, transfer reagents to the mob + if (!active || !ec_cartridge || !ec_cartridge.reagents.total_volume)//no cartridge + active=0//autodisable the cigarette + STOP_PROCESSING(SSobj, src) + update_icon() + return + ec_cartridge.reagents.trans_to_mob(C, REM, CHEM_INGEST, 0.4) // Most of it is not inhaled... balance reasons. + +/obj/item/clothing/mask/smokable/ecig/update_icon() + if (active) + item_state = icon_on + icon_state = icon_on + set_light(brightness_on) + else if (ec_cartridge) + set_light(0) + item_state = icon_off + icon_state = icon_off + else + icon_state = icon_empty + item_state = icon_empty + set_light(0) + if(ismob(loc)) + var/mob/living/M = loc + M.update_inv_wear_mask(0) + M.update_inv_l_hand(0) + M.update_inv_r_hand(1) + + +/obj/item/clothing/mask/smokable/ecig/attackby(var/obj/item/I, var/mob/user as mob) + if(istype(I, /obj/item/weapon/reagent_containers/ecig_cartridge)) + if (ec_cartridge)//can't add second one + to_chat(user, "A cartridge has already been installed. ") + else//fits in new one + user.remove_from_mob(I) + I.forceMove(src)//I.loc=src + ec_cartridge = I + update_icon() + to_chat(user, "You insert [I] into [src]. ") + +/obj/item/clothing/mask/smokable/ecig/attack_self(mob/user as mob) + if (active) + active=0 + STOP_PROCESSING(SSobj, src) + to_chat(user, "You turn off \the [src]. ") + update_icon() + else + if (!ec_cartridge) + to_chat(user, "You can't use it with no cartridge installed!. ") + return + active=1 + START_PROCESSING(SSobj, src) + to_chat(user, "You turn on \the [src]. ") + update_icon() + +/obj/item/clothing/mask/smokable/ecig/attack_hand(mob/user as mob)//eject cartridge + if(user.get_inactive_hand() == src)//if being hold + if (ec_cartridge) + active=0 + user.put_in_hands(ec_cartridge) + to_chat(user, "You eject [ec_cartridge] from \the [src]. ") + ec_cartridge = null + update_icon() + else + ..() + +/obj/item/weapon/reagent_containers/ecig_cartridge + name = "tobacco flavour cartridge" + desc = "A small metal cartridge, used with electronic cigarettes, which contains an atomizing coil and a solution to be atomized." + w_class = ITEMSIZE_TINY + icon = 'icons/obj/ecig.dmi' + icon_state = "ecartridge" + matter = list("metal" = 50, "glass" = 10) + volume = 20 + flags = OPENCONTAINER + +/obj/item/weapon/reagent_containers/ecig_cartridge/New() + create_reagents(volume) + +/obj/item/weapon/reagent_containers/ecig_cartridge/examine(mob/user as mob)//to see how much left + . = ..() + . += "The cartridge has [reagents.total_volume] units of liquid remaining." + +//flavours +/obj/item/weapon/reagent_containers/ecig_cartridge/blank + name = "ecigarette cartridge" + desc = "A small metal cartridge which contains an atomizing coil." + +/obj/item/weapon/reagent_containers/ecig_cartridge/blanknico + name = "flavorless nicotine cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says you can add whatever flavoring agents you want." +/obj/item/weapon/reagent_containers/ecig_cartridge/blanknico/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + +/obj/item/weapon/reagent_containers/ecig_cartridge/med_nicotine + name = "tobacco flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its tobacco flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/med_nicotine/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 15) + +/obj/item/weapon/reagent_containers/ecig_cartridge/high_nicotine + name = "high nicotine tobacco flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its tobacco flavored, with extra nicotine." +/obj/item/weapon/reagent_containers/ecig_cartridge/high_nicotine/New() + ..() + reagents.add_reagent("nicotine", 10) + reagents.add_reagent("water", 10) + +/obj/item/weapon/reagent_containers/ecig_cartridge/orange + name = "orange flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its orange flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/orange/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("orangejuice", 5) + +/obj/item/weapon/reagent_containers/ecig_cartridge/mint + name = "mint flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its mint flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/mint/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("menthol", 5) + +/obj/item/weapon/reagent_containers/ecig_cartridge/watermelon + name = "watermelon flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its watermelon flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/watermelon/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("watermelonjuice", 5) + +/obj/item/weapon/reagent_containers/ecig_cartridge/grape + name = "grape flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its grape flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/grape/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("grapejuice", 5) + +/obj/item/weapon/reagent_containers/ecig_cartridge/lemonlime + name = "lemon-lime flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its lemon-lime flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/lemonlime/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("lemon_lime", 5) + +/obj/item/weapon/reagent_containers/ecig_cartridge/coffee + name = "coffee flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its coffee flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/coffee/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("coffee", 5) +/* +/obj/item/weapon/reagent_containers/ecig_cartridge/cannabis + name = "herb flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label seems to be suspiciously scuffed off..." +/obj/item/weapon/reagent_containers/ecig_cartridge/cannabis/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("cannabis", 5) +*/ diff --git a/code/game/objects/items/weapons/explosives_vr.dm b/code/game/objects/items/weapons/explosives_vr.dm index a82ca02bbc..ce7a182fd6 100644 --- a/code/game/objects/items/weapons/explosives_vr.dm +++ b/code/game/objects/items/weapons/explosives_vr.dm @@ -8,7 +8,7 @@ target = src var/turf/T = get_turf(target) - if(T.z in using_map.map_levels) + if(T.z in using_map.station_levels) target.visible_message("\The [src] lets out a loud beep as safeties trigger, before imploding and falling apart.") target.overlays -= image_overlay qdel(src) diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index f44abcb96b..c50998557e 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -1,7 +1,7 @@ /obj/item/weapon/extinguisher name = "fire extinguisher" desc = "A traditional red fire extinguisher." - icon = 'icons/obj/items.dmi' + icon = 'icons/obj/items_vr.dmi' //VOREStation Edit icon_state = "fire_extinguisher0" item_state = "fire_extinguisher" hitsound = 'sound/weapons/smash.ogg' @@ -36,12 +36,13 @@ /obj/item/weapon/extinguisher/Initialize() create_reagents(max_water) - reagents.add_reagent("water", max_water) + reagents.add_reagent("firefoam", max_water) //VOREStation Edit . = ..() /obj/item/weapon/extinguisher/examine(mob/user) - if(..(user, 0)) - to_chat(user, "[bicon(src)] [src.name] contains [src.reagents.total_volume] units of water left!") + . = ..() + if(get_dist(user, src) == 0) + . += "[src] has [src.reagents.total_volume] units of foam left!" //VOREStation Edit - Foam not water /obj/item/weapon/extinguisher/attack_self(mob/user as mob) safety = !safety @@ -70,7 +71,7 @@ /obj/item/weapon/extinguisher/afterattack(var/atom/target, var/mob/user, var/flag) //TODO; Add support for reagents in water. - if( istype(target, /obj/structure/reagent_dispensers/watertank) && flag) + if( istype(target, /obj/structure/reagent_dispensers) && flag) //VOREStation Edit var/obj/o = target var/amount = o.reagents.trans_to_obj(src, 50) to_chat(user, "You fill [src] with [amount] units of the contents of [target].") diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 27c917df28..94ca8b7cd2 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -164,8 +164,9 @@ /obj/item/weapon/wrapping_paper/examine(mob/user) - if(..(user, 1)) - to_chat(user, "There is about [src.amount] square units of paper left!") + . = ..() + if(Adjacent(user)) + . += "There is about [src.amount] square units of paper left!" /obj/item/weapon/wrapping_paper/attack(mob/target as mob, mob/user as mob) if (!istype(target, /mob/living/carbon/human)) return diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 41fa67f1d5..157c64f09f 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -118,9 +118,9 @@ to_chat(user, "\The [W] is empty.") /obj/item/weapon/grenade/chem_grenade/examine(mob/user) - ..(user) + . = ..() if(detonator) - to_chat(user, "With attached [detonator.name]") + . += "It has [detonator.name] attached to it." /obj/item/weapon/grenade/chem_grenade/activate(mob/user as mob) if(active) return diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index ac24d42255..fdab7aaf39 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -45,13 +45,12 @@ /obj/item/weapon/grenade/examine(mob/user) - if(..(user, 0)) + . = ..() + if(get_dist(user, src) == 0) if(det_time > 1) - to_chat(user, "The timer is set to [det_time/10] seconds.") - return - if(det_time == null) - return - to_chat(user, "\The [src] is set for instant detonation.") + . += "The timer is set to [det_time/10] seconds." + else if(det_time == null) + . += "\The [src] is set for instant detonation." /obj/item/weapon/grenade/attack_self(mob/user as mob) diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade_vr.dm b/code/game/objects/items/weapons/grenades/spawnergrenade_vr.dm index 56204be984..1a80762396 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade_vr.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade_vr.dm @@ -6,7 +6,7 @@ /obj/item/weapon/grenade/spawnergrenade/manhacks/station/locked/detonate() if(locked) var/turf/T = get_turf(src) - if(T.z in using_map.map_levels) + if(T.z in using_map.station_levels) icon_state = initial(icon_state) active = 0 return 0 diff --git a/code/game/objects/items/weapons/id cards/station_ids.dm b/code/game/objects/items/weapons/id cards/station_ids.dm index c43217919a..5b1f6752ae 100644 --- a/code/game/objects/items/weapons/id cards/station_ids.dm +++ b/code/game/objects/items/weapons/id cards/station_ids.dm @@ -32,12 +32,11 @@ var/survey_points = 0 // For redeeming at explorer equipment vendors. /obj/item/weapon/card/id/examine(mob/user) - set src in oview(1) - if(in_range(usr, src)) - show(usr) - to_chat(usr,desc) + . = ..() + if(in_range(user, src)) + show(user) //Not chat related else - to_chat(usr, "It is too far away.") + . += "It is too far away to read." /obj/item/weapon/card/id/proc/prevent_tracking() return 0 diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 0de385500e..34f44ffc8d 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -227,7 +227,8 @@ Implant Specifics:
"} Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} return dat -/obj/item/weapon/implant/explosive/hear_talk(mob/M as mob, msg) +/obj/item/weapon/implant/explosive/hear_talk(mob/M, list/message_pieces, verb) + var/msg = multilingual_to_message(message_pieces) hear(msg) return diff --git a/code/game/objects/items/weapons/implants/implant_vr.dm b/code/game/objects/items/weapons/implants/implant_vr.dm index 17d1d6f6d2..133bcb48f4 100644 --- a/code/game/objects/items/weapons/implants/implant_vr.dm +++ b/code/game/objects/items/weapons/implants/implant_vr.dm @@ -60,12 +60,13 @@ Function: Resizes the host whenever specific verbal command is received
"} return dat -/obj/item/weapon/implant/sizecontrol/hear_talk(mob/M, msg) +/obj/item/weapon/implant/sizecontrol/hear_talk(mob/M, list/message_pieces) if(M == imp_in) return if(owner) if(M != owner) return + var/msg = multilingual_to_message(message_pieces) if(findtext(msg,"ignore")) return var/list/replacechars = list("'" = "",">" = "","<" = "","(" = "",")" = "", "~" = "") diff --git a/code/game/objects/items/weapons/implants/implantcircuits.dm b/code/game/objects/items/weapons/implants/implantcircuits.dm index 7c9391c631..ffe6547fcb 100644 --- a/code/game/objects/items/weapons/implants/implantcircuits.dm +++ b/code/game/objects/items/weapons/implants/implantcircuits.dm @@ -36,7 +36,7 @@ IC.emp_act(severity) /obj/item/weapon/implant/integrated_circuit/examine(mob/user) - IC.examine(user) + return IC.examine(user) /obj/item/weapon/implant/integrated_circuit/attackby(var/obj/item/O, var/mob/user) if(O.is_crowbar() || istype(O, /obj/item/device/integrated_electronics) || istype(O, /obj/item/integrated_circuit) || O.is_screwdriver() || istype(O, /obj/item/weapon/cell/device) ) diff --git a/code/game/objects/items/weapons/implants/implantreagent_vr.dm b/code/game/objects/items/weapons/implants/implantreagent_vr.dm index 4597cbe0a8..5642d1bfd6 100644 --- a/code/game/objects/items/weapons/implants/implantreagent_vr.dm +++ b/code/game/objects/items/weapons/implants/implantreagent_vr.dm @@ -38,11 +38,12 @@ /obj/item/weapon/implant/reagent_generator/process() var/before_gen - if(imp_in && generated_reagents) + if(isliving(imp_in) && generated_reagents) before_gen = reagents.total_volume + var/mob/living/L = imp_in if(reagents.total_volume < reagents.maximum_volume) - if(imp_in.nutrition >= gen_cost) - do_generation() + if(L.nutrition >= gen_cost) + do_generation(L) else return else @@ -55,8 +56,8 @@ else if(reagents.total_volume == reagents.maximum_volume && before_gen < reagents.maximum_volume) to_chat(imp_in, "[pick(full_message)]") -/obj/item/weapon/implant/reagent_generator/proc/do_generation() - imp_in.nutrition -= gen_cost +/obj/item/weapon/implant/reagent_generator/proc/do_generation(var/mob/living/L) + L.adjust_nutrition(-gen_cost) for(var/reagent in generated_reagents) reagents.add_reagent(reagent, generated_reagents[reagent]) @@ -69,7 +70,7 @@ do_reagent_implant(usr) /mob/living/carbon/human/proc/do_reagent_implant(var/mob/living/carbon/human/user = usr) - if(!isliving(user) || !user.canClick()) + if(!isliving(user) || !user.checkClickCooldown()) return if(user.incapacitated() || user.stat > CONSCIOUS) diff --git a/code/game/objects/items/weapons/inducer_vr.dm b/code/game/objects/items/weapons/inducer_vr.dm new file mode 100644 index 0000000000..998447b5fa --- /dev/null +++ b/code/game/objects/items/weapons/inducer_vr.dm @@ -0,0 +1,280 @@ +/obj/item/weapon/inducer + name = "industrial inducer" + desc = "A tool for inductively charging internal power cells." + icon = 'icons/obj/tools_vr.dmi' + icon_state = "inducer-engi" + item_state = "inducer-engi" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_vr.dmi', + ) + force = 7 + + var/powertransfer = 1000 //Transfer per time when charging something + var/cell_type = /obj/item/weapon/cell/high //Type of cell to spawn in it + var/charge_guns = FALSE //Can it charge guns? + + var/datum/effect/effect/system/spark_spread/spark_system + var/obj/item/weapon/cell/cell + var/recharging = FALSE + var/opened = FALSE + +/obj/item/weapon/inducer/unloaded + cell_type = null + opened = TRUE + +/obj/item/weapon/inducer/Initialize() + . = ..() + if(!cell && cell_type) + cell = new cell_type + +/obj/item/weapon/inducer/proc/induce(var/obj/item/weapon/cell/target, coefficient) + var/totransfer = min(cell.charge,(powertransfer * coefficient)) + var/transferred = target.give(totransfer) + cell.use(transferred) + cell.update_icon() + target.update_icon() + +/obj/item/weapon/inducer/get_cell() + return cell + +/obj/item/weapon/inducer/emp_act(severity) + . = ..() + if(cell) + cell.emp_act(severity) + +/obj/item/weapon/inducer/attack(mob/living/M, mob/living/user) + if(user.a_intent == I_HURT) + return ..() + else + return 0 //No accidental bludgeons! + +/obj/item/weapon/inducer/afterattack(atom/A, mob/living/carbon/user, proximity) + if(user.a_intent == I_HURT) + return ..() + + if(cantbeused(user)) + return + + if(recharge(A, user)) + return + + return ..() + +/obj/item/weapon/inducer/proc/cantbeused(mob/user) + if(!user.IsAdvancedToolUser()) + to_chat(user, "You don't have the dexterity to use [src]!") + return TRUE + + if(!cell) + to_chat(user, "[src] doesn't have a power cell installed!") + return TRUE + + if(!cell.charge) + to_chat(user, "[src]'s battery is dead!") + return TRUE + return FALSE + + +/obj/item/weapon/inducer/attackby(obj/item/W, mob/user) + if(W.is_screwdriver()) + playsound(src, W.usesound, 50, 1) + if(!opened) + to_chat(user, "You open the battery compartment.") + opened = TRUE + update_icon() + return + else + to_chat(user, "You close the battery compartment.") + opened = FALSE + update_icon() + return + if(istype(W, /obj/item/weapon/cell)) + if(opened) + if(!cell) + user.drop_from_inventory(W) + W.forceMove(src) + to_chat(user, "You insert [W] into [src].") + cell = W + update_icon() + return + else + to_chat(user, "[src] already has \a [cell] installed!") + return + + if(cantbeused(user)) + return + + if(recharge(W, user)) + return + + return ..() + +/obj/item/weapon/inducer/proc/recharge(atom/movable/A, mob/user) + if(!isturf(A) && user.loc == A) + return FALSE + if(recharging) + return TRUE + else + recharging = TRUE + + if(istype(A, /obj/item/weapon/gun/energy) && !charge_guns) + to_chat(user, "Error unable to interface with device.") + return FALSE + + //The cell we hopefully eventually find + var/obj/item/weapon/cell/C + + //Synthetic humanoids + if(ishuman(A)) + var/mob/living/carbon/human/H = A + if(H.isSynthetic()) + C = new /obj/item/weapon/cell/standin(null, H) // o o f + + //Borg frienbs + else if(isrobot(A)) + var/mob/living/silicon/robot/R = A + C = R.cell + + //Can set different coefficients per item if you want + var/coefficient = 1 + + //Last ditch effort + var/obj/O //For updating icons, just in case they have a battery meter icon + if(!C && isobj(A)) + O = A + C = O.get_cell() + + if(C) + var/done_any = FALSE + + if(C.charge >= C.maxcharge) + to_chat(user, "[A] is fully charged ([round(C.charge)] / [C.maxcharge])!") + recharging = FALSE + return TRUE + user.visible_message("[user] starts recharging [A] with [src].", "You start recharging [A] with [src].") + + var/datum/beam/charge_beam = user.Beam(A, icon_state = "rped_upgrade", time = 20 SECONDS) + var/filter = filter(type = "outline", size = 1, color = "#22AAFF") + A.filters += filter + + spark_system = new /datum/effect/effect/system/spark_spread + spark_system.set_up(5, 0, get_turf(A)) + spark_system.attach(A) + + while(C.charge < C.maxcharge) + if(do_after(user, 2 SECONDS, target = user) && cell.charge) + done_any = TRUE + induce(C, coefficient) + spark_system.start() + if(O) + O.update_icon() + else + break + + QDEL_NULL(charge_beam) + QDEL_NULL(spark_system) + if(A) + A.filters -= filter + + if(done_any) // Only show a message if we succeeded at least once + user.visible_message("[user] recharged [A]!", "You recharged [A]!") + + recharging = FALSE + return TRUE + else //Couldn't find a cell + to_chat(user, "Error unable to interface with device.") + + recharging = FALSE + +/obj/item/weapon/inducer/attack_self(mob/user) + if(opened && cell) + user.visible_message("[user] removes [cell] from [src]!", "You remove [cell].") + cell.update_icon() + user.put_in_hands(cell) + cell = null + update_icon() + +/obj/item/weapon/inducer/examine(mob/living/M) + . = ..() + if(cell) + . += "Its display shows: [round(cell.charge)] / [cell.maxcharge]." + else + . += "Its display is dark." + if(opened) + . += "Its battery compartment is open." + +/obj/item/weapon/inducer/update_icon() + ..() + cut_overlays() + if(opened) + if(!cell) + add_overlay("inducer-nobat") + else + add_overlay("inducer-bat") + +//////// Variants +/obj/item/weapon/inducer/sci + name = "inducer" + desc = "A tool for inductively charging internal power cells. This one has a science color scheme, and is less potent than its engineering counterpart." + icon_state = "inducer-sci" + item_state = "inducer-sci" + cell_type = null + powertransfer = 500 + opened = TRUE + +/obj/item/weapon/inducer/sci/Initialize() + . = ..() + update_icon() //To get the 'open' state applied + +/obj/item/weapon/inducer/syndicate + name = "suspicious inducer" + desc = "A tool for inductively charging internal power cells. This one has a suspicious colour scheme, and seems to be rigged to transfer charge at a much faster rate." + icon_state = "inducer-syndi" + item_state = "inducer-syndi" + powertransfer = 2000 + cell_type = /obj/item/weapon/cell/super + charge_guns = TRUE + +/obj/item/weapon/inducer/hybrid + name = "hybrid-tech inducer" + desc = "A tool for inductively charging internal power cells. This one has some flashy bits and recharges devices slower, but seems to recharge itself between uses." + icon_state = "inducer-hybrid" + item_state = "inducer-hybrid" + powertransfer = 250 + cell_type = /obj/item/weapon/cell/void + charge_guns = TRUE + +// A 'human stand-in' cell for recharging 'nutrition' on synthetic humans (wow this is terrible! \o/) +#define NUTRITION_COEFF 0.05 // 1000 charge = 50 nutrition at 0.05 +/obj/item/weapon/cell/standin + name = "don't spawn this" + desc = "this is for weird code use, don't spawn it!!!" + + charge = 100 + maxcharge = 100 + + var/mob/living/carbon/human/hume + +/obj/item/weapon/cell/standin/New(newloc, var/mob/living/carbon/human/H) + ..() + hume = H + charge = H.nutrition + maxcharge = initial(H.nutrition) + + QDEL_IN(src, 20 SECONDS) + + +/obj/item/weapon/cell/standin/give(var/amount) + . = ..(amount * NUTRITION_COEFF) //Shrink amount to store + hume.adjust_nutrition(.) //Add the amount we really stored + . /= NUTRITION_COEFF //Inflate amount to take from the giver + +#undef NUTRITION_COEFF + +// Various sideways-defined get_cells +/obj/mecha/get_cell() + return cell + +/obj/vehicle/get_cell() + return cell diff --git a/code/game/objects/items/weapons/material/chainsaw.dm b/code/game/objects/items/weapons/material/chainsaw.dm index 4a8662c053..fe99fad674 100644 --- a/code/game/objects/items/weapons/material/chainsaw.dm +++ b/code/game/objects/items/weapons/material/chainsaw.dm @@ -113,9 +113,9 @@ obj/item/weapon/chainsaw/proc/get_fuel() return reagents.get_reagent_amount("fuel") obj/item/weapon/chainsaw/examine(mob/user) - if(..(user,0)) - if(max_fuel) - to_chat(usr, "The [src] feels like it contains roughtly [get_fuel()] units of fuel left.") + . = ..() + if(max_fuel && get_dist(user, src) == 0) + . += "The [src] feels like it contains roughtly [get_fuel()] units of fuel left." obj/item/weapon/chainsaw/suicide_act(mob/user) var/datum/gender/TU = gender_datums[user.get_visible_gender()] diff --git a/code/game/objects/items/weapons/material/gravemarker.dm b/code/game/objects/items/weapons/material/gravemarker.dm index cad9df3c8f..d3c615e8fd 100644 --- a/code/game/objects/items/weapons/material/gravemarker.dm +++ b/code/game/objects/items/weapons/material/gravemarker.dm @@ -36,13 +36,11 @@ ..() /obj/item/weapon/material/gravemarker/examine(mob/user) - ..() - if(get_dist(src, user) < 4) - if(grave_name) - to_chat(user, "Here Lies [grave_name]") - if(get_dist(src, user) < 2) - if(epitaph) - to_chat(user, epitaph) + . = ..() + if(grave_name && get_dist(src, user) < 4) + . += "Here Lies [grave_name]" + if(epitaph && get_dist(src, user) < 2) + . += epitaph /obj/item/weapon/material/gravemarker/update_icon() if(icon_changes) diff --git a/code/game/objects/items/weapons/material/shards_vr.dm b/code/game/objects/items/weapons/material/shards_vr.dm new file mode 100644 index 0000000000..e59966c9b1 --- /dev/null +++ b/code/game/objects/items/weapons/material/shards_vr.dm @@ -0,0 +1,5 @@ +/obj/item/weapon/material/shard/titaniumglass/New(loc) + ..(loc, MAT_TITANIUMGLASS) + +/obj/item/weapon/material/shard/plastitaniumglass/New(loc) + ..(loc, MAT_PLASTANIUMGLASS) \ No newline at end of file diff --git a/code/game/objects/items/weapons/material/whetstone.dm b/code/game/objects/items/weapons/material/whetstone.dm index 628f450e3d..65faf1fa7c 100644 --- a/code/game/objects/items/weapons/material/whetstone.dm +++ b/code/game/objects/items/weapons/material/whetstone.dm @@ -41,7 +41,8 @@ /obj/item/weapon/material/sharpeningkit/examine(mob/user, distance) . = ..() - to_chat(user, "There [uses == 1 ? "is" : "are"] [uses] [material] [uses == 1 ? src.material.sheet_singular_name : src.material.sheet_plural_name] left for use.") + . += "There [uses == 1 ? "is" : "are"] [uses] [material] [uses == 1 ? src.material.sheet_singular_name : src.material.sheet_plural_name] left for use." + /obj/item/weapon/material/sharpeningkit/Initialize() . = ..() setrepair() diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 9145786d69..21d4d53a5c 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -86,14 +86,12 @@ return null /obj/item/weapon/melee/energy/examine(mob/user) - if(!..(user, 1)) - return - - if(use_cell) + . = ..() + if(use_cell && Adjacent(user)) if(bcell) - to_chat(user, "The blade is [round(bcell.percent())]% charged.") - if(!bcell) - to_chat(user, "The blade does not have a power source installed.") + . += "The blade is [round(bcell.percent())]% charged." + else + . += "The blade does not have a power source installed." /obj/item/weapon/melee/energy/attack_self(mob/living/user as mob) if(use_cell) @@ -200,8 +198,8 @@ update_icon() /obj/item/weapon/melee/energy/examine(mob/user) - ..() - to_chat(user, "Alt-click to recolor it.") + . = ..() + . += "Alt-click to recolor it." /* * Energy Axe diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 744a92e370..4d78a09bc5 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -215,8 +215,8 @@ update_icon() /obj/item/weapon/shield/energy/examine(mob/user) - ..() - to_chat(user, "Alt-click to recolor it.") + . = ..() + . += "Alt-click to recolor it." /obj/item/weapon/shield/riot/tele name = "telescopic shield" diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 6b347e0cb6..88f6caeb74 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -363,13 +363,12 @@ max_storage_space = ITEMSIZE_COST_NORMAL * 5 /obj/item/weapon/storage/backpack/parachute/examine(mob/user) - var/msg = desc - if(get_dist(src, user) <= 1) + . = ..() + if(Adjacent(user)) if(parachute) - msg += " It seems to be packed." + . += "It seems to be packed." else - msg += " It seems to be unpacked." - to_chat(user, msg) + . += "It seems to be unpacked." /obj/item/weapon/storage/backpack/parachute/handleParachute() parachute = FALSE //If you parachute in, the parachute has probably been used. diff --git a/code/game/objects/items/weapons/storage/backpack_vr.dm b/code/game/objects/items/weapons/storage/backpack_vr.dm index b14fbf5ff0..4c9ff8c2db 100644 --- a/code/game/objects/items/weapons/storage/backpack_vr.dm +++ b/code/game/objects/items/weapons/storage/backpack_vr.dm @@ -137,3 +137,53 @@ /obj/item/weapon/storage/backpack/ert max_storage_space = INVENTORY_DUFFLEBAG_SPACE + +/obj/item/weapon/storage/backpack/satchel/explorer + name = "explorer satchel" + desc = "A satchel for carrying a large number of supplies easily." + icon = 'icons/obj/storage_vr.dmi' + icon_override = 'icons/mob/back_vr.dmi' + item_state = "satchel-explorer" + icon_state = "satchel-explorer" +/obj/item/weapon/storage/backpack/explorer + name = "explorer backpack" + desc = "A backpack for carrying a large number of supplies easily." + icon = 'icons/obj/storage_vr.dmi' + icon_override = 'icons/mob/back_vr.dmi' + item_state = "explorerpack" + icon_state = "explorerpack" +/obj/item/weapon/storage/backpack/satchel/roboticist + name = "roboticist satchel" + desc = "A satchel for carrying a large number of spare parts easily." + icon = 'icons/obj/storage_vr.dmi' + icon_override = 'icons/mob/back_vr.dmi' + item_state = "satchel-robo" + icon_state = "satchel-robo" +/obj/item/weapon/storage/backpack/roboticist + name = "roboticist backpack" + desc = "A backpack for carrying a large number of spare parts easily." + icon = 'icons/obj/storage_vr.dmi' + icon_override = 'icons/mob/back_vr.dmi' + item_state = "backpack-robo" + icon_state = "backpack-robo" +/obj/item/weapon/storage/backpack/vietnam + name = "vietnam backpack" + desc = "There are tangos in the trees! We need napalm right now! Why is my gun jammed?" + icon = 'icons/obj/storage_vr.dmi' + icon_override = 'icons/mob/back_vr.dmi' + item_state = "nambackpack" + icon_state = "nambackpack" +/obj/item/weapon/storage/backpack/russian + name = "russian backpack" + desc = "Useful for carrying large quantities of vodka." + icon = 'icons/obj/storage_vr.dmi' + icon_override = 'icons/mob/back_vr.dmi' + item_state = "ru_rucksack" + icon_state = "ru_rucksack" +/obj/item/weapon/storage/backpack/korean + name = "korean backpack" + desc = "Insert witty description here." + icon = 'icons/obj/storage_vr.dmi' + icon_override = 'icons/mob/back_vr.dmi' + item_state = "kr_rucksack" + icon_state = "kr_rucksack" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 005def5410..f431bc74fe 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -142,34 +142,36 @@ if(O) gather_all(get_turf(src), user) +/obj/item/weapon/storage/bag/ore/proc/rangedload(atom/A, mob/user) + var/obj/item/weapon/ore/O = locate() in get_turf(A) + if(O) + gather_all(get_turf(A), user) /obj/item/weapon/storage/bag/ore/examine(mob/user) - ..() + . = ..() if(!Adjacent(user)) //Can only check the contents of ore bags if you can physically reach them. - return + return . if(istype(user, /mob/living)) add_fingerprint(user) if(!contents.len) - to_chat(user, "It is empty.") - return + . += "It is empty." - if(world.time > last_update + 10) + else if(world.time > last_update + 10) update_ore_count() last_update = world.time - to_chat(user, "It holds:") - for(var/ore in stored_ore) - to_chat(user, "- [stored_ore[ore]] [ore]") - return + . += "It holds:" + for(var/ore in stored_ore) + . += "- [stored_ore[ore]] [ore]" /obj/item/weapon/storage/bag/ore/open(mob/user as mob) //No opening it for the weird UI of having shit-tons of ore inside it. if(world.time > last_update + 10) update_ore_count() last_update = world.time - examine(user) + user.examinate(src) /obj/item/weapon/storage/bag/ore/proc/update_ore_count() //Stolen from ore boxes. @@ -337,6 +339,21 @@ desc = "" capacity = 500//Borgs get more because >specialization +// ----------------------------- +// Food Bag (Service Hound) +// ----------------------------- +/obj/item/weapon/storage/bag/dogborg + name = "dog bag" + icon = 'icons/obj/storage.dmi' + icon_state = "foodbag" + desc = "A bag for storing things of all kinds." + max_storage_space = ITEMSIZE_COST_NORMAL * 25 + max_w_class = ITEMSIZE_NORMAL + w_class = ITEMSIZE_SMALL + can_hold = list(/obj/item/weapon/reagent_containers/food/snacks,/obj/item/weapon/reagent_containers/food/condiment, + /obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/coin,/obj/item/weapon/spacecash, + /obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown,/obj/item/weapon/reagent_containers/pill) + // ----------------------------- // Cash Bag // ----------------------------- diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 926e6bc5c5..66b3547d6c 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -204,6 +204,11 @@ desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." starts_with = list(/obj/item/ammo_casing/a145 = 7) +/obj/item/weapon/storage/box/sniperammo/highvel + name = "box of 14.5mm sabot shells" + desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." + starts_with = list(/obj/item/ammo_casing/a145/highvel = 7) + /obj/item/weapon/storage/box/flashbangs name = "box of flashbangs (WARNING)" desc = "WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use." diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 830f5a2631..926255c620 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -26,17 +26,15 @@ return /obj/item/weapon/storage/fancy/examine(mob/user) - if(!..(user, 1)) - return + . = ..() - if(contents.len <= 0) - to_chat(user, "There are no [icon_type]s left in the box.") - else if(contents.len == 1) - to_chat(user, "There is one [icon_type] left in the box.") - else - to_chat(user, "There are [contents.len] [icon_type]s in the box.") - - return + if(Adjacent(user)) + if(!contents.len) + . += "There are no [icon_type]s left in the box." + else if(contents.len == 1) + . += "There is one [icon_type] left in the box." + else + . += "There are [contents.len] [icon_type]s in the box." /* * Egg Box diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index c47e564e01..703649f4f1 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -10,26 +10,26 @@ /obj/item/weapon/storage/firstaid name = "first aid kit" desc = "It's an emergency medical kit for those serious boo-boos." - icon = 'icons/obj/storage_vr.dmi' + icon = 'icons/obj/storage.dmi' icon_state = "firstaid" throw_speed = 2 throw_range = 8 max_storage_space = ITEMSIZE_COST_SMALL * 7 // 14 -// var/list/icon_variety // VOREStation edit + var/list/icon_variety drop_sound = 'sound/items/drop/box.ogg' /obj/item/weapon/storage/firstaid/Initialize() . = ..() -// if(icon_variety) // VOREStation edit -// icon_state = pick(icon_variety) -// icon_variety = null + if(icon_variety) + icon_state = pick(icon_variety) + icon_variety = null /obj/item/weapon/storage/firstaid/fire name = "fire first aid kit" desc = "It's an emergency medical kit for when the toxins lab spontaneously burns down." icon_state = "ointment" item_state_slots = list(slot_r_hand_str = "firstaid-ointment", slot_l_hand_str = "firstaid-ointment") -// icon_variety = list("ointment","firefirstaid") // VOREStation edit + //icon_variety = list("ointment","firefirstaid") //VOREStation Removal starts_with = list( /obj/item/device/healthanalyzer, /obj/item/weapon/reagent_containers/hypospray/autoinjector, @@ -57,7 +57,7 @@ desc = "Used to treat when one has a high amount of toxins in their body." icon_state = "antitoxin" item_state_slots = list(slot_r_hand_str = "firstaid-toxin", slot_l_hand_str = "firstaid-toxin") -// icon_variety = list("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3") // VOREStation edit + //icon_variety = list("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3") //VOREStation Removal starts_with = list( /obj/item/weapon/reagent_containers/syringe/antitoxin, /obj/item/weapon/reagent_containers/syringe/antitoxin, @@ -135,7 +135,7 @@ /obj/item/weapon/surgical/FixOVein, /obj/item/stack/medical/advanced/bruise_pack, /obj/item/stack/nanopaste, - ///obj/item/device/healthanalyzer/advanced, //VOREStation Removal, + /obj/item/device/healthanalyzer/advanced, /obj/item/weapon/autopsy_scanner ) @@ -150,7 +150,7 @@ /obj/item/weapon/surgical/bonegel, /obj/item/weapon/surgical/FixOVein, /obj/item/stack/medical/advanced/bruise_pack, - ///obj/item/device/healthanalyzer/advanced, //VOREStation Removal, + /obj/item/device/healthanalyzer/advanced, /obj/item/weapon/autopsy_scanner ) diff --git a/code/game/objects/items/weapons/storage/firstaid_vr.dm b/code/game/objects/items/weapons/storage/firstaid_vr.dm index e73cbf9f85..038708895c 100644 --- a/code/game/objects/items/weapons/storage/firstaid_vr.dm +++ b/code/game/objects/items/weapons/storage/firstaid_vr.dm @@ -1,9 +1,148 @@ +/obj/item/weapon/storage/firstaid + icon = 'icons/obj/storage_vr.dmi' + +/obj/item/weapon/storage/firstaid/fire + starts_with = list( + /obj/item/weapon/storage/pill_bottle/kelotane, + /obj/item/stack/medical/ointment, + /obj/item/stack/medical/ointment, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/burn, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/burn, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/burn, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/burn + ) + +/obj/item/weapon/storage/firstaid/regular + starts_with = list( + /obj/item/stack/medical/bruise_pack, + /obj/item/stack/medical/bruise_pack, + /obj/item/stack/medical/bruise_pack, + /obj/item/stack/medical/bruise_pack, + /obj/item/stack/medical/ointment, + /obj/item/stack/medical/ointment, + /obj/item/weapon/storage/pill_bottle/paracetamol + ) + +/obj/item/weapon/storage/firstaid/toxin + starts_with = list( + /obj/item/weapon/reagent_containers/hypospray/autoinjector/detox, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/detox, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/detox, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/detox, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/rad, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/rad, + /obj/item/weapon/storage/pill_bottle/antitox + ) + +/obj/item/weapon/storage/firstaid/o2 + starts_with = list( + /obj/item/weapon/reagent_containers/hypospray/autoinjector/oxy, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/oxy, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/oxy, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/oxy, + /obj/item/weapon/storage/pill_bottle/inaprovaline, + /obj/item/weapon/storage/pill_bottle/iron, + /obj/item/weapon/storage/pill_bottle/dexalin + ) + +/obj/item/weapon/storage/firstaid/adv + starts_with = list( + /obj/item/weapon/storage/pill_bottle/assorted, + /obj/item/stack/medical/advanced/bruise_pack, + /obj/item/stack/medical/advanced/bruise_pack, + /obj/item/stack/medical/advanced/bruise_pack, + /obj/item/stack/medical/advanced/ointment, + /obj/item/stack/medical/advanced/ointment, + /obj/item/stack/medical/splint + ) + +/obj/item/weapon/storage/firstaid/combat + starts_with = list( + /obj/item/weapon/storage/pill_bottle/vermicetol, + /obj/item/weapon/storage/pill_bottle/dermaline, + /obj/item/weapon/storage/pill_bottle/dexalin_plus, + /obj/item/weapon/storage/pill_bottle/carthatoline, + /obj/item/weapon/storage/pill_bottle/tramadol, + /obj/item/weapon/storage/pill_bottle/corophizine, + /obj/item/weapon/storage/pill_bottle/combat, + /obj/item/stack/medical/splint, + /obj/item/device/healthanalyzer/advanced + ) + +/obj/item/weapon/storage/firstaid/surgery + can_hold = list( + /obj/item/weapon/surgical/bonesetter, + /obj/item/weapon/surgical/cautery, + /obj/item/weapon/surgical/circular_saw, + /obj/item/weapon/surgical/hemostat, + /obj/item/weapon/surgical/retractor, + /obj/item/weapon/surgical/scalpel, + /obj/item/weapon/surgical/surgicaldrill, + /obj/item/weapon/surgical/bonegel, + /obj/item/weapon/surgical/FixOVein, + /obj/item/stack/medical/advanced/bruise_pack, + /obj/item/stack/nanopaste, + /obj/item/device/healthanalyzer, + /obj/item/weapon/autopsy_scanner + ) + + starts_with = list( + /obj/item/weapon/surgical/bonesetter, + /obj/item/weapon/surgical/cautery, + /obj/item/weapon/surgical/circular_saw, + /obj/item/weapon/surgical/hemostat, + /obj/item/weapon/surgical/retractor, + /obj/item/weapon/surgical/scalpel, + /obj/item/weapon/surgical/surgicaldrill, + /obj/item/weapon/surgical/bonegel, + /obj/item/weapon/surgical/FixOVein, + /obj/item/stack/medical/advanced/bruise_pack, + /obj/item/device/healthanalyzer, + /obj/item/weapon/autopsy_scanner + ) + /obj/item/weapon/storage/firstaid/clotting icon_state = "clottingkit" /obj/item/weapon/storage/firstaid/bonemed icon_state = "pinky" +/obj/item/weapon/storage/pill_bottle/antitox + starts_with = list(/obj/item/weapon/reagent_containers/pill/antitox = 14) + +/obj/item/weapon/storage/pill_bottle/bicaridine + starts_with = list(/obj/item/weapon/reagent_containers/pill/bicaridine = 14) + +/obj/item/weapon/storage/pill_bottle/dexalin_plus + starts_with = list(/obj/item/weapon/reagent_containers/pill/dexalin_plus = 14) + +/obj/item/weapon/storage/pill_bottle/dermaline + starts_with = list(/obj/item/weapon/reagent_containers/pill/dermaline = 14) + +/obj/item/weapon/storage/pill_bottle/dylovene + starts_with = list(/obj/item/weapon/reagent_containers/pill/dylovene = 14) + +/obj/item/weapon/storage/pill_bottle/inaprovaline + starts_with = list(/obj/item/weapon/reagent_containers/pill/inaprovaline = 14) + +/obj/item/weapon/storage/pill_bottle/kelotane + starts_with = list(/obj/item/weapon/reagent_containers/pill/kelotane = 14) + +/obj/item/weapon/storage/pill_bottle/spaceacillin + starts_with = list(/obj/item/weapon/reagent_containers/pill/spaceacillin = 14) + +/obj/item/weapon/storage/pill_bottle/tramadol + starts_with = list(/obj/item/weapon/reagent_containers/pill/tramadol = 14) + +/obj/item/weapon/storage/pill_bottle/citalopram + starts_with = list(/obj/item/weapon/reagent_containers/pill/citalopram = 14) + +/obj/item/weapon/storage/pill_bottle/carbon + starts_with = list(/obj/item/weapon/reagent_containers/pill/carbon = 14) + +/obj/item/weapon/storage/pill_bottle/iron + starts_with = list(/obj/item/weapon/reagent_containers/pill/iron = 14) + /obj/item/weapon/storage/pill_bottle/adminordrazine name = "pill bottle (Adminordrazine)" desc = "It's magic. We don't have to explain it." @@ -17,67 +156,73 @@ /obj/item/weapon/storage/pill_bottle/rezadone name = "pill bottle (Rezadone)" desc = "A powder with almost magical properties, this substance can effectively treat genetic damage in humanoids, though excessive consumption has side effects." - starts_with = list(/obj/item/weapon/reagent_containers/pill/rezadone = 7) + starts_with = list(/obj/item/weapon/reagent_containers/pill/rezadone = 14) wrapper_color = COLOR_GREEN_GRAY /obj/item/weapon/storage/pill_bottle/peridaxon name = "pill bottle (Peridaxon)" desc = "Used to encourage recovery of internal organs and nervous systems. Medicate cautiously." - starts_with = list(/obj/item/weapon/reagent_containers/pill/peridaxon = 7) + starts_with = list(/obj/item/weapon/reagent_containers/pill/peridaxon = 14) wrapper_color = COLOR_PURPLE /obj/item/weapon/storage/pill_bottle/carthatoline name = "pill bottle (Carthatoline)" desc = "Carthatoline is strong evacuant used to treat severe poisoning." - starts_with = list(/obj/item/weapon/reagent_containers/pill/carthatoline = 7) + starts_with = list(/obj/item/weapon/reagent_containers/pill/carthatoline = 14) wrapper_color = COLOR_GREEN_GRAY /obj/item/weapon/storage/pill_bottle/alkysine name = "pill bottle (Alkysine)" desc = "Alkysine is a drug used to lessen the damage to neurological tissue after a catastrophic injury. Can heal brain tissue." - starts_with = list(/obj/item/weapon/reagent_containers/pill/alkysine = 7) + starts_with = list(/obj/item/weapon/reagent_containers/pill/alkysine = 14) wrapper_color = COLOR_YELLOW /obj/item/weapon/storage/pill_bottle/imidazoline name = "pill bottle (Imidazoline)" desc = "Heals eye damage." - starts_with = list(/obj/item/weapon/reagent_containers/pill/imidazoline = 7) + starts_with = list(/obj/item/weapon/reagent_containers/pill/imidazoline = 14) wrapper_color = COLOR_PURPLE_GRAY /obj/item/weapon/storage/pill_bottle/osteodaxon name = "pill bottle (Osteodaxon)" desc = "An experimental drug used to heal bone fractures." - starts_with = list(/obj/item/weapon/reagent_containers/pill/osteodaxon = 7) + starts_with = list(/obj/item/weapon/reagent_containers/pill/osteodaxon = 14) wrapper_color = COLOR_WHITE /obj/item/weapon/storage/pill_bottle/myelamine name = "pill bottle (Myelamine)" desc = "Used to rapidly clot internal hemorrhages by increasing the effectiveness of platelets." - starts_with = list(/obj/item/weapon/reagent_containers/pill/myelamine = 7) + starts_with = list(/obj/item/weapon/reagent_containers/pill/myelamine = 14) wrapper_color = COLOR_PALE_PURPLE_GRAY /obj/item/weapon/storage/pill_bottle/hyronalin name = "pill bottle (Hyronalin)" desc = "Hyronalin is a medicinal drug used to counter the effect of radiation poisoning." - starts_with = list(/obj/item/weapon/reagent_containers/pill/hyronalin = 7) + starts_with = list(/obj/item/weapon/reagent_containers/pill/hyronalin = 14) wrapper_color = COLOR_TEAL /obj/item/weapon/storage/pill_bottle/arithrazine name = "pill bottle (Arithrazine)" desc = "Arithrazine is an unstable medication used for the most extreme cases of radiation poisoning." - starts_with = list(/obj/item/weapon/reagent_containers/pill/arithrazine = 7) + starts_with = list(/obj/item/weapon/reagent_containers/pill/arithrazine = 14) wrapper_color = COLOR_TEAL /obj/item/weapon/storage/pill_bottle/corophizine name = "pill bottle (Corophizine)" desc = "A wide-spectrum antibiotic drug. Powerful and uncomfortable in equal doses." - starts_with = list(/obj/item/weapon/reagent_containers/pill/corophizine = 7) + starts_with = list(/obj/item/weapon/reagent_containers/pill/corophizine = 14) wrapper_color = COLOR_PALE_GREEN_GRAY +/obj/item/weapon/storage/pill_bottle/vermicetol + name = "pill bottle (Vermicetol)" + desc = "Contains pills used to stabilize the extremely injured." + starts_with = list(/obj/item/weapon/reagent_containers/pill/vermicetol = 14) + wrapper_color = COLOR_MAROON + /obj/item/weapon/storage/pill_bottle/healing_nanites name = "pill bottle (Healing nanites)" desc = "Miniature medical robots that swiftly restore bodily damage." - starts_with = list(/obj/item/weapon/reagent_containers/pill/healing_nanites = 7) + starts_with = list(/obj/item/weapon/reagent_containers/pill/healing_nanites = 14) /obj/item/weapon/storage/pill_bottle/sleevingcure name = "pill bottle (Vey-Med Resleeving Booster)" @@ -87,23 +232,6 @@ /obj/item/weapon/storage/pill_bottle/sleevingcure/full starts_with = list(/obj/item/weapon/reagent_containers/pill/sleevingcure = 14) -/obj/item/weapon/storage/firstaid/insiderepair - name = "combat organ kit" - desc = "Contains advanced organ medical treatments." - icon_state = "bezerk" - item_state_slots = list(slot_r_hand_str = "firstaid-advanced", slot_l_hand_str = "firstaid-advanced") - starts_with = list( - /obj/item/weapon/storage/pill_bottle/rezadone, - /obj/item/weapon/storage/pill_bottle/peridaxon, - /obj/item/weapon/storage/pill_bottle/carthatoline, - /obj/item/weapon/storage/pill_bottle/alkysine, - /obj/item/weapon/storage/pill_bottle/imidazoline, - /obj/item/weapon/storage/pill_bottle/osteodaxon, - /obj/item/weapon/storage/pill_bottle/myelamine, - /obj/item/weapon/storage/pill_bottle/arithrazine, - /obj/item/device/healthanalyzer/advanced - ) - /obj/item/weapon/storage/mrebag/pill name = "vacuum-sealed pill" desc = "A small vacuum-sealed package containing a singular pill. For emergencies only." @@ -119,5 +247,39 @@ /obj/item/weapon/storage/pill_bottle/paracetamol name = "pill bottle (Paracetamol)" desc = "Contains over the counter medicine to treat pain." - starts_with = list(/obj/item/weapon/reagent_containers/pill/paracetamol = 7) + starts_with = list(/obj/item/weapon/reagent_containers/pill/paracetamol = 14) wrapper_color = COLOR_GRAY + +/obj/item/weapon/storage/pill_bottle/dexalin + name = "pill bottle (Dexalin)" + desc = "Contains pills used to treat oxygen deprivation." + starts_with = list(/obj/item/weapon/reagent_containers/pill/dexalin = 14) + wrapper_color = "#3366cc" + +/obj/item/weapon/storage/pill_bottle/assorted + name = "pill bottle (Assorted)" + desc = "Commonly found on paramedics, these assorted pill bottles contain basic treatments for nonstandard injuries." + starts_with = list( + /obj/item/weapon/reagent_containers/pill/inaprovaline = 3, + /obj/item/weapon/reagent_containers/pill/antitox = 3, + /obj/item/weapon/reagent_containers/pill/iron = 2, + /obj/item/weapon/reagent_containers/pill/tramadol = 2, + /obj/item/weapon/reagent_containers/pill/hyronalin = 3, + /obj/item/weapon/reagent_containers/pill/spaceacillin + ) + wrapper_color = COLOR_BLACK + +/obj/item/weapon/storage/pill_bottle/combat + name = "pill bottle (Combat)" + desc = "A pill bottle filled with some of the rarest medical treatmeants to exist." + max_storage_space = ITEMSIZE_COST_TINY * 20 + starts_with = list( + /obj/item/weapon/reagent_containers/pill/peridaxon = 5, + /obj/item/weapon/reagent_containers/pill/rezadone = 5, + /obj/item/weapon/reagent_containers/pill/myelamine = 3, + /obj/item/weapon/reagent_containers/pill/osteodaxon = 3, + /obj/item/weapon/reagent_containers/pill/arithrazine = 2, + /obj/item/weapon/reagent_containers/pill/alkysine = 1, + /obj/item/weapon/reagent_containers/pill/imidazoline = 1 + ) + wrapper_color = COLOR_BLACK diff --git a/code/game/objects/items/weapons/storage/mre.dm b/code/game/objects/items/weapons/storage/mre.dm index 582af52f43..50536564d3 100644 --- a/code/game/objects/items/weapons/storage/mre.dm +++ b/code/game/objects/items/weapons/storage/mre.dm @@ -24,7 +24,7 @@ MRE Stuff /obj/item/weapon/storage/mre/examine(mob/user) . = ..() - to_chat(user, meal_desc) + . += meal_desc /obj/item/weapon/storage/mre/update_icon() if(opened) diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index df775b3cc0..c8bc129e3d 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -29,8 +29,9 @@ use_sound = 'sound/items/storage/briefcase.ogg' examine(mob/user) - if(..(user, 1)) - to_chat(user, "The service panel is [src.open ? "open" : "closed"].") + . = ..() + if(Adjacent(user)) + . += "The service panel is [src.open ? "open" : "closed"]." attackby(obj/item/weapon/W as obj, mob/user as mob) if(locked) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 1b25d5e19a..d14a4ab29b 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -722,10 +722,10 @@ ..() /obj/item/weapon/storage/trinketbox/examine(mob/user) - ..() + . = ..() if(open && contents.len) var/display_item = contents[1] - to_chat(user, "\The [src] contains \the [display_item]!") + . += "\The [src] contains \the [display_item]!" /obj/item/weapon/storage/AllowDrop() return TRUE diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 3bf10a4b78..a875dbfa3c 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -101,13 +101,13 @@ set_light(0) /obj/item/weapon/melee/baton/examine(mob/user) - if(!..(user, 1)) - return + . = ..() - if(bcell) - to_chat(user, "The baton is [round(bcell.percent())]% charged.") - if(!bcell) - to_chat(user, "The baton does not have a power source installed.") + if(Adjacent(user, src)) + if(bcell) + . += "The baton is [round(bcell.percent())]% charged." + if(!bcell) + . += "The baton does not have a power source installed." /obj/item/weapon/melee/baton/attackby(obj/item/weapon/W, mob/user) if(use_external_power) diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index ec9e62c86b..204ebb6f89 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -14,7 +14,6 @@ desc = "Murder device." icon = 'icons/obj/weapons.dmi' icon_state = "baton" - item_state = "classic_baton" slot_flags = SLOT_BELT force = 10 drop_sound = 'sound/items/drop/metalweapon.ogg' diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index 528b8eb447..eec15d1e94 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -30,7 +30,7 @@ /obj/item/weapon/tank/jetpack/examine(mob/user) . = ..() if(air_contents.total_moles < 5) - to_chat(user, "The meter on \the [src] indicates you are almost out of gas!") + . += "The meter on \the [src] indicates you are almost out of gas!" playsound(user, 'sound/effects/alert.ogg', 50, 1) /obj/item/weapon/tank/jetpack/verb/toggle_rockets() @@ -116,8 +116,8 @@ var/obj/item/weapon/rig/holder /obj/item/weapon/tank/jetpack/rig/examine() - to_chat(usr, "It's a jetpack. If you can see this, report it on the bug tracker.") - return 0 + . = ..() + . += "It's a jetpack. If you can see this, report it on the bug tracker." /obj/item/weapon/tank/jetpack/rig/allow_thrust(num, mob/living/user as mob) diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index 6d6839a4a5..c2a342b618 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -22,9 +22,9 @@ return /obj/item/weapon/tank/oxygen/examine(mob/user) - if(..(user, 0) && air_contents.gas["oxygen"] < 10) - to_chat(user, text("The meter on \the [src] indicates you are almost out of oxygen!")) - //playsound(usr, 'sound/effects/alert.ogg', 50, 1) + . = ..() + if(loc == user && (air_contents.gas["oxygen"] < 10)) + . += "The meter on \the [src] indicates you are almost out of oxygen!" /obj/item/weapon/tank/oxygen/yellow desc = "A tank of oxygen, this one is yellow." @@ -60,8 +60,9 @@ icon_state = "oxygen" /obj/item/weapon/tank/air/examine(mob/user) - if(..(user, 0) && air_contents.gas["oxygen"] < 1 && loc==user) - to_chat(user, "The meter on the [src.name] indicates you are almost out of air!") + . = ..() + if(loc == user && (air_contents.gas["oxygen"] < 1)) + . += "The meter on \the [src] indicates you are almost out of air!" user << sound('sound/effects/alert.ogg') /obj/item/weapon/tank/air/Initialize() @@ -153,8 +154,9 @@ return /obj/item/weapon/tank/emergency/oxygen/examine(mob/user) - if(..(user, 0) && air_contents.gas["oxygen"] < 0.2 && loc==user) - to_chat(user, text("The meter on the [src.name] indicates you are almost out of air!")) + . = ..() + if(loc == user && (air_contents.gas["oxygen"] < 0.2)) + . += "The meter on the [src.name] indicates you are almost out of air!" user << sound('sound/effects/alert.ogg') /obj/item/weapon/tank/emergency/oxygen/engi @@ -228,8 +230,9 @@ return /obj/item/weapon/tank/nitrogen/examine(mob/user) - if(..(user, 0) && air_contents.gas["nitrogen"] < 10) - to_chat(user, text("The meter on \the [src] indicates you are almost out of nitrogen!")) + . = ..() + if(loc == user && (air_contents.gas["nitrogen"] < 10)) + . += "The meter on \the [src] indicates you are almost out of nitrogen!" //playsound(user, 'sound/effects/alert.ogg', 50, 1) /obj/item/weapon/tank/stasis/nitro_cryo // Synthmorph bags need to have initial pressure within safe bounds for human atmospheric pressure, but low temperature to stop unwanted degredation. diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index bfb484b307..f176046ef7 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -82,8 +82,8 @@ var/list/global/tank_gauge_cache = list() . = ..() /obj/item/weapon/tank/examine(mob/user) - . = ..(user, 0) - if(.) + . = ..() + if(loc == user) var/celsius_temperature = air_contents.temperature - T0C var/descriptive switch(celsius_temperature) @@ -101,12 +101,12 @@ var/list/global/tank_gauge_cache = list() descriptive = "cold" else descriptive = "bitterly cold" - to_chat(user, "\The [src] feels [descriptive].") + . += "\The [src] feels [descriptive]." if(src.proxyassembly.assembly || wired) - to_chat(user, "It seems to have [wired? "some wires ": ""][wired && src.proxyassembly.assembly? "and ":""][src.proxyassembly.assembly ? "some sort of assembly ":""]attached to it.") + . += "It seems to have [wired? "some wires ": ""][wired && src.proxyassembly.assembly? "and ":""][src.proxyassembly.assembly ? "some sort of assembly ":""]attached to it." if(src.valve_welded) - to_chat(user, "\The [src] emergency relief valve has been welded shut!") + . += "\The [src] emergency relief valve has been welded shut!" /obj/item/weapon/tank/attackby(obj/item/weapon/W as obj, mob/user as mob) diff --git a/code/game/objects/items/weapons/tools/combitool.dm b/code/game/objects/items/weapons/tools/combitool.dm index b154f059af..43bb2794fe 100644 --- a/code/game/objects/items/weapons/tools/combitool.dm +++ b/code/game/objects/items/weapons/tools/combitool.dm @@ -22,12 +22,12 @@ var/list/tools = list() var/current_tool = 1 -/obj/item/weapon/combitool/examine() - ..() - if(loc == usr && tools.len) - to_chat(usr, "It has the following fittings:") +/obj/item/weapon/combitool/examine(mob/user) + . = ..() + if(loc == user && tools.len) + . += "It has the following fittings:" for(var/obj/item/tool in tools) - to_chat(usr, "[bicon(tool)] - [tool.name][tools[current_tool]==tool?" (selected)":""]") + . += "[bicon(tool)] - [tool.name][tools[current_tool]==tool?" (selected)":""]") /obj/item/weapon/combitool/New() ..() diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm index ece27fb2c9..e6c2cb3630 100644 --- a/code/game/objects/items/weapons/tools/weldingtool.dm +++ b/code/game/objects/items/weapons/tools/weldingtool.dm @@ -56,9 +56,9 @@ return ..() /obj/item/weapon/weldingtool/examine(mob/user) - if(..(user, 0)) - if(max_fuel) - to_chat(user, "[bicon(src)] The [src.name] contains [get_fuel()]/[src.max_fuel] units of fuel!") + . = ..() + if(max_fuel && loc == user) + . += "It contains [get_fuel()]/[src.max_fuel] units of fuel!" /obj/item/weapon/weldingtool/attack(atom/A, mob/living/user, def_zone) if(ishuman(A) && user.a_intent == I_HELP) @@ -68,6 +68,11 @@ if(!S || S.robotic < ORGAN_ROBOT || S.open == 3) return ..() + //VOREStation Add - No welding nanoform limbs + if(S.robotic > ORGAN_LIFELIKE) + return ..() + //VOREStation Add End + if(S.organ_tag == BP_HEAD) if(H.head && istype(H.head,/obj/item/clothing/head/helmet/space)) to_chat(user, "You can't apply [src] through [H.head]!") @@ -557,13 +562,12 @@ return power_supply /obj/item/weapon/weldingtool/electric/examine(mob/user) - if(get_dist(src, user) > 1) - to_chat(user, desc) - else + . = ..() + if(Adjacent(user)) if(power_supply) - to_chat(user, "[bicon(src)] The [src.name] has [get_fuel()] charge left.") + . += "It [src.name] has [get_fuel()] charge left." else - to_chat(user, "[bicon(src)] The [src.name] has no power cell!") + . += "It [src.name] has no power cell!" /obj/item/weapon/weldingtool/electric/get_fuel() if(use_external_power) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index ff982da257..82e6ff7699 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -99,7 +99,6 @@ anchored = 0 can_buckle = 1 - buckle_movable = 1 buckle_lying = 0 buckle_dir = SOUTH @@ -122,18 +121,6 @@ if(!has_buckled_mobs()) qdel(src) -/obj/effect/energy_net/Move() - ..() - if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/occupant = A - occupant.buckled = null - occupant.forceMove(src.loc) - occupant.buckled = src - if (occupant && (src.loc != occupant.loc)) - unbuckle_mob(occupant) - qdel(src) - /obj/effect/energy_net/user_unbuckle_mob(mob/living/buckled_mob, mob/user) user.setClickCooldown(user.get_attack_speed()) visible_message("[user] begins to tear at \the [src]!") diff --git a/code/game/objects/items/weapons/weldbackpack.dm b/code/game/objects/items/weapons/weldbackpack.dm index 2f946a5942..f603aa6498 100644 --- a/code/game/objects/items/weapons/weldbackpack.dm +++ b/code/game/objects/items/weapons/weldbackpack.dm @@ -144,9 +144,8 @@ src.add_fingerprint(usr) /obj/item/weapon/weldpack/examine(mob/user) - ..(user) - to_chat(user, "[bicon(src)] [src.reagents.total_volume] units of fuel left!") - return + . = ..() + . += "It has [src.reagents.total_volume] units of fuel left!" /obj/item/weapon/weldpack/survival name = "emergency welding kit" diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index faafdb62f3..2a361f1d46 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -142,6 +142,7 @@ return /mob/proc/unset_machine() + machine?.remove_visual(src) src.machine = null /mob/proc/set_machine(var/obj/O) @@ -162,9 +163,9 @@ /obj/proc/hides_under_flooring() return 0 -/obj/proc/hear_talk(mob/M as mob, text, verb, datum/language/speaking) +/obj/proc/hear_talk(mob/M, list/message_pieces, verb) if(talking_atom) - talking_atom.catchMessage(text, M) + talking_atom.catchMessage(multilingual_to_message(message_pieces), M) /* var/mob/mo = locate(/mob) in src if(mo) diff --git a/code/game/objects/random/guns_and_ammo.dm b/code/game/objects/random/guns_and_ammo.dm index 62dde5a3df..a3411ef6fe 100644 --- a/code/game/objects/random/guns_and_ammo.dm +++ b/code/game/objects/random/guns_and_ammo.dm @@ -400,4 +400,136 @@ /obj/item/weapon/gun/projectile/shotgun/pump/combat, /obj/item/weapon/storage/box/shotgunammo ) - ) \ No newline at end of file + ) + +// Not strictly a gun, but is used in PoIs to spawn the dropped guns of mercs, or a busted version. +/obj/random/projectile/scrapped_gun + name = "broken gun spawner" + desc = "Spawns a random broken gun, or rarely a fully functional one." + icon = 'icons/obj/gun.dmi' + icon_state = "revolver" + +/obj/random/projectile/scrapped_gun/item_to_spawn() + return pickweight(list( + /obj/random/projectile/scrapped_pistol = 10, + /obj/random/projectile/scrapped_smg = 5, + /obj/random/projectile/scrapped_laser = 5, + /obj/random/projectile/scrapped_shotgun = 3, + /obj/random/projectile/scrapped_ionrifle = 3, + /obj/random/projectile/scrapped_bulldog = 1, + /obj/random/projectile/scrapped_flechette = 1, + /obj/random/projectile/scrapped_grenadelauncher = 1, + /obj/random/projectile/scrapped_dartgun = 1 + )) + +/obj/random/projectile/scrapped_shotgun + name = "broken shotgun spawner" + desc = "Loot for PoIs, or their mobs." + icon = 'icons/obj/gun.dmi' + icon_state = "shotgun" + +/obj/random/projectile/scrapped_shotgun/item_to_spawn() + return pickweight(list( + /obj/item/weapon/broken_gun/pumpshotgun = 10, + /obj/item/weapon/broken_gun/pumpshotgun_combat = 5, + /obj/item/weapon/gun/projectile/shotgun/pump = 3, + /obj/item/weapon/gun/projectile/shotgun/pump/combat = 1 + )) + +/obj/random/projectile/scrapped_smg + name = "broken smg spawner" + desc = "Loot for PoIs, or their mobs." + icon = 'icons/obj/gun.dmi' + icon_state = "revolver" + +/obj/random/projectile/scrapped_smg/item_to_spawn() + return pickweight(list( + /obj/item/weapon/broken_gun/c20r = 10, + /obj/item/weapon/gun/projectile/automatic/c20r = 3 + )) + +/obj/random/projectile/scrapped_pistol + name = "broken pistol spawner" + desc = "Loot for PoIs, or their mobs." + icon = 'icons/obj/gun.dmi' + icon_state = "revolver" + +/obj/random/projectile/scrapped_pistol/item_to_spawn() + return pickweight(list( + /obj/item/weapon/broken_gun/silenced45 = 10, + /obj/item/weapon/gun/projectile/silenced = 3 + )) + +/obj/random/projectile/scrapped_laser + name = "broken laser spawner" + desc = "Loot for PoIs, or their mobs." + icon = 'icons/obj/gun.dmi' + icon_state = "revolver" + +/obj/random/projectile/scrapped_laser/item_to_spawn() + return pickweight(list( + /obj/item/weapon/broken_gun/laserrifle = 10, + /obj/item/weapon/broken_gun/laser_retro = 5, + /obj/item/weapon/gun/energy/laser = 3, + /obj/item/weapon/gun/energy/retro = 1 + )) + +/obj/random/projectile/scrapped_ionrifle + name = "broken ionrifle spawner" + desc = "Loot for PoIs, or their mobs." + icon = 'icons/obj/gun.dmi' + icon_state = "revolver" + +/obj/random/projectile/scrapped_ionrifle/item_to_spawn() + return pickweight(list( + /obj/item/weapon/broken_gun/ionrifle = 10, + /obj/item/weapon/gun/energy/ionrifle = 3 + )) + +/obj/random/projectile/scrapped_bulldog + name = "broken z8 spawner" + desc = "Loot for PoIs, or their mobs." + icon = 'icons/obj/gun.dmi' + icon_state = "revolver" + +/obj/random/projectile/scrapped_bulldog/item_to_spawn() + return pickweight(list( + /obj/item/weapon/broken_gun/z8 = 10, + /obj/item/weapon/gun/projectile/automatic/z8 = 3 + )) + +/obj/random/projectile/scrapped_flechette + name = "broken flechette spawner" + desc = "Loot for PoIs, or their mobs." + icon = 'icons/obj/gun.dmi' + icon_state = "revolver" + +/obj/random/projectile/scrapped_flechette/item_to_spawn() + return pickweight(list( + /obj/item/weapon/broken_gun/flechette = 10, + /obj/item/weapon/gun/magnetic/railgun/flechette = 3 + )) + +/obj/random/projectile/scrapped_grenadelauncher + name = "broken grenadelauncher spawner" + desc = "Loot for PoIs, or their mobs." + icon = 'icons/obj/gun.dmi' + icon_state = "revolver" + +/obj/random/projectile/scrapped_grenadelauncher/item_to_spawn() + return pickweight(list( + /obj/item/weapon/broken_gun/grenadelauncher = 10, + /obj/item/weapon/gun/launcher/grenade = 3 + )) + +/obj/random/projectile/scrapped_dartgun + name = "broken dartgun spawner" + desc = "Loot for PoIs, or their mobs." + icon = 'icons/obj/gun.dmi' + icon_state = "revolver" + +/obj/random/projectile/scrapped_dartgun/item_to_spawn() + return pickweight(list( + /obj/item/weapon/broken_gun/dartgun = 10, + /obj/item/weapon/gun/projectile/dartgun = 3 + )) diff --git a/code/game/objects/random/mapping.dm b/code/game/objects/random/mapping.dm index d39983af2f..bc6d29a5a5 100644 --- a/code/game/objects/random/mapping.dm +++ b/code/game/objects/random/mapping.dm @@ -389,7 +389,7 @@ /obj/item/device/pda/clown, /obj/item/clothing/mask/gas/clown_hat, /obj/item/weapon/bikehorn, - /obj/item/toy/waterflower, + /obj/item/weapon/reagent_containers/spray/waterflower, /obj/item/weapon/pen/crayon/rainbow, /obj/structure/closet/crate ), diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index 4e29ac66ec..fe53d2ef55 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -469,7 +469,18 @@ /obj/item/toy/plushie/spider, /obj/item/toy/plushie/tabby_cat, /obj/item/toy/plushie/tuxedo_cat, - /obj/item/toy/plushie/white_cat) + /obj/item/toy/plushie/white_cat, + //VOREStation Add Start + /obj/item/toy/plushie/lizardplushie, + /obj/item/toy/plushie/lizardplushie/kobold, + /obj/item/toy/plushie/slimeplushie, + /obj/item/toy/plushie/box, + /obj/item/toy/plushie/borgplushie, + /obj/item/toy/plushie/borgplushie/medihound, + /obj/item/toy/plushie/borgplushie/scrubpuppy, + /obj/item/toy/plushie/foxbear, + /obj/item/toy/plushie/nukeplushie) + //VOREStation Add End /obj/random/plushielarge name = "random large plushie" @@ -504,7 +515,7 @@ /obj/item/toy/balloon, /obj/item/toy/crossbow, /obj/item/toy/blink, - /obj/item/toy/waterflower, + /obj/item/weapon/reagent_containers/spray/waterflower, /obj/item/toy/eight_ball, /obj/item/toy/eight_ball/conch, /obj/item/toy/prize/ripley, @@ -700,3 +711,16 @@ /obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/purple, /obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/grey, /obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/brown) + +/obj/random/thermalponcho + name = "random thermal poncho" + desc = "This is a thermal poncho spawn." + icon = 'icons/obj/clothing/ties.dmi' + icon_state = "classicponcho" + +/obj/random/thermalponcho/item_to_spawn() + return pick(prob(5);/obj/item/clothing/accessory/poncho/thermal, + prob(3);/obj/item/clothing/accessory/poncho/thermal/red, + prob(3);/obj/item/clothing/accessory/poncho/thermal/green, + prob(3);/obj/item/clothing/accessory/poncho/thermal/purple, + prob(3);/obj/item/clothing/accessory/poncho/thermal/blue) diff --git a/code/game/objects/random/mob.dm b/code/game/objects/random/mob.dm index 966498a2bd..ac89272f52 100644 --- a/code/game/objects/random/mob.dm +++ b/code/game/objects/random/mob.dm @@ -104,6 +104,15 @@ prob(33);/mob/living/simple_mob/animal/giant_spider/frost, prob(45);/mob/living/simple_mob/animal/sif/shantak) +/obj/random/mob/sif/kururak + name = "Random Kururak" + desc = "This is a random kururak, either waking or hibernating. Will be hostile if more than one are waking." + icon_state = "frost" + +/obj/random/mob/sif/kururak/item_to_spawn() + return pick(prob(1);/mob/living/simple_mob/animal/sif/kururak/hibernate, + prob(20);/mob/living/simple_mob/animal/sif/kururak) + /obj/random/mob/spider name = "Random Spider" //Spiders should patrol where they spawn. desc = "This is a random boring spider." @@ -163,6 +172,7 @@ /obj/random/mob/robotic/item_to_spawn() //Hivebots have a total number of 'lots' equal to the lesser drone, at 60. return pick(prob(60);/mob/living/simple_mob/mechanical/combat_drone/lesser, prob(50);/mob/living/simple_mob/mechanical/combat_drone, + prob(50);/mob/living/simple_mob/mechanical/mining_drone, prob(15);/mob/living/simple_mob/mechanical/mecha/ripley, prob(15);/mob/living/simple_mob/mechanical/mecha/odysseus, prob(10);/mob/living/simple_mob/mechanical/hivebot, @@ -174,6 +184,25 @@ prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong, prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong/guard) +/obj/random/mob/robotic/drone + name = "Random Drone" + desc = "This is a random drone." + icon_state = "drone_dead" + + overwrite_hostility = 1 + + mob_faction = "malf_drone" + mob_returns_home = 1 + mob_wander = 1 + mob_wander_distance = 5 + mob_hostile = 1 + mob_retaliate = 1 + +/obj/random/mob/robotic/drone/item_to_spawn() + return pick(prob(6);/mob/living/simple_mob/mechanical/combat_drone/lesser, + prob(1);/mob/living/simple_mob/mechanical/combat_drone, + prob(3);/mob/living/simple_mob/mechanical/mining_drone) + /obj/random/mob/robotic/hivebot name = "Random Hivebot" desc = "This is a random hivebot." @@ -203,3 +232,129 @@ prob(30);/mob/living/simple_mob/animal/passive/mouse/brown, prob(30);/mob/living/simple_mob/animal/passive/mouse/gray, prob(25);/obj/random/mouseremains) //because figuring out how to come up with it picking nothing is beyond my coding ability. + +// Mercs +/obj/random/mob/merc + name = "Random Mercenary" + desc = "This is a random PoI mercenary." + icon_state = "syndicate" + + mob_faction = "syndicate" + mob_returns_home = 1 + mob_wander_distance = 7 // People like to wander, and these people probably have a lot of stuff to guard. + +/obj/random/mob/merc/item_to_spawn() + return pick(prob(60);/mob/living/simple_mob/humanoid/merc/melee/poi, + prob(40);/mob/living/simple_mob/humanoid/merc/melee/sword/poi, + prob(40);/mob/living/simple_mob/humanoid/merc/ranged/poi, + prob(30);/mob/living/simple_mob/humanoid/merc/ranged/smg/poi, + prob(20);/mob/living/simple_mob/humanoid/merc/ranged/laser/poi, + prob(5);/mob/living/simple_mob/humanoid/merc/ranged/ionrifle/poi, + prob(10);/mob/living/simple_mob/humanoid/merc/ranged/grenadier/poi, + prob(10);/mob/living/simple_mob/humanoid/merc/ranged/rifle/poi, + prob(15);/mob/living/simple_mob/humanoid/merc/ranged/rifle/mag/poi, + prob(10);/mob/living/simple_mob/humanoid/merc/ranged/technician/poi + ) + +/obj/random/mob/merc/armored + name = "Random Armored Infantry Merc" + desc = "This is a random PoI exo or robot for mercs." + icon_state = "drone3" + +/obj/random/mob/merc/armored/item_to_spawn() + return pick(prob(30);/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark, + prob(40);/mob/living/simple_mob/mechanical/mecha/combat/gygax/medgax, + prob(40);/mob/living/simple_mob/mechanical/mecha/combat/gygax, + prob(10);/mob/living/simple_mob/mechanical/mecha/combat/durand/defensive/mercenary, + prob(60);/mob/living/simple_mob/mechanical/mecha/hoverpod/manned, + prob(5);/mob/living/simple_mob/mechanical/mecha/combat/marauder, + prob(1);/mob/living/simple_mob/mechanical/mecha/combat/marauder/seraph, + prob(15);/mob/living/simple_mob/mechanical/mecha/odysseus/manned, + prob(15);/mob/living/simple_mob/mechanical/mecha/odysseus/murdysseus/manned, + prob(60);/mob/living/simple_mob/mechanical/mecha/ripley/manned + ) + +/obj/random/mob/merc/all + name = "Random Mercenary All" + desc = "A random PoI mercenary, including armored." + +/obj/random/mob/merc/all/item_to_spawn() + return pick(prob(20);/obj/random/mob/merc, + prob(1);/obj/random/mob/merc/armored + ) + +// Multiple mobs, one spawner. +/obj/random/mob/multiple + name = "Random Multiple Mob Spawner" + desc = "A base multiple-mob spawner. Takes lists of lists." + +/obj/random/mob/multiple/spawn_item() + var/list/things_to_make = item_to_spawn() + + for(var/new_type in things_to_make) + + var/mob/living/simple_mob/M = new new_type(src.loc) + + if(!istype(M)) + continue + + if(M.has_AI()) + var/datum/ai_holder/AI = M.ai_holder + AI.go_sleep() //Don't fight eachother while we're still setting up! + AI.returns_home = mob_returns_home + AI.wander = mob_wander + AI.max_home_distance = mob_wander_distance + if(overwrite_hostility) + AI.hostile = mob_hostile + AI.retaliate = mob_retaliate + AI.go_wake() //Now you can kill eachother if your faction didn't override. + + if(pixel_x || pixel_y) + M.pixel_x = pixel_x + M.pixel_y = pixel_y + +/obj/random/mob/multiple/sifmobs + name = "Random Sifmob Pack" + desc = "A pack of random neutral sif mobs." + +/obj/random/mob/multiple/sifmobs/item_to_spawn() + return pick( + prob(60);list( + /mob/living/simple_mob/animal/sif/diyaab, + /mob/living/simple_mob/animal/sif/diyaab, + /mob/living/simple_mob/animal/sif/diyaab + ), + prob(15);list( + /mob/living/simple_mob/animal/sif/duck, + /mob/living/simple_mob/animal/sif/duck, + /mob/living/simple_mob/animal/sif/duck + ), + prob(10);list( + /mob/living/simple_mob/animal/sif/shantak/retaliate, + /mob/living/simple_mob/animal/sif/shantak/retaliate, + /mob/living/simple_mob/animal/sif/shantak/retaliate, + /mob/living/simple_mob/animal/sif/shantak/leader/autofollow/retaliate + ), + prob(5);list( + /mob/living/simple_mob/animal/sif/kururak/leader, + /mob/living/simple_mob/animal/sif/kururak, + /mob/living/simple_mob/animal/sif/kururak + ), + prob(5);list( + /mob/living/simple_mob/animal/sif/glitterfly, + /mob/living/simple_mob/animal/sif/glitterfly, + /mob/living/simple_mob/animal/sif/glitterfly, + /mob/living/simple_mob/animal/sif/glitterfly, + /mob/living/simple_mob/animal/sif/glitterfly + ), + prob(1);list( + /mob/living/simple_mob/animal/goat, + /mob/living/simple_mob/animal/goat + ), + prob(1);list( + /mob/living/simple_mob/animal/sif/sakimm/intelligent, + /mob/living/simple_mob/animal/sif/sakimm, + /mob/living/simple_mob/animal/sif/sakimm, + /mob/living/simple_mob/animal/sif/sakimm + ) + ) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 3e571009d2..f89aa2edc9 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -8,11 +8,21 @@ var/parts var/list/climbers = list() var/block_turf_edges = FALSE // If true, turf edge icons will not be made on the turf this occupies. + + var/list/connections = list("0", "0", "0", "0") + var/list/other_connections = list("0", "0", "0", "0") + var/list/blend_objects = newlist() // Objects which to blend with + var/list/noblend_objects = newlist() //Objects to avoid blending with (such as children of listed blend objects. + +/obj/structure/Initialize() + . = ..() + if(climbable) + verbs += /obj/structure/proc/climb_on /obj/structure/Destroy() if(parts) new parts(loc) - . = ..() + return ..() /obj/structure/attack_hand(mob/user) if(breakable) @@ -46,13 +56,7 @@ if(3.0) return -/obj/structure/New() - ..() - if(climbable) - verbs += /obj/structure/proc/climb_on - /obj/structure/proc/climb_on() - set name = "Climb structure" set desc = "Climbs onto a structure." set category = "Object" @@ -61,7 +65,6 @@ do_climb(usr) /obj/structure/MouseDrop_T(mob/target, mob/user) - var/mob/living/H = user if(istype(H) && can_climb(H) && target == user) do_climb(target) @@ -185,3 +188,72 @@ user.do_attack_animation(src) spawn(1) qdel(src) return 1 + +/obj/structure/proc/can_visually_connect() + return anchored + +/obj/structure/proc/can_visually_connect_to(var/obj/structure/S) + return istype(S, src) + +/obj/structure/proc/update_connections(propagate = 0) + var/list/dirs = list() + var/list/other_dirs = list() + + for(var/obj/structure/S in orange(src, 1)) + if(can_visually_connect_to(S)) + if(S.can_visually_connect()) + if(propagate) + //S.update_connections() //Not here + S.update_icon() + dirs += get_dir(src, S) + + if(!can_visually_connect()) + connections = list("0", "0", "0", "0") + other_connections = list("0", "0", "0", "0") + return FALSE + + for(var/direction in cardinal) + var/turf/T = get_step(src, direction) + var/success = 0 + for(var/b_type in blend_objects) + if(istype(T, b_type)) + success = 1 + if(propagate) + var/turf/simulated/wall/W = T + if(istype(W)) + W.update_connections(1) + if(success) + break + if(success) + break + if(!success) + for(var/obj/O in T) + for(var/b_type in blend_objects) + if(istype(O, b_type)) + success = 1 + for(var/obj/structure/S in T) + if(istype(S, src)) + success = 0 + for(var/nb_type in noblend_objects) + if(istype(O, nb_type)) + success = 0 + + if(success) + break + if(success) + break + + if(success) + dirs += get_dir(src, T) + other_dirs += get_dir(src, T) + + refresh_neighbors() + + connections = dirs_to_corner_states(dirs) + other_connections = dirs_to_corner_states(other_dirs) + return TRUE + +/obj/structure/proc/refresh_neighbors() + for(var/thing in RANGE_TURFS(1, src)) + var/turf/T = thing + T.update_icon() diff --git a/code/game/objects/structures/barsign.dm b/code/game/objects/structures/barsign.dm index 13babf8a3d..cd1c448b2f 100644 --- a/code/game/objects/structures/barsign.dm +++ b/code/game/objects/structures/barsign.dm @@ -14,16 +14,16 @@ . -= "Off" /obj/structure/sign/double/barsign/examine(mob/user) - ..() + . = ..() switch(icon_state) if("Off") - to_chat(user, "It appears to be switched off.") + . += "It appears to be switched off." if("narsiebistro") - to_chat(user, "It shows a picture of a large black and red being. Spooky!") + . += "It shows a picture of a large black and red being. Spooky!" if("on", "empty") - to_chat(user, "The lights are on, but there's no picture.") + . += "The lights are on, but there's no picture." else - to_chat(user, "It says '[icon_state]'") + . += "It says '[icon_state]'" /obj/structure/sign/double/barsign/New() ..() diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 9f1af1cf1b..4180b78ec3 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -170,16 +170,14 @@ LINEN BINS /obj/structure/bedsheetbin/examine(mob/user) - ..(user) + . = ..() if(amount < 1) - to_chat(user, "There are no bed sheets in the bin.") - return - if(amount == 1) - to_chat(user, "There is one bed sheet in the bin.") - return - to_chat(user, "There are [amount] bed sheets in the bin.") - + . += "There are no bed sheets in the bin." + else if(amount == 1) + . += "There is one bed sheet in the bin." + else + . += "There are [amount] bed sheets in the bin." /obj/structure/bedsheetbin/update_icon() switch(amount) diff --git a/code/game/objects/structures/bedsheet_bin_vr.dm b/code/game/objects/structures/bedsheet_bin_vr.dm new file mode 100644 index 0000000000..e62ea51557 --- /dev/null +++ b/code/game/objects/structures/bedsheet_bin_vr.dm @@ -0,0 +1,15 @@ +/obj/item/weapon/bedsheet/cosmos + icon = 'icons/obj/items_vr.dmi' + icon_state = "sheetcosmos" + +/obj/item/weapon/bedsheet/cosmosdouble + icon = 'icons/obj/items_vr.dmi' + icon_state = "doublesheetcosmos" + +/obj/item/weapon/bedsheet/pirate + icon = 'icons/obj/items_vr.dmi' + icon_state = "sheetpirate" + +/obj/item/weapon/bedsheet/piratedouble + icon = 'icons/obj/items_vr.dmi' + icon_state = "doublesheetpirate" diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm index 26e040c7e9..85996cd61b 100644 --- a/code/game/objects/structures/catwalk.dm +++ b/code/game/objects/structures/catwalk.dm @@ -1,102 +1,119 @@ -// Based on catwalk.dm from https://github.com/Endless-Horizon/CEV-Eris /obj/structure/catwalk name = "catwalk" desc = "Cats really don't like these things." - plane = DECAL_PLANE - layer = ABOVE_UTILITY icon = 'icons/turf/catwalks.dmi' icon_state = "catwalk" + plane = DECAL_PLANE + layer = ABOVE_UTILITY density = 0 + anchored = 1.0 + var/hatch_open = FALSE + var/plating_color = null + var/obj/item/stack/tile/plated_tile = null + var/static/plating_colors = list( + /obj/item/stack/tile/floor = "#858a8f", + /obj/item/stack/tile/floor/dark = "#4f4f4f", + /obj/item/stack/tile/floor/white = "#e8e8e8") var/health = 100 var/maxhealth = 100 - anchored = 1.0 /obj/structure/catwalk/Initialize() . = ..() - for(var/obj/structure/catwalk/O in range(1)) - O.update_icon() for(var/obj/structure/catwalk/C in get_turf(src)) if(C != src) - warning("Duplicate [type] in [loc] ([x], [y], [z])") - return INITIALIZE_HINT_QDEL + qdel(C) + update_connections(1) update_icon() + /obj/structure/catwalk/Destroy() - var/turf/location = loc - . = ..() - location.alpha = initial(location.alpha) - for(var/obj/structure/catwalk/L in orange(location, 1)) - L.update_icon() + redraw_nearby_catwalks() + update_falling() + return ..() + +/obj/structure/catwalk/proc/update_falling() + spawn(1) //We get called in Destroy() and things. We might not be gone yet, so let's just put this off. + if(istype(loc, /turf/simulated/open)) + var/turf/simulated/open/O = loc + O.update() //Will cause anything on the open turf to fall if it should + +/obj/structure/catwalk/proc/redraw_nearby_catwalks() + for(var/direction in alldirs) + var/obj/structure/catwalk/L = locate() in get_step(src, direction) + if(L) + L.update_connections() + L.update_icon() //so siding get updated properly + /obj/structure/catwalk/update_icon() - var/connectdir = 0 - for(var/direction in cardinal) - if(locate(/obj/structure/catwalk, get_step(src, direction))) - connectdir |= direction - - //Check the diagonal connections for corners, where you have, for example, connections both north and east. In this case it checks for a north-east connection to determine whether to add a corner marker or not. - var/diagonalconnect = 0 //1 = NE; 2 = SE; 4 = NW; 8 = SW - //NORTHEAST - if(connectdir & NORTH && connectdir & EAST) - if(locate(/obj/structure/catwalk, get_step(src, NORTHEAST))) - diagonalconnect |= 1 - //SOUTHEAST - if(connectdir & SOUTH && connectdir & EAST) - if(locate(/obj/structure/catwalk, get_step(src, SOUTHEAST))) - diagonalconnect |= 2 - //NORTHWEST - if(connectdir & NORTH && connectdir & WEST) - if(locate(/obj/structure/catwalk, get_step(src, NORTHWEST))) - diagonalconnect |= 4 - //SOUTHWEST - if(connectdir & SOUTH && connectdir & WEST) - if(locate(/obj/structure/catwalk, get_step(src, SOUTHWEST))) - diagonalconnect |= 8 - - icon_state = "catwalk[connectdir]-[diagonalconnect]" - + update_connections() + cut_overlays() + icon_state = "" + var/image/I + if(!hatch_open) + for(var/i = 1 to 4) + I = image(icon, "catwalk[connections[i]]", dir = 1<<(i-1)) + add_overlay(I) + if(plating_color) + I = image(icon, "plated") + I.color = plating_color + add_overlay(I) /obj/structure/catwalk/ex_act(severity) switch(severity) - if(1.0) + if(1) + new /obj/item/stack/rods(src.loc) qdel(src) - if(2.0) + if(2) + new /obj/item/stack/rods(src.loc) qdel(src) - if(3.0) - qdel(src) - return + +/obj/structure/catwalk/attack_robot(var/mob/user) + if(Adjacent(user)) + attack_hand(user) + +/obj/structure/catwalk/proc/deconstruct(mob/user) + playsound(src, 'sound/items/Welder.ogg', 100, 1) + to_chat(user, "Slicing \the [src] joints ...") + new /obj/item/stack/rods(src.loc) + new /obj/item/stack/rods(src.loc) + //Lattice would delete itself, but let's save ourselves a new obj + if(istype(src.loc, /turf/space) || istype(src.loc, /turf/simulated/open)) + new /obj/structure/lattice/(src.loc) + if(plated_tile) + new plated_tile(src.loc) + qdel(src) /obj/structure/catwalk/attackby(obj/item/C as obj, mob/user as mob) - if(istype(C, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = C - if(WT.isOn()) - if(WT.remove_fuel(0, user)) - to_chat(user, "Slicing lattice joints ...") - new /obj/item/stack/rods(src.loc) - new /obj/item/stack/rods(src.loc) - new /obj/structure/lattice(src.loc) - qdel(src) - if(C.is_screwdriver()) - if(health < maxhealth) - to_chat(user, "You begin repairing \the [src.name] with \the [C.name].") - if(do_after(user, 20, src)) - health = maxhealth - else - take_damage(C.force) - user.setClickCooldown(user.get_attack_speed(C)) - return ..() + if(C.is_crowbar() && plated_tile) + hatch_open = !hatch_open + if(hatch_open) + playsound(src, 'sound/items/Crowbar.ogg', 100, 2) + to_chat(user, "You pry open \the [src]'s maintenance hatch.") + update_falling() + else + playsound(src, 'sound/items/Deconstruct.ogg', 100, 2) + to_chat(user, "You shut \the [src]'s maintenance hatch.") + update_icon() + return + if(istype(C, /obj/item/stack/tile/floor) && !plated_tile) + var/obj/item/stack/tile/floor/ST = C + to_chat(user, "Placing tile...") + if (!do_after(user, 10)) + return + if(!ST.use(1)) + return + to_chat(user, "You plate \the [src]") + name = "plated catwalk" + plated_tile = C.type + src.add_fingerprint(user) + for(var/tiletype in plating_colors) + if(istype(ST, tiletype)) + plating_color = plating_colors[tiletype] + update_icon() -/obj/structure/catwalk/Crossed() - . = ..() - if(isliving(usr) && !usr.is_incorporeal()) - playsound(src, pick('sound/effects/footstep/catwalk1.ogg', 'sound/effects/footstep/catwalk2.ogg', 'sound/effects/footstep/catwalk3.ogg', 'sound/effects/footstep/catwalk4.ogg', 'sound/effects/footstep/catwalk5.ogg'), 25, 1) - -/obj/structure/catwalk/CheckExit(atom/movable/O, turf/target) - if(O.checkpass(PASSGRILLE)) - return 1 - if(target && target.z < src.z) - return 0 - return 1 +/obj/structure/catwalk/refresh_neighbors() + return /obj/structure/catwalk/take_damage(amount) health -= amount @@ -104,4 +121,66 @@ visible_message("\The [src] breaks down!") playsound(loc, 'sound/effects/grillehit.ogg', 50, 1) new /obj/item/stack/rods(get_turf(src)) - Destroy() \ No newline at end of file + Destroy() + +/obj/structure/catwalk/Crossed() + . = ..() + if(isliving(usr) && !usr.is_incorporeal()) + playsound(src, pick('sound/effects/footstep/catwalk1.ogg', 'sound/effects/footstep/catwalk2.ogg', 'sound/effects/footstep/catwalk3.ogg', 'sound/effects/footstep/catwalk4.ogg', 'sound/effects/footstep/catwalk5.ogg'), 25, 1) + +/obj/effect/catwalk_plated + name = "plated catwalk spawner" + icon = 'icons/turf/catwalks.dmi' + icon_state = "catwalk_plated" + density = 1 + anchored = 1.0 + var/activated = FALSE + plane = DECAL_PLANE + layer = ABOVE_UTILITY + var/tile = /obj/item/stack/tile/floor + var/platecolor = "#858a8f" + +/obj/effect/catwalk_plated/Initialize(mapload) + . = ..() + activate() + +/obj/effect/catwalk_plated/CanPass() + return 0 + +/obj/effect/catwalk_plated/attack_hand() + attack_generic() + +/obj/effect/catwalk_plated/attack_ghost() + attack_generic() + +/obj/effect/catwalk_plated/attack_generic() + activate() + +/obj/effect/catwalk_plated/proc/activate() + if(activated) return + + if(locate(/obj/structure/catwalk) in loc) + warning("Frame Spawner: A catwalk already exists at [loc.x]-[loc.y]-[loc.z]") + else + var/obj/structure/catwalk/C = new /obj/structure/catwalk(loc) + C.plated_tile = tile + C.plating_color = platecolor + C.name = "plated catwalk" + C.update_icon() + activated = 1 + /* We don't have wallframes - yet + for(var/turf/T in orange(src, 1)) + for(var/obj/effect/wallframe_spawn/other in T) + if(!other.activated) other.activate() + */ + qdel(src) + +/obj/effect/catwalk_plated/dark + icon_state = "catwalk_plateddark" + tile = /obj/item/stack/tile/floor/dark + platecolor = "#4f4f4f" + +/obj/effect/catwalk_plated/white + icon_state = "catwalk_platedwhite" + tile = /obj/item/stack/tile/floor/white + platecolor = "#e8e8e8" diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index b75e3de6ed..55cb97c3cb 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -58,24 +58,25 @@ update_icon() /obj/structure/closet/examine(mob/user) - if(!src.opened && (..(user, 1) || isobserver(user))) + . = ..() + if(Adjacent(user) || isobserver(user)) var/content_size = 0 for(var/obj/item/I in src.contents) if(!I.anchored) content_size += CEILING(I.w_class/2, 1) if(!content_size) - to_chat(user, "It is empty.") + . += "It is empty." else if(storage_capacity > content_size*4) - to_chat(user, "It is barely filled.") + . += "It is barely filled." else if(storage_capacity > content_size*2) - to_chat(user, "It is less than half full.") + . += "It is less than half full." else if(storage_capacity > content_size) - to_chat(user, "There is still some free space.") + . += "There is still some free space." else - to_chat(user, "It is full.") + . += "It is full." if(!src.opened && isobserver(user)) - to_chat(user, "It contains: [counting_english_list(contents)]") + . += "It contains: [counting_english_list(contents)]" /obj/structure/closet/CanPass(atom/movable/mover, turf/target) if(wall_mounted) diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm index 9257c2d3a3..7ea80de7ff 100644 --- a/code/game/objects/structures/crates_lockers/closets/coffin.dm +++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm @@ -161,4 +161,7 @@ var/datum/gas_mixture/above_air = return_air() grave_breath.adjust_gas(gasid, BREATH_MOLES) grave_breath.temperature = (above_air.temperature) - 30 //Underground - return grave_breath \ No newline at end of file + return grave_breath + +/obj/structure/closet/grave/dirthole + name = "hole" diff --git a/maps/southern_cross/structures/closets/misc_vr.dm b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm similarity index 64% rename from maps/southern_cross/structures/closets/misc_vr.dm rename to code/game/objects/structures/crates_lockers/closets/misc_vr.dm index 11ebc922d4..851da13468 100644 --- a/maps/southern_cross/structures/closets/misc_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm @@ -1,4 +1,42 @@ +//Gun Cabinets + +/obj/structure/closet/secure_closet/guncabinet/sidearm + name = "emergency weapon cabinet" + req_one_access = list(access_armory,access_captain) + + starts_with = list( + /obj/item/weapon/gun/energy/gun = 4) + + +/obj/structure/closet/secure_closet/guncabinet/rifle + name = "rifle cabinet" + req_one_access = list(access_explorer,access_brig) + + starts_with = list( + /obj/item/ammo_magazine/clip/c762/hunter = 9, + /obj/item/weapon/gun/projectile/shotgun/pump/rifle = 2) + +/obj/structure/closet/secure_closet/guncabinet/rifle/Initialize() + if(prob(85)) + starts_with += /obj/item/weapon/gun/projectile/shotgun/pump/rifle + else + starts_with += /obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever + return ..() + +/obj/structure/closet/secure_closet/guncabinet/phase + name = "explorer weapon cabinet" + req_one_access = list(access_explorer,access_brig) + + starts_with = list( + /obj/item/weapon/gun/energy/phasegun = 2, + /obj/item/weapon/gun/energy/phasegun/pistol, + /obj/item/weapon/cell/device/weapon = 2, + /obj/item/clothing/accessory/permit/gun/planetside) + +//Explorer Lockers + /obj/structure/closet/secure_closet/explorer + name = "explorer locker" icon = 'icons/obj/closet_vr.dmi' icon_state = "secureexp1" icon_closed = "secureexp" @@ -6,6 +44,7 @@ icon_opened = "secureexpopen" icon_broken = "secureexpbroken" icon_off = "secureexpoff" + req_access = list(access_explorer) starts_with = list( /obj/item/clothing/under/explorer, @@ -14,6 +53,8 @@ /obj/item/clothing/shoes/boots/winter/explorer, /obj/item/clothing/gloves/black, /obj/item/device/radio/headset/explorer, + /obj/item/device/radio/headset/explorer/alt, + /obj/item/weapon/cartridge/explorer, /obj/item/device/flashlight, /obj/item/device/gps/explorer, /obj/item/weapon/storage/box/flare, @@ -28,8 +69,25 @@ /obj/item/weapon/reagent_containers/food/snacks/liquidprotein, /obj/item/device/cataloguer) +/obj/structure/closet/secure_closet/explorer/Initialize() + if(prob(50)) + starts_with += /obj/item/weapon/storage/backpack + else + starts_with += /obj/item/weapon/storage/backpack/satchel/norm + return ..() + +//SAR Lockers + /obj/structure/closet/secure_closet/sar name = "field medic locker" + desc = "Supplies for a wilderness first responder." + icon_state = "medical1" + icon_closed = "medical" + icon_locked = "medical1" + icon_opened = "medicalopen" + icon_broken = "medicalbroken" + icon_off = "medicaloff" + req_access = list(access_medical_equip) starts_with = list( /obj/item/weapon/storage/backpack/dufflebag/emt, @@ -45,7 +103,8 @@ /obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar, /obj/item/clothing/shoes/boots/winter/explorer, /obj/item/device/radio/headset/sar, - /obj/item/weapon/cartridge/medical, + /obj/item/device/radio/headset/sar/alt, + /obj/item/weapon/cartridge/sar, /obj/item/device/flashlight, /obj/item/weapon/tank/emergency/oxygen/engi, /obj/item/clothing/glasses/hud/health, @@ -64,7 +123,12 @@ /obj/item/bodybag/cryobag, /obj/item/device/cataloguer/compact) +//Pilot Locker + /obj/structure/closet/secure_closet/pilot + name = "pilot locker" + req_access = list(access_pilot) + starts_with = list( /obj/item/weapon/storage/backpack/parachute, /obj/item/weapon/material/knife/tacknife/survival, @@ -76,7 +140,9 @@ /obj/item/clothing/mask/gas/half, /obj/item/clothing/shoes/black, /obj/item/clothing/gloves/fingerless, + /obj/item/device/radio/headset/pilot, /obj/item/device/radio/headset/pilot/alt, + /obj/item/weapon/cartridge/explorer, /obj/item/device/flashlight, /obj/item/weapon/reagent_containers/food/snacks/liquidfood, /obj/item/weapon/reagent_containers/food/snacks/liquidprotein, @@ -87,6 +153,13 @@ /obj/item/device/gps/explorer, /obj/item/device/cataloguer/compact) +/obj/structure/closet/secure_closet/pilot/Initialize() + if(prob(50)) + starts_with += /obj/item/weapon/storage/backpack + else + starts_with += /obj/item/weapon/storage/backpack/satchel/norm + return ..() + /obj/structure/closet/secure_closet/pathfinder name = "pathfinder locker" icon = 'icons/obj/closet_vr.dmi' @@ -104,7 +177,9 @@ /obj/item/clothing/mask/gas/explorer, /obj/item/clothing/shoes/boots/winter/explorer, /obj/item/clothing/gloves/black, - /obj/item/device/radio/headset/explorer, + /obj/item/device/radio/headset/pathfinder, + /obj/item/device/radio/headset/pathfinder/alt, + /obj/item/weapon/cartridge/explorer, /obj/item/device/flashlight, /obj/item/device/gps/explorer, /obj/item/weapon/storage/box/flare, @@ -128,3 +203,17 @@ else starts_with += /obj/item/weapon/storage/backpack/satchel/norm return ..() + +//Exotic Seeds Crate + +/obj/structure/closet/crate/hydroponics/exotic + name = "exotic seeds crate" + desc = "All you need to destroy that pesky planet." + + starts_with = list( + /obj/item/seeds/random = 6, + /obj/item/seeds/replicapod = 2, + /obj/item/seeds/ambrosiavulgarisseed = 2, + /obj/item/seeds/kudzuseed, + /obj/item/seeds/libertymycelium, + /obj/item/seeds/reishimycelium) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index c292a548be..d7b6ed4e80 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -47,8 +47,8 @@ /obj/item/clothing/under/rank/cargo/jeans, /obj/item/clothing/under/rank/cargo/jeans/female, /obj/item/clothing/shoes/brown, - /obj/item/device/radio/headset/headset_cargo, - /obj/item/device/radio/headset/headset_cargo/alt, + /obj/item/device/radio/headset/headset_qm, //VOREStation Edit, + /obj/item/device/radio/headset/headset_qm/alt, //VOREStation Edit, /obj/item/clothing/gloves/black, /obj/item/clothing/gloves/fingerless, /obj/item/clothing/suit/fire/firefighter, diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index b15f45d6fb..903a058f9c 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -21,32 +21,35 @@ /obj/structure/closet/emcloset/Initialize() switch (pickweight(list("small" = 55, "aid" = 25, "tank" = 10, "both" = 10))) + //VOREStation Block Edit Start - Modified List if ("small") starts_with = list( /obj/item/weapon/tank/emergency/oxygen = 2, /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/suit/space/emergency, - /obj/item/clothing/head/helmet/space/emergency) + /obj/item/clothing/suit/space/emergency = 2, + /obj/item/clothing/head/helmet/space/emergency = 2) if ("aid") starts_with = list( /obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/toolbox/emergency, /obj/item/clothing/mask/breath, - /obj/item/weapon/storage/firstaid/o2, /obj/item/clothing/suit/space/emergency, /obj/item/clothing/head/helmet/space/emergency) if ("tank") starts_with = list( /obj/item/weapon/tank/emergency/oxygen/engi = 2, - /obj/item/clothing/mask/breath = 2) + /obj/item/clothing/mask/breath = 2, + /obj/item/clothing/suit/space/emergency = 2, + /obj/item/clothing/head/helmet/space/emergency = 2) if ("both") starts_with = list( /obj/item/weapon/storage/toolbox/emergency, - /obj/item/weapon/tank/emergency/oxygen/engi, - /obj/item/clothing/mask/breath, /obj/item/weapon/storage/firstaid/o2, + /obj/item/weapon/tank/emergency/oxygen/engi = 2, + /obj/item/clothing/mask/breath = 2, /obj/item/clothing/suit/space/emergency = 2, /obj/item/clothing/head/helmet/space/emergency = 2) + //VOREStation Block Edit End return ..() diff --git a/code/game/objects/structures/crates_lockers/vehiclecage.dm b/code/game/objects/structures/crates_lockers/vehiclecage.dm index bd525832c1..b565124e78 100644 --- a/code/game/objects/structures/crates_lockers/vehiclecage.dm +++ b/code/game/objects/structures/crates_lockers/vehiclecage.dm @@ -9,9 +9,9 @@ var/paint_color = "#666666" /obj/structure/vehiclecage/examine(mob/user) - ..() + . = ..() if(my_vehicle) - to_chat(user, "It seems to contain \the [my_vehicle].") + . += "It seems to contain \the [my_vehicle]." /obj/structure/vehiclecage/Initialize() . = ..() diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index f8ea5d2f77..e0a94e285b 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -145,7 +145,7 @@ bound_height = width * world.icon_size update_state() - Move() + Moved(atom/old_loc, direction, forced = FALSE) . = ..() if(dir in list(EAST, WEST)) bound_width = width * world.icon_size diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index ae5cba7cf0..b3f174e25a 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -56,7 +56,7 @@ return if(!A.powered(EQUIP)) return - A.use_power(EQUIP, 5000) + A.use_power_oneoff(5000, EQUIP) var/light = A.power_light A.updateicon() diff --git a/code/game/objects/structures/fence.dm b/code/game/objects/structures/fence.dm index bb99d37d3a..839269847a 100644 --- a/code/game/objects/structures/fence.dm +++ b/code/game/objects/structures/fence.dm @@ -32,9 +32,9 @@ switch(hole_size) if(MEDIUM_HOLE) - user.show_message("There is a large hole in \the [src].") + . += "There is a large hole in it." if(LARGE_HOLE) - user.show_message("\The [src] has been completely cut through.") + . += "It has been completely cut through." /obj/structure/fence/get_description_interaction() var/list/results = list() diff --git a/code/game/objects/structures/fitness.dm b/code/game/objects/structures/fitness.dm index 158bf5533b..f0b121a1aa 100644 --- a/code/game/objects/structures/fitness.dm +++ b/code/game/objects/structures/fitness.dm @@ -57,7 +57,7 @@ flick("[icon_state]_[weight]", src) if(do_after(user, 20 + (weight * 10))) playsound(src.loc, 'sound/effects/weightdrop.ogg', 25, 1) - user.nutrition -= weight * 10 + user.adjust_nutrition(weight * -10) to_chat(user, "You lift the weights [qualifiers[weight]].") being_used = 0 else diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora/flora.dm similarity index 92% rename from code/game/objects/structures/flora.dm rename to code/game/objects/structures/flora/flora.dm index a5a8704dc1..a0f2c8c307 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora/flora.dm @@ -1,478 +1,493 @@ - -/obj/structure/flora - name = "flora" - desc = "A perfectly generic plant." - - anchored = TRUE // Usually, plants don't move. Usually. - plane = DECAL_PLANE - layer = BELOW_MOB_LAYER - - var/randomize_size = FALSE - var/max_x_scale = 1.25 - var/max_y_scale = 1.25 - var/min_x_scale = 0.9 - var/min_y_scale = 0.9 - - var/harvest_tool = null // The type of item used to harvest the plant. - var/harvest_count = 0 - - var/randomize_harvest_count = TRUE - var/max_harvests = 0 - var/min_harvests = -1 - var/list/harvest_loot = null // Should be an associative list for things to spawn, and their weights. An example would be a branch from a tree. - -/obj/structure/flora/Initialize() - ..() - - if(randomize_size) - icon_scale_x = rand(min_x_scale * 100, max_x_scale * 100) / 100 - icon_scale_y = rand(min_y_scale * 100, max_y_scale * 100) / 100 - - if(prob(50)) - icon_scale_x *= -1 - update_transform() - - if(randomize_harvest_count) - max_harvests = max(0, rand(min_harvests, max_harvests)) // Incase you want to weight it more toward 'not harvestable', set min_harvests to a negative value. - -/obj/structure/flora/examine(mob/user) - . = ..(user) - if(harvest_count < max_harvests) - to_chat(user, "\The [src] seems to have something hanging from it.") - -/obj/structure/flora/attackby(var/obj/item/weapon/W, var/mob/living/user) - if(can_harvest(W)) - var/harvest_spawn = pickweight(harvest_loot) - var/atom/movable/AM = spawn_harvest(harvest_spawn, user) - - if(!AM) - to_chat(user, "You fail to harvest anything from \the [src].") - - else - to_chat(user, "You harvest \the [AM] from \the [src].") - return - - ..(W, user) - -/obj/structure/flora/proc/can_harvest(var/obj/item/I) - . = FALSE - if(harvest_tool && istype(I, harvest_tool) && harvest_loot && harvest_loot.len && harvest_count < max_harvests) - . = TRUE - return . - -/obj/structure/flora/proc/spawn_harvest(var/path = null, var/mob/user = null) - if(!ispath(path)) - return 0 - var/turf/Target = get_turf(src) - if(user) - Target = get_turf(user) - - var/atom/movable/AM = new path(Target) - - harvest_count++ - return AM - -//bushes -/obj/structure/flora/bush - name = "bush" - icon = 'icons/obj/flora/snowflora.dmi' - icon_state = "snowbush1" - -/obj/structure/flora/bush/New() - ..() - icon_state = "snowbush[rand(1, 6)]" - -/obj/structure/flora/pottedplant - name = "potted plant" - desc = "Really ties the room together." - icon = 'icons/obj/plants.dmi' - icon_state = "plant-26" - - anchored = FALSE - -//newbushes - -/obj/structure/flora/ausbushes - name = "bush" - icon = 'icons/obj/flora/ausflora.dmi' - icon_state = "firstbush_1" - -/obj/structure/flora/ausbushes/New() - ..() - icon_state = "firstbush_[rand(1, 4)]" - -/obj/structure/flora/ausbushes/reedbush - icon_state = "reedbush_1" - -/obj/structure/flora/ausbushes/reedbush/New() - ..() - icon_state = "reedbush_[rand(1, 4)]" - -/obj/structure/flora/ausbushes/leafybush - icon_state = "leafybush_1" - -/obj/structure/flora/ausbushes/leafybush/New() - ..() - icon_state = "leafybush_[rand(1, 3)]" - -/obj/structure/flora/ausbushes/palebush - icon_state = "palebush_1" - -/obj/structure/flora/ausbushes/palebush/New() - ..() - icon_state = "palebush_[rand(1, 4)]" - -/obj/structure/flora/ausbushes/stalkybush - icon_state = "stalkybush_1" - -/obj/structure/flora/ausbushes/stalkybush/New() - ..() - icon_state = "stalkybush_[rand(1, 3)]" - -/obj/structure/flora/ausbushes/grassybush - icon_state = "grassybush_1" - -/obj/structure/flora/ausbushes/grassybush/New() - ..() - icon_state = "grassybush_[rand(1, 4)]" - -/obj/structure/flora/ausbushes/fernybush - icon_state = "fernybush_1" - -/obj/structure/flora/ausbushes/fernybush/New() - ..() - icon_state = "fernybush_[rand(1, 3)]" - -/obj/structure/flora/ausbushes/sunnybush - icon_state = "sunnybush_1" - -/obj/structure/flora/ausbushes/sunnybush/New() - ..() - icon_state = "sunnybush_[rand(1, 3)]" - -/obj/structure/flora/ausbushes/genericbush - icon_state = "genericbush_1" - -/obj/structure/flora/ausbushes/genericbush/New() - ..() - icon_state = "genericbush_[rand(1, 4)]" - -/obj/structure/flora/ausbushes/pointybush - icon_state = "pointybush_1" - -/obj/structure/flora/ausbushes/pointybush/New() - ..() - icon_state = "pointybush_[rand(1, 4)]" - -/obj/structure/flora/ausbushes/lavendergrass - icon_state = "lavendergrass_1" - -/obj/structure/flora/ausbushes/lavendergrass/New() - ..() - icon_state = "lavendergrass_[rand(1, 4)]" - -/obj/structure/flora/ausbushes/ywflowers - icon_state = "ywflowers_1" - -/obj/structure/flora/ausbushes/ywflowers/New() - ..() - icon_state = "ywflowers_[rand(1, 3)]" - -/obj/structure/flora/ausbushes/brflowers - icon_state = "brflowers_1" - -/obj/structure/flora/ausbushes/brflowers/New() - ..() - icon_state = "brflowers_[rand(1, 3)]" - -/obj/structure/flora/ausbushes/ppflowers - icon_state = "ppflowers_1" - -/obj/structure/flora/ausbushes/ppflowers/New() - ..() - icon_state = "ppflowers_[rand(1, 3)]" - -/obj/structure/flora/ausbushes/sparsegrass - icon_state = "sparsegrass_1" - -/obj/structure/flora/ausbushes/sparsegrass/New() - ..() - icon_state = "sparsegrass_[rand(1, 3)]" - -/obj/structure/flora/ausbushes/fullgrass - icon_state = "fullgrass_1" - -/obj/structure/flora/ausbushes/fullgrass/New() - ..() - icon_state = "fullgrass_[rand(1, 3)]" - -/obj/structure/flora/skeleton - name = "hanging skeleton model" - icon = 'icons/obj/plants.dmi' //what an interesting plant - icon_state = "hangskele" - desc = "It's an anatomical model of a human skeletal system made of plaster." - - plane = OBJ_PLANE - -//potted plants credit: Flashkirby -/obj/structure/flora/pottedplant - name = "potted plant" - desc = "Really brings the room together." - icon = 'icons/obj/plants.dmi' - icon_state = "plant-01" - - plane = OBJ_PLANE - var/obj/item/stored_item - -/obj/structure/flora/pottedplant/examine(mob/user) - ..() - if(in_range(user, src) && stored_item) - to_chat(user, "You can see something in there...") - -/obj/structure/flora/pottedplant/attackby(obj/item/I, mob/user) - if(stored_item) - to_chat(user, "[I] won't fit in. There already appears to be something in here...") - return - - if(I.w_class > ITEMSIZE_TINY) - to_chat(user, "[I] is too big to fit inside [src].") - return - - if(do_after(user, 10)) - user.drop_from_inventory(I, src) - I.forceMove(src) - stored_item = I - src.visible_message("\icon[src] \icon[I] [user] places [I] into [src].") - return - else - to_chat(user, "You refrain from putting things into the plant pot.") - return - - ..() - -/obj/structure/flora/pottedplant/attack_hand(mob/user) - if(!stored_item) - to_chat(user, "You see nothing of interest in [src]...") - else - if(do_after(user, 10)) - to_chat(user, "You find \icon[stored_item] [stored_item] in [src]!") - stored_item.forceMove(get_turf(src)) - stored_item = null - ..() - - -/obj/structure/flora/pottedplant/large - name = "large potted plant" - desc = "This is a large plant. Three branches support pairs of waxy leaves." - icon_state = "plant-26" - -/obj/structure/flora/pottedplant/fern - name = "potted fern" - desc = "This is an ordinary looking fern. It looks like it could do with some water." - icon_state = "plant-02" - -/obj/structure/flora/pottedplant/overgrown - name = "overgrown potted plants" - desc = "This is an assortment of colourful plants. Some parts are overgrown." - icon_state = "plant-03" - -/obj/structure/flora/pottedplant/bamboo - name = "potted bamboo" - desc = "These are bamboo shoots. The tops looks like they've been cut short." - icon_state = "plant-04" - -/obj/structure/flora/pottedplant/largebush - name = "large potted bush" - desc = "This is a large bush. The leaves stick upwards in an odd fashion." - icon_state = "plant-05" - -/obj/structure/flora/pottedplant/thinbush - name = "thin potted bush" - desc = "This is a thin bush. It appears to be flowering." - icon_state = "plant-06" - -/obj/structure/flora/pottedplant/mysterious - name = "mysterious potted bulbs" - desc = "This is a mysterious looking plant. Touching the bulbs cause them to shrink." - icon_state = "plant-07" - catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs) - -/obj/structure/flora/pottedplant/smalltree - name = "small potted tree" - desc = "This is a small tree. It is rather pleasant." - icon_state = "plant-08" - -/obj/structure/flora/pottedplant/unusual - name = "unusual potted plant" - desc = "This is an unusual plant. It's bulbous ends emit a soft blue light." - icon_state = "plant-09" - light_range = 2 - light_power = 0.6 - light_color = "#33CCFF" - catalogue_data = list(/datum/category_item/catalogue/flora/sif_tree) - -/obj/structure/flora/pottedplant/orientaltree - name = "potted oriental tree" - desc = "This is a rather oriental style tree. Its flowers are bright pink." - icon_state = "plant-10" - -/obj/structure/flora/pottedplant/smallcactus - name = "small potted cactus" - desc = "This is a small cactus. Its needles are sharp." - icon_state = "plant-11" - -/obj/structure/flora/pottedplant/tall - name = "tall potted plant" - desc = "This is a tall plant. Tiny pores line its surface." - icon_state = "plant-12" - -/obj/structure/flora/pottedplant/sticky - name = "sticky potted plant" - desc = "This is an odd plant. Its sticky leaves trap insects." - icon_state = "plant-13" - -/obj/structure/flora/pottedplant/smelly - name = "smelly potted plant" - desc = "This is some kind of tropical plant. It reeks of rotten eggs." - icon_state = "plant-14" - -/obj/structure/flora/pottedplant/small - name = "small potted plant" - desc = "This is a pot of assorted small flora. Some look familiar." - icon_state = "plant-15" - -/obj/structure/flora/pottedplant/aquatic - name = "aquatic potted plant" - desc = "This is apparently an aquatic plant. It's probably fake." - icon_state = "plant-16" - -/obj/structure/flora/pottedplant/shoot - name = "small potted shoot" - desc = "This is a small shoot. It still needs time to grow." - icon_state = "plant-17" - -/obj/structure/flora/pottedplant/flower - name = "potted flower" - desc = "This is a slim plant. Sweet smelling flowers are supported by spindly stems." - icon_state = "plant-18" - -/obj/structure/flora/pottedplant/crystal - name = "crystalline potted plant" - desc = "These are rather cubic plants. Odd crystal formations grow on the end." - icon_state = "plant-19" - -/obj/structure/flora/pottedplant/subterranean - name = "subterranean potted plant" - desc = "This is a subterranean plant. It's bulbous ends glow faintly." - icon_state = "plant-20" - light_range = 2 - light_power = 0.6 - light_color = "#FF6633" - -/obj/structure/flora/pottedplant/minitree - name = "potted tree" - desc = "This is a miniature tree. Apparently it was grown to 1/5 scale." - icon_state = "plant-21" - -/obj/structure/flora/pottedplant/stoutbush - name = "stout potted bush" - desc = "This is a stout bush. Its leaves point up and outwards." - icon_state = "plant-22" - -/obj/structure/flora/pottedplant/drooping - name = "drooping potted plant" - desc = "This is a small plant. The drooping leaves make it look like its wilted." - icon_state = "plant-23" - -/obj/structure/flora/pottedplant/tropical - name = "tropical potted plant" - desc = "This is some kind of tropical plant. It hasn't begun to flower yet." - icon_state = "plant-24" - -/obj/structure/flora/pottedplant/dead - name = "dead potted plant" - desc = "This is the dried up remains of a dead plant. Someone should replace it." - icon_state = "plant-25" - -/obj/structure/flora/pottedplant/decorative - name = "decorative potted plant" - desc = "This is a decorative shrub. It's been trimmed into the shape of an apple." - icon_state = "applebush" - -/obj/structure/flora/pottedplant/xmas - name = "small christmas tree" - desc = "This is a tiny well lit decorative christmas tree." - icon_state = "plant-xmas" - -/obj/structure/flora/sif - icon = 'icons/obj/flora/sifflora.dmi' - -/obj/structure/flora/sif/attack_hand(mob/user) - if (user.a_intent == I_HURT) - if(do_after(user, 5 SECONDS)) - user.visible_message("\The [user] digs up \the [src.name].", "You dig up \the [src.name].") - qdel(src) - else - user.visible_message("\The [user] pokes \the [src.name].", "You poke \the [src.name].") - -/datum/category_item/catalogue/flora/subterranean_bulbs - name = "Sivian Flora - Subterranean Bulbs" - desc = "A plant which is native to Sif, it continues the trend of being a bioluminescent specimen. These plants \ - are generally suited for conditions experienced in caverns, which are generally dark and cold. It is not \ - known why this plant evolved to be bioluminescent, however this property has, unintentionally, allowed for \ - it to spread much farther than before, with the assistance of humans.\ -

\ - In Sif's early history, Sivian settlers found this plant while they were establishing mines. Their ability \ - to emit low, but consistant amounts of light made them desirable to the settlers. They would often cultivate \ - this plant inside man-made tunnels and mines to act as a backup source of light that would not need \ - electricity. This technique has saved many lost miners, and this practice continues to this day." - value = CATALOGUER_REWARD_EASY - -/obj/structure/flora/sif/subterranean - name = "subterranean plant" - desc = "This is a subterranean plant. It's bulbous ends glow faintly." - icon_state = "glowplant" - light_range = 2 - light_power = 0.6 - light_color = "#FF6633" - catalogue_data = list(/datum/category_item/catalogue/flora/subterranean_bulbs) - -/obj/structure/flora/sif/subterranean/Initialize() - icon_state = "[initial(icon_state)][rand(1,2)]" - . = ..() - - -/datum/category_item/catalogue/flora/eyebulbs - name = "Sivian Flora - Eyebulbs" - desc = "A plant native to Sif. On the end of its stems are bulbs which visually resemble \ - eyes, which shrink when touched. One theory is that the bulbs are a result of mimicry, appearing as eyeballs to protect from predators.

\ - These plants have no known use." - value = CATALOGUER_REWARD_EASY - -/obj/structure/flora/sif/eyes - name = "mysterious bulbs" - desc = "This is a mysterious looking plant. They kind of look like eyeballs. Creepy." - icon_state = "eyeplant" - catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs) - -/obj/structure/flora/sif/eyes/Initialize() - icon_state = "[initial(icon_state)][rand(1,3)]" - . = ..() - -/datum/category_item/catalogue/flora/mosstendrils - name = "Sivian Flora - Moss Stalks" - desc = "A plant native to Sif. The plant is most closely related to the common, dense moss found covering Sif's terrain. \ - It has evolved a method of camouflage utilizing white hairs on its dorsal sides to make it appear as a small mound of snow from \ - above. It has no known use, though it is a common furnishing in contemporary homes." - value = CATALOGUER_REWARD_TRIVIAL - -/obj/structure/flora/sif/tendrils - name = "stocky tendrils" - desc = "A 'plant' made up of hardened moss. It has tiny hairs that bunch together to look like snow." - icon_state = "grass" - randomize_size = TRUE - catalogue_data = list(/datum/category_item/catalogue/flora/mosstendrils) - -/obj/structure/flora/sif/tendrils/Initialize() - icon_state = "[initial(icon_state)][rand(1,3)]" - . = ..() + +/obj/structure/flora + name = "flora" + desc = "A perfectly generic plant." + + anchored = TRUE // Usually, plants don't move. Usually. + plane = DECAL_PLANE + layer = BELOW_MOB_LAYER + + var/randomize_size = FALSE + var/max_x_scale = 1.25 + var/max_y_scale = 1.25 + var/min_x_scale = 0.9 + var/min_y_scale = 0.9 + + var/harvest_tool = null // The type of item used to harvest the plant. + var/harvest_count = 0 + + var/randomize_harvest_count = TRUE + var/max_harvests = 0 + var/min_harvests = -1 + var/list/harvest_loot = null // Should be an associative list for things to spawn, and their weights. An example would be a branch from a tree. + +/obj/structure/flora/Initialize() + ..() + + if(randomize_size) + icon_scale_x = rand(min_x_scale * 100, max_x_scale * 100) / 100 + icon_scale_y = rand(min_y_scale * 100, max_y_scale * 100) / 100 + + if(prob(50)) + icon_scale_x *= -1 + update_transform() + + if(randomize_harvest_count) + max_harvests = max(0, rand(min_harvests, max_harvests)) // Incase you want to weight it more toward 'not harvestable', set min_harvests to a negative value. + +/obj/structure/flora/examine(mob/user) + . = ..() + if(harvest_count < max_harvests) + . += get_harvestable_desc() + +/obj/structure/flora/proc/get_harvestable_desc() + return "\The [src] seems to have something hanging from it." + +/obj/structure/flora/attackby(var/obj/item/weapon/W, var/mob/living/user) + if(can_harvest(W)) + var/harvest_spawn = pickweight(harvest_loot) + var/atom/movable/AM = spawn_harvest(harvest_spawn, user) + + if(!AM) + to_chat(user, "You fail to harvest anything from \the [src].") + + else + to_chat(user, "You harvest \the [AM] from \the [src].") + return + + ..(W, user) + +/obj/structure/flora/proc/can_harvest(var/obj/item/I) + . = FALSE + if(harvest_tool && istype(I, harvest_tool) && harvest_loot && harvest_loot.len && harvest_count < max_harvests) + . = TRUE + return . + +/obj/structure/flora/proc/spawn_harvest(var/path = null, var/mob/user = null) + if(!ispath(path)) + return 0 + var/turf/Target = get_turf(src) + if(user) + Target = get_turf(user) + + var/atom/movable/AM = new path(Target) + + harvest_count++ + return AM + +//bushes +/obj/structure/flora/bush + name = "bush" + icon = 'icons/obj/flora/snowflora.dmi' + icon_state = "snowbush1" + +/obj/structure/flora/bush/New() + ..() + icon_state = "snowbush[rand(1, 6)]" + +/obj/structure/flora/pottedplant + name = "potted plant" + desc = "Really ties the room together." + icon = 'icons/obj/plants.dmi' + icon_state = "plant-26" + + anchored = FALSE + +//newbushes + +/obj/structure/flora/ausbushes + name = "bush" + icon = 'icons/obj/flora/ausflora.dmi' + icon_state = "firstbush_1" + +/obj/structure/flora/ausbushes/New() + ..() + icon_state = "firstbush_[rand(1, 4)]" + +/obj/structure/flora/ausbushes/reedbush + icon_state = "reedbush_1" + +/obj/structure/flora/ausbushes/reedbush/New() + ..() + icon_state = "reedbush_[rand(1, 4)]" + +/obj/structure/flora/ausbushes/leafybush + icon_state = "leafybush_1" + +/obj/structure/flora/ausbushes/leafybush/New() + ..() + icon_state = "leafybush_[rand(1, 3)]" + +/obj/structure/flora/ausbushes/palebush + icon_state = "palebush_1" + +/obj/structure/flora/ausbushes/palebush/New() + ..() + icon_state = "palebush_[rand(1, 4)]" + +/obj/structure/flora/ausbushes/stalkybush + icon_state = "stalkybush_1" + +/obj/structure/flora/ausbushes/stalkybush/New() + ..() + icon_state = "stalkybush_[rand(1, 3)]" + +/obj/structure/flora/ausbushes/grassybush + icon_state = "grassybush_1" + +/obj/structure/flora/ausbushes/grassybush/New() + ..() + icon_state = "grassybush_[rand(1, 4)]" + +/obj/structure/flora/ausbushes/fernybush + icon_state = "fernybush_1" + +/obj/structure/flora/ausbushes/fernybush/New() + ..() + icon_state = "fernybush_[rand(1, 3)]" + +/obj/structure/flora/ausbushes/sunnybush + icon_state = "sunnybush_1" + +/obj/structure/flora/ausbushes/sunnybush/New() + ..() + icon_state = "sunnybush_[rand(1, 3)]" + +/obj/structure/flora/ausbushes/genericbush + icon_state = "genericbush_1" + +/obj/structure/flora/ausbushes/genericbush/New() + ..() + icon_state = "genericbush_[rand(1, 4)]" + +/obj/structure/flora/ausbushes/pointybush + icon_state = "pointybush_1" + +/obj/structure/flora/ausbushes/pointybush/New() + ..() + icon_state = "pointybush_[rand(1, 4)]" + +/obj/structure/flora/ausbushes/lavendergrass + icon_state = "lavendergrass_1" + +/obj/structure/flora/ausbushes/lavendergrass/New() + ..() + icon_state = "lavendergrass_[rand(1, 4)]" + +/obj/structure/flora/ausbushes/ywflowers + icon_state = "ywflowers_1" + +/obj/structure/flora/ausbushes/ywflowers/New() + ..() + icon_state = "ywflowers_[rand(1, 3)]" + +/obj/structure/flora/ausbushes/brflowers + icon_state = "brflowers_1" + +/obj/structure/flora/ausbushes/brflowers/New() + ..() + icon_state = "brflowers_[rand(1, 3)]" + +/obj/structure/flora/ausbushes/ppflowers + icon_state = "ppflowers_1" + +/obj/structure/flora/ausbushes/ppflowers/New() + ..() + icon_state = "ppflowers_[rand(1, 3)]" + +/obj/structure/flora/ausbushes/sparsegrass + icon_state = "sparsegrass_1" + +/obj/structure/flora/ausbushes/sparsegrass/New() + ..() + icon_state = "sparsegrass_[rand(1, 3)]" + +/obj/structure/flora/ausbushes/fullgrass + icon_state = "fullgrass_1" + +/obj/structure/flora/ausbushes/fullgrass/New() + ..() + icon_state = "fullgrass_[rand(1, 3)]" + +/obj/structure/flora/skeleton + name = "hanging skeleton model" + icon = 'icons/obj/plants.dmi' //what an interesting plant + icon_state = "hangskele" + desc = "It's an anatomical model of a human skeletal system made of plaster." + + plane = OBJ_PLANE + +//potted plants credit: Flashkirby +/obj/structure/flora/pottedplant + name = "potted plant" + desc = "Really brings the room together." + icon = 'icons/obj/plants.dmi' + icon_state = "plant-01" + + plane = OBJ_PLANE + var/obj/item/stored_item + +/obj/structure/flora/pottedplant/examine(mob/user) + . = ..() + if(in_range(user, src) && stored_item) + . += "You can see something in there..." + +/obj/structure/flora/pottedplant/attackby(obj/item/I, mob/user) + if(stored_item) + to_chat(user, "[I] won't fit in. There already appears to be something in here...") + return + + if(I.w_class > ITEMSIZE_TINY) + to_chat(user, "[I] is too big to fit inside [src].") + return + + if(do_after(user, 10)) + user.drop_from_inventory(I, src) + I.forceMove(src) + stored_item = I + src.visible_message("[bicon(src)] [bicon(I)] [user] places [I] into [src].") + return + else + to_chat(user, "You refrain from putting things into the plant pot.") + return + + ..() + +/obj/structure/flora/pottedplant/attack_hand(mob/user) + if(!stored_item) + to_chat(user, "You see nothing of interest in [src]...") + else + if(do_after(user, 10)) + to_chat(user, "You find [bicon(stored_item)] [stored_item] in [src]!") + stored_item.forceMove(get_turf(src)) + stored_item = null + ..() + + +/obj/structure/flora/pottedplant/large + name = "large potted plant" + desc = "This is a large plant. Three branches support pairs of waxy leaves." + icon_state = "plant-26" + +/obj/structure/flora/pottedplant/fern + name = "potted fern" + desc = "This is an ordinary looking fern. It looks like it could do with some water." + icon_state = "plant-02" + +/obj/structure/flora/pottedplant/overgrown + name = "overgrown potted plants" + desc = "This is an assortment of colourful plants. Some parts are overgrown." + icon_state = "plant-03" + +/obj/structure/flora/pottedplant/bamboo + name = "potted bamboo" + desc = "These are bamboo shoots. The tops looks like they've been cut short." + icon_state = "plant-04" + +/obj/structure/flora/pottedplant/largebush + name = "large potted bush" + desc = "This is a large bush. The leaves stick upwards in an odd fashion." + icon_state = "plant-05" + +/obj/structure/flora/pottedplant/thinbush + name = "thin potted bush" + desc = "This is a thin bush. It appears to be flowering." + icon_state = "plant-06" + +/obj/structure/flora/pottedplant/mysterious + name = "mysterious potted bulbs" + desc = "This is a mysterious looking plant. Touching the bulbs cause them to shrink." + icon_state = "plant-07" + catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs) + +/obj/structure/flora/pottedplant/smalltree + name = "small potted tree" + desc = "This is a small tree. It is rather pleasant." + icon_state = "plant-08" + +/obj/structure/flora/pottedplant/unusual + name = "unusual potted plant" + desc = "This is an unusual plant. It's bulbous ends emit a soft blue light." + icon_state = "plant-09" + light_range = 2 + light_power = 0.6 + light_color = "#33CCFF" + catalogue_data = list(/datum/category_item/catalogue/flora/sif_tree) + +/obj/structure/flora/pottedplant/orientaltree + name = "potted oriental tree" + desc = "This is a rather oriental style tree. Its flowers are bright pink." + icon_state = "plant-10" + +/obj/structure/flora/pottedplant/smallcactus + name = "small potted cactus" + desc = "This is a small cactus. Its needles are sharp." + icon_state = "plant-11" + +/obj/structure/flora/pottedplant/tall + name = "tall potted plant" + desc = "This is a tall plant. Tiny pores line its surface." + icon_state = "plant-12" + +/obj/structure/flora/pottedplant/sticky + name = "sticky potted plant" + desc = "This is an odd plant. Its sticky leaves trap insects." + icon_state = "plant-13" + +/obj/structure/flora/pottedplant/smelly + name = "smelly potted plant" + desc = "This is some kind of tropical plant. It reeks of rotten eggs." + icon_state = "plant-14" + +/obj/structure/flora/pottedplant/small + name = "small potted plant" + desc = "This is a pot of assorted small flora. Some look familiar." + icon_state = "plant-15" + +/obj/structure/flora/pottedplant/aquatic + name = "aquatic potted plant" + desc = "This is apparently an aquatic plant. It's probably fake." + icon_state = "plant-16" + +/obj/structure/flora/pottedplant/shoot + name = "small potted shoot" + desc = "This is a small shoot. It still needs time to grow." + icon_state = "plant-17" + +/obj/structure/flora/pottedplant/flower + name = "potted flower" + desc = "This is a slim plant. Sweet smelling flowers are supported by spindly stems." + icon_state = "plant-18" + +/obj/structure/flora/pottedplant/crystal + name = "crystalline potted plant" + desc = "These are rather cubic plants. Odd crystal formations grow on the end." + icon_state = "plant-19" + +/obj/structure/flora/pottedplant/subterranean + name = "subterranean potted plant" + desc = "This is a subterranean plant. It's bulbous ends glow faintly." + icon_state = "plant-20" + light_range = 2 + light_power = 0.6 + light_color = "#FF6633" + +/obj/structure/flora/pottedplant/minitree + name = "potted tree" + desc = "This is a miniature tree. Apparently it was grown to 1/5 scale." + icon_state = "plant-21" + +/obj/structure/flora/pottedplant/stoutbush + name = "stout potted bush" + desc = "This is a stout bush. Its leaves point up and outwards." + icon_state = "plant-22" + +/obj/structure/flora/pottedplant/drooping + name = "drooping potted plant" + desc = "This is a small plant. The drooping leaves make it look like its wilted." + icon_state = "plant-23" + +/obj/structure/flora/pottedplant/tropical + name = "tropical potted plant" + desc = "This is some kind of tropical plant. It hasn't begun to flower yet." + icon_state = "plant-24" + +/obj/structure/flora/pottedplant/dead + name = "dead potted plant" + desc = "This is the dried up remains of a dead plant. Someone should replace it." + icon_state = "plant-25" + +/obj/structure/flora/pottedplant/decorative + name = "decorative potted plant" + desc = "This is a decorative shrub. It's been trimmed into the shape of an apple." + icon_state = "applebush" + +/obj/structure/flora/pottedplant/xmas + name = "small christmas tree" + desc = "This is a tiny well lit decorative christmas tree." + icon_state = "plant-xmas" + +/obj/structure/flora/sif + icon = 'icons/obj/flora/sifflora.dmi' + +/obj/structure/flora/sif/attack_hand(mob/user) + if (user.a_intent == I_HURT) + if(do_after(user, 5 SECONDS)) + user.visible_message("\The [user] digs up \the [src.name].", "You dig up \the [src.name].") + qdel(src) + else + user.visible_message("\The [user] pokes \the [src.name].", "You poke \the [src.name].") + +/datum/category_item/catalogue/flora/subterranean_bulbs + name = "Sivian Flora - Subterranean Bulbs" + desc = "A plant which is native to Sif, it continues the trend of being a bioluminescent specimen. These plants \ + are generally suited for conditions experienced in caverns, which are generally dark and cold. It is not \ + known why this plant evolved to be bioluminescent, however this property has, unintentionally, allowed for \ + it to spread much farther than before, with the assistance of humans.\ +

\ + In Sif's early history, Sivian settlers found this plant while they were establishing mines. Their ability \ + to emit low, but consistant amounts of light made them desirable to the settlers. They would often cultivate \ + this plant inside man-made tunnels and mines to act as a backup source of light that would not need \ + electricity. This technique has saved many lost miners, and this practice continues to this day." + value = CATALOGUER_REWARD_EASY + +/obj/structure/flora/sif/subterranean + name = "subterranean plant" + desc = "This is a subterranean plant. It's bulbous ends glow faintly." + icon_state = "glowplant" + light_range = 2 + light_power = 0.6 + light_color = "#FF6633" + catalogue_data = list(/datum/category_item/catalogue/flora/subterranean_bulbs) + +/obj/structure/flora/sif/subterranean/Initialize() + icon_state = "[initial(icon_state)][rand(1,2)]" + . = ..() + + +/datum/category_item/catalogue/flora/eyebulbs + name = "Sivian Flora - Eyebulbs" + desc = "A plant native to Sif. On the end of its stems are bulbs which visually resemble \ + eyes, which shrink when touched. One theory is that the bulbs are a result of mimicry, appearing as eyeballs to protect from predators.

\ + These plants have no known use." + value = CATALOGUER_REWARD_EASY + +/obj/structure/flora/sif/eyes + name = "mysterious bulbs" + desc = "This is a mysterious looking plant. They kind of look like eyeballs. Creepy." + icon_state = "eyeplant" + catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs) + +/obj/structure/flora/sif/eyes/Initialize() + icon_state = "[initial(icon_state)][rand(1,3)]" + . = ..() + +/datum/category_item/catalogue/flora/mosstendrils + name = "Sivian Flora - Moss Stalks" + desc = "A plant native to Sif. The plant is most closely related to the common, dense moss found covering Sif's terrain. \ + It has evolved a method of camouflage utilizing white hairs on its dorsal sides to make it appear as a small mound of snow from \ + above. It has no known use, though it is a common furnishing in contemporary homes." + value = CATALOGUER_REWARD_TRIVIAL + +/obj/structure/flora/sif/tendrils + name = "stocky tendrils" + desc = "A 'plant' made up of hardened moss. It has tiny hairs that bunch together to look like snow." + icon_state = "grass" + randomize_size = TRUE + catalogue_data = list(/datum/category_item/catalogue/flora/mosstendrils) + + harvest_tool = /obj/item/weapon/material/knife + max_harvests = 1 + min_harvests = -4 + harvest_loot = list( + /obj/item/seeds/wabback = 15, + /obj/item/seeds/blackwabback = 1, + /obj/item/seeds/wildwabback = 30 + ) + +/obj/structure/flora/sif/tendrils/Initialize() + icon_state = "[initial(icon_state)][rand(1,3)]" + . = ..() + +/obj/structure/flora/sif/tendrils/get_harvestable_desc() + return "\The [src] seems to be growing over something." diff --git a/code/game/objects/structures/flora_vr.dm b/code/game/objects/structures/flora/flora_vr.dm similarity index 100% rename from code/game/objects/structures/flora_vr.dm rename to code/game/objects/structures/flora/flora_vr.dm diff --git a/code/game/objects/structures/flora/grass.dm b/code/game/objects/structures/flora/grass.dm index d5e7e965a8..92717f4beb 100644 --- a/code/game/objects/structures/flora/grass.dm +++ b/code/game/objects/structures/flora/grass.dm @@ -11,7 +11,6 @@ ..() icon_state = "snowgrass[rand(1, 3)]bb" - /obj/structure/flora/grass/green icon_state = "snowgrass1gb" diff --git a/code/game/objects/structures/flora/trees.dm b/code/game/objects/structures/flora/trees.dm index 7cb1c3de3e..97625c7c5f 100644 --- a/code/game/objects/structures/flora/trees.dm +++ b/code/game/objects/structures/flora/trees.dm @@ -308,7 +308,9 @@ max_harvests = 2 min_harvests = -4 harvest_loot = list( - /obj/item/weapon/reagent_containers/food/snacks/siffruit = 5 + /obj/item/weapon/reagent_containers/food/snacks/siffruit = 20, + /obj/item/weapon/reagent_containers/food/snacks/grown/sifpod = 5, + /obj/item/seeds/sifbulb = 1 ) var/light_shift = 0 diff --git a/code/game/objects/structures/gravemarker.dm b/code/game/objects/structures/gravemarker.dm index 1df13a6eb4..d5b7773910 100644 --- a/code/game/objects/structures/gravemarker.dm +++ b/code/game/objects/structures/gravemarker.dm @@ -30,13 +30,11 @@ color = material.icon_colour /obj/structure/gravemarker/examine(mob/user) - ..() - if(get_dist(src, user) < 4) - if(grave_name) - to_chat(user, "Here Lies [grave_name]") - if(get_dist(src, user) < 2) - if(epitaph) - to_chat(user, epitaph) + . = ..() + if(grave_name && get_dist(src, user) < 4) + . += "Here Lies [grave_name]" + if(epitaph && get_dist(src, user) < 2) + . += epitaph /obj/structure/gravemarker/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) diff --git a/code/game/objects/structures/holoplant.dm b/code/game/objects/structures/holoplant.dm index 9a46b8ca15..bf2365a7b1 100644 --- a/code/game/objects/structures/holoplant.dm +++ b/code/game/objects/structures/holoplant.dm @@ -48,13 +48,13 @@ plant = prepare_icon(emagged ? "emagged" : null) overlays += plant set_light(2) - use_power = USE_POWER_ACTIVE + update_use_power(USE_POWER_ACTIVE) /obj/machinery/holoplant/proc/deactivate() overlays -= plant QDEL_NULL(plant) set_light(0) - use_power = USE_POWER_OFF + update_use_power(USE_POWER_OFF) /obj/machinery/holoplant/power_change() ..() diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 93c48fe8a9..b7807711e3 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -24,10 +24,9 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart) /obj/structure/janitorialcart/examine(mob/user) - if(..(user, 1)) - to_chat(user, "[src] [bicon(src)] contains [reagents.total_volume] unit\s of liquid!") - //everything else is visible, so doesn't need to be mentioned - + . = ..() + if(Adjacent(user)) + . += "It contains [reagents.total_volume] unit\s of liquid!" /obj/structure/janitorialcart/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/weapon/storage/bag/trash) && !mybag) @@ -186,12 +185,11 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart) /obj/structure/bed/chair/janicart/examine(mob/user) - if(!..(user, 1)) - return - - to_chat(user, "[bicon(src)] This [callme] contains [reagents.total_volume] unit\s of water!") - if(mybag) - to_chat(user, "\A [mybag] is hanging on the [callme].") + . = ..() + if(Adjacent(user)) + . += "This [callme] contains [reagents.total_volume] unit\s of water!" + if(mybag) + . += "\A [mybag] is hanging on the [callme]." /obj/structure/bed/chair/janicart/attackby(obj/item/I, mob/user) @@ -230,15 +228,6 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart) to_chat(user, "You'll need the keys in one of your hands to drive this [callme].") -/obj/structure/bed/chair/janicart/Move() - ..() - if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/L = A - if(L.buckled == src) - L.loc = loc - - /obj/structure/bed/chair/janicart/post_buckle_mob(mob/living/M) update_mob() return ..() diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm index e14c9ba9e3..b11f7aa36c 100644 --- a/code/game/objects/structures/loot_piles.dm +++ b/code/game/objects/structures/loot_piles.dm @@ -40,6 +40,10 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh var/list/uncommon_loot = list() // Uncommon is actually maybe some useful items, usually the reason someone bothers looking inside. var/list/rare_loot = list() // Rare is really powerful, or at least unique items. +/obj/structure/loot_pile/attack_ai(var/mob/user) + if(isrobot(user) && Adjacent(user)) + return attack_hand(user) + /obj/structure/loot_pile/attack_hand(mob/user) //Human mob if(isliving(user)) @@ -351,8 +355,8 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/weapon/circuitboard/atmos_alert, /obj/item/weapon/circuitboard/airalarm, /obj/item/weapon/circuitboard/fax, - /obj/item/weapon/circuitboard/ghettosmes, /obj/item/weapon/circuitboard/jukebox, + /obj/item/weapon/circuitboard/batteryrack, /obj/item/weapon/circuitboard/message_monitor, /obj/item/weapon/circuitboard/rcon_console, /obj/item/weapon/smes_coil, diff --git a/code/game/objects/structures/medical_stand_vr.dm b/code/game/objects/structures/medical_stand_vr.dm index 60bddde660..9e0b2cdf37 100644 --- a/code/game/objects/structures/medical_stand_vr.dm +++ b/code/game/objects/structures/medical_stand_vr.dm @@ -342,24 +342,24 @@ return if(beaker) - to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].") - to_chat(user, "It is set to transfer [transfer_amount]u of chemicals per cycle.") + . += "The IV drip is [mode ? "injecting" : "taking blood"]." + . += "It is set to transfer [transfer_amount]u of chemicals per cycle." if(beaker.reagents && beaker.reagents.total_volume) - to_chat(user, "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.") + . += "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid." else - to_chat(user, "Attached is an empty [beaker].") - to_chat(user, "[attached ? attached : "No one"] is hooked up to it.") + . += "Attached is an empty [beaker]." + . += "[attached ? attached : "No one"] is hooked up to it." else - to_chat(user, "There is no vessel.") + . += "There is no vessel." if(tank) if (!is_loosen) - to_chat(user, "\The [tank] connected.") - to_chat(user, "The meter shows [round(tank.air_contents.return_pressure())]. The valve is [valve_opened == TRUE ? "open" : "closed"].") + . += "\The [tank] connected." + . += "The meter shows [round(tank.air_contents.return_pressure())]. The valve is [valve_opened == TRUE ? "open" : "closed"]." if (tank.distribute_pressure == 0) - to_chat(user, "Use wrench to replace tank.") + . += "Use wrench to replace tank." else - to_chat(user, "There is no tank.") + . += "There is no tank." /obj/structure/medical_stand/process() //Gas Stuff diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index 17e594c4c3..1c6476d1d1 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -17,8 +17,9 @@ GLOBAL_LIST_BOILERPLATE(all_mopbuckets, /obj/structure/mopbucket) ..() /obj/structure/mopbucket/examine(mob/user) - if(..(user, 1)) - to_chat(user, "[src] [bicon(src)] contains [reagents.total_volume] unit\s of water!") + . = ..() + if(Adjacent(user)) + . += "It contains [reagents.total_volume] unit\s of water!" /obj/structure/mopbucket/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap) || istype(I, /obj/item/weapon/reagent_containers/glass/rag)) //VOREStation Edit - "Allows soap and rags to be used on mopbuckets" diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index f3bfc92d8e..c701ae9015 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -51,21 +51,18 @@ return /obj/structure/noticeboard/attack_hand(var/mob/user) - examine(user) + user.examinate(src) // Since Topic() never seems to interact with usr on more than a superficial // level, it should be fine to let anyone mess with the board other than ghosts. /obj/structure/noticeboard/examine(var/mob/user) - if(!user) - user = usr - if(user.Adjacent(src)) + . = ..() + if(Adjacent(user)) var/dat = "Noticeboard
" for(var/obj/item/weapon/paper/P in src) dat += "[P.name] Write Remove
" user << browse("Notices[dat]","window=noticeboard") onclose(user, "noticeboard") - else - ..() /obj/structure/noticeboard/Topic(href, href_list) ..() diff --git a/code/game/objects/structures/railing.dm b/code/game/objects/structures/railing.dm index 8027b5db5e..17b457b49e 100644 --- a/code/game/objects/structures/railing.dm +++ b/code/game/objects/structures/railing.dm @@ -46,11 +46,11 @@ if(health < maxhealth) switch(health / maxhealth) if(0.0 to 0.5) - to_chat(user, "It looks severely damaged!") + . += "It looks severely damaged!" if(0.25 to 0.5) - to_chat(user, "It looks damaged!") + . += "It looks damaged!" if(0.5 to 1.0) - to_chat(user, "It has a few scrapes and dents.") + . += "It has a few scrapes and dents." /obj/structure/railing/take_damage(amount) health -= amount diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 1a9d4e7315..b053e33805 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -286,15 +286,10 @@ held = null -/obj/structure/bed/roller/Move() - ..() +/obj/structure/bed/roller/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + playsound(src, 'sound/effects/roll.ogg', 100, 1) - if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/L = A - - if(L.buckled == src) - L.loc = src.loc /obj/structure/bed/roller/post_buckle_mob(mob/living/M as mob) if(M.buckled == src) diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 5be1d6d198..dbd437fe33 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -140,22 +140,24 @@ return ..() -/obj/structure/bed/chair/office/Move() - ..() +/obj/structure/bed/chair/office/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + playsound(src, 'sound/effects/roll.ogg', 100, 1) - if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/occupant = A - occupant.buckled = null - occupant.Move(src.loc) - occupant.buckled = src - if (occupant && (src.loc != occupant.loc)) - if (propelled) - for (var/mob/O in src.loc) - if (O != occupant) - Bump(O) - else - unbuckle_mob() + +/obj/structure/bed/chair/office/handle_buckled_mob_movement(atom/new_loc, direction, movetime) + for(var/A in buckled_mobs) + var/mob/living/occupant = A + occupant.buckled = null + occupant.Move(loc, direction, movetime) + occupant.buckled = src + if (occupant && (loc != occupant.loc)) + if (propelled) + for (var/mob/O in src.loc) + if (O != occupant) + Bump(O) + else + unbuckle_mob() /obj/structure/bed/chair/office/Bump(atom/A) ..() diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs_vr.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs_vr.dm index 79b970e1cf..fa28f71bad 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs_vr.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs_vr.dm @@ -120,6 +120,7 @@ desc = "Like a normal chair, but more stationary." icon_state = "bay_chair_preview" base_icon = "bay_chair" + buckle_movable = 1 /obj/structure/bed/chair/bay/chair/padded/red/New(var/newloc, var/new_material, var/new_padding_material) ..(newloc, new_material, "carpet") @@ -192,7 +193,6 @@ desc = "It's a chair. Only for the highest ranked asses." icon_state = "capchair_preview" base_icon = "capchair" - buckle_movable = 1 /obj/structure/bed/chair/bay/comfy/captain/update_icon() ..() @@ -209,6 +209,7 @@ desc = "A comfortable, secure seat. It has a sturdy-looking buckling system for smoother flights." base_icon = "shuttle_chair" icon_state = "shuttle_chair_preview" + buckle_movable = 0 var/buckling_sound = 'sound/effects/metal_close.ogg' var/padding = "blue" diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index 8a3902fa1d..639020ba5d 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -91,8 +91,9 @@ create_track() driving = 0 -/obj/structure/bed/chair/wheelchair/Move() - ..() +/obj/structure/bed/chair/wheelchair/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + cut_overlays() playsound(src, 'sound/effects/roll.ogg', 75, 1) if(has_buckled_mobs()) diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm index 55d8b37d0f..1e9c091ccb 100644 --- a/code/game/objects/structures/target_stake.dm +++ b/code/game/objects/structures/target_stake.dm @@ -8,11 +8,11 @@ w_class = ITEMSIZE_HUGE var/obj/item/target/pinned_target // the current pinned target - Move() - ..() + Moved(atom/old_loc, direction, forced = FALSE) + . = ..() // Move the pinned target along with the stake if(pinned_target in view(3, src)) - pinned_target.loc = loc + pinned_target.forceMove(loc) else // Sanity check: if the pinned target can't be found in immediate view pinned_target = null diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index d8542d0c96..3df62610c9 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -3,7 +3,7 @@ desc = "A window." icon = 'icons/obj/structures_vr.dmi' // VOREStation Edit - New icons density = 1 - can_atmos_pass = ATMOS_PASS_DENSITY + can_atmos_pass = ATMOS_PASS_PROC w_class = ITEMSIZE_NORMAL layer = WINDOW_LAYER @@ -25,27 +25,27 @@ var/fulltile = FALSE // Set to true on full-tile variants. /obj/structure/window/examine(mob/user) - . = ..(user) + . = ..() if(health == maxhealth) - to_chat(user, "It looks fully intact.") + . += "It looks fully intact." else var/perc = health / maxhealth if(perc > 0.75) - to_chat(user, "It has a few cracks.") + . += "It has a few cracks." else if(perc > 0.5) - to_chat(user, "It looks slightly damaged.") + . += "It looks slightly damaged." else if(perc > 0.25) - to_chat(user, "It looks moderately damaged.") + . += "It looks moderately damaged." else - to_chat(user, "It looks heavily damaged.") + . += "It looks heavily damaged." if(silicate) if (silicate < 30) - to_chat(user, "It has a thin layer of silicate.") + . += "It has a thin layer of silicate." else if (silicate < 70) - to_chat(user, "It is covered in silicate.") + . += "It is covered in silicate." else - to_chat(user, "There is a thick layer of silicate covering it.") + . += "There is a thick layer of silicate covering it." /obj/structure/window/take_damage(var/damage = 0, var/sound_effect = 1) var/initialhealth = health @@ -144,8 +144,8 @@ /obj/structure/window/CanZASPass(turf/T, is_zone) if(is_fulltile() || get_dir(T, loc) == turn(dir, 180)) // Make sure we're handling the border correctly. - return anchored ? ATMOS_PASS_NO : ATMOS_PASS_YES // If it's anchored, it'll block air. - return ATMOS_PASS_YES // Don't stop airflow from the other sides. + return !anchored // If it's anchored, it'll block air. + return TRUE // Don't stop airflow from the other sides. /obj/structure/window/CheckExit(atom/movable/O as mob|obj, target as turf) if(istype(O) && O.checkpass(PASSGLASS)) @@ -413,7 +413,7 @@ /obj/structure/window/Move() var/ini_dir = dir update_nearby_tiles(need_rebuild=1) - ..() + . = ..() set_dir(ini_dir) update_nearby_tiles(need_rebuild=1) diff --git a/code/game/objects/structures/window_vr.dm b/code/game/objects/structures/window_vr.dm new file mode 100644 index 0000000000..8a13a9c50d --- /dev/null +++ b/code/game/objects/structures/window_vr.dm @@ -0,0 +1,37 @@ +/obj/structure/window/titanium + name = "ti-glass window" + desc = "A titanium alloy window, combining the strength of titanium with the transparency of glass. It seems to be very strong." + basestate = "window" + icon_state = "window" + color = "#A7A3A6" + shardtype = /obj/item/weapon/material/shard/titaniumglass + glasstype = /obj/item/stack/material/glass/titanium + reinf = 0 + maximal_heat = T0C + 5000 + damage_per_fire_tick = 1.0 + maxhealth = 100.0 + force_threshold = 10 + +/obj/structure/window/titanium/full + icon_state = "window-full" + maxhealth = 200 + fulltile = TRUE + +/obj/structure/window/plastitanium + name = "plastanium glass window" + desc = "A plastitanium alloy window, combining the strength of plastitanium with the transparency of glass. It seems to be very strong." + basestate = "window" + icon_state = "window" + color = "#676366" + shardtype = /obj/item/weapon/material/shard/plastitaniumglass + glasstype = /obj/item/stack/material/glass/plastitanium + reinf = 0 + maximal_heat = T0C + 7000 + damage_per_fire_tick = 1.0 + maxhealth = 120.0 + force_threshold = 10 + +/obj/structure/window/plastitanium/full + icon_state = "window-full" + maxhealth = 250 + fulltile = TRUE \ No newline at end of file diff --git a/code/game/turfs/simulated/outdoors/grass.dm b/code/game/turfs/simulated/outdoors/grass.dm index e557fb16da..553b4858bb 100644 --- a/code/game/turfs/simulated/outdoors/grass.dm +++ b/code/game/turfs/simulated/outdoors/grass.dm @@ -12,6 +12,13 @@ var/list/grass_types = list( ) var/grass_chance = 20 + var/animal_chance = 1 + + // Weighted spawn list. + var/list/animal_types = list( + /mob/living/simple_mob/animal/passive/tindalos = 1 + ) + var/list/grass_types = list( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/fullgrass @@ -32,6 +39,16 @@ var/list/grass_types = list( grass_chance = 5 var/tree_chance = 2 + animal_chance = 0 //VOREStation Edit + + animal_types = list( + /mob/living/simple_mob/animal/sif/diyaab = 10, + /mob/living/simple_mob/animal/sif/glitterfly = 2, + /mob/living/simple_mob/animal/sif/duck = 2, + /mob/living/simple_mob/animal/sif/shantak/retaliate = 2, + /obj/random/mob/multiple/sifmobs = 1 + ) + grass_types = list( /obj/structure/flora/sif/eyes = 1, /obj/structure/flora/sif/tendrils = 10 @@ -53,6 +70,11 @@ var/list/grass_types = list( if(grass_chance && prob(grass_chance) && !check_density()) var/grass_type = pickweight(grass_types) new grass_type(src) + + if(animal_chance && prob(animal_chance) && !check_density()) + var/animal_type = pickweight(animal_types) + new animal_type(src) + . = ..() /turf/simulated/floor/outdoors/grass/forest diff --git a/code/game/turfs/simulated/wall_types_vr.dm b/code/game/turfs/simulated/wall_types_vr.dm index 6ebf9df004..87a6582f1f 100644 --- a/code/game/turfs/simulated/wall_types_vr.dm +++ b/code/game/turfs/simulated/wall_types_vr.dm @@ -71,3 +71,15 @@ var/list/flesh_overlay_cache = list() /turf/simulated/shuttle/wall/flock/Initialize() . = ..() set_light(3,3,"#26c5a9") + +/turf/simulated/wall/rplastitanium + icon_state = "rwall-plastitanium" + icon = 'icons/turf/wall_masks_vr.dmi' +/turf/simulated/wall/rplastitanium/Initialize(mapload) + . = ..(mapload, MAT_PLASTITANIUM,MAT_PLASTITANIUM,MAT_PLASTITANIUM) + + /turf/simulated/wall/plastitanium + icon_state = "wall-plastitanium" + icon = 'icons/turf/wall_masks_vr.dmi' +/turf/simulated/wall/plastitanium/Initialize(mapload) + . = ..(mapload, MAT_PLASTITANIUM, null,MAT_PLASTITANIUM) \ No newline at end of file diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index cbb9c6dbb7..add0b3b11d 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -120,21 +120,21 @@ //Appearance /turf/simulated/wall/examine(mob/user) - . = ..(user) + . = ..() if(!damage) - to_chat(user, "It looks fully intact.") + . += "It looks fully intact." else var/dam = damage / material.integrity if(dam <= 0.3) - to_chat(user, "It looks slightly damaged.") + . += "It looks slightly damaged." else if(dam <= 0.6) - to_chat(user, "It looks moderately damaged.") + . += "It looks moderately damaged." else - to_chat(user, "It looks heavily damaged.") + . += "It looks heavily damaged." if(locate(/obj/effect/overlay/wallrot) in src) - to_chat(user, "There is fungus growing on [src].") + . += "There is fungus growing on [src]." //Damage diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 96edd3c9d4..6575e47a54 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -157,19 +157,14 @@ var/const/enterloopsanity = 100 if(ismob(A)) var/mob/M = A - if(!M.lastarea) - M.lastarea = get_area(M.loc) - if(M.lastarea.has_gravity == 0) + if(M.lastarea?.has_gravity == 0) inertial_drift(M) if(M.flying) //VORESTATION Edit Start. This overwrites the above is_space without touching it all that much. M.make_floating(1) //VOREStation Edit End. else if(!is_space()) M.inertia_dir = 0 M.make_floating(0) - if(isliving(M)) - var/mob/living/L = M - L.handle_footstep(src) - ..() + var/objects = 0 if(A && (A.flags & PROXMOVE)) for(var/atom/movable/thing in range(1)) diff --git a/code/game/verbs/character_directory.dm b/code/game/verbs/character_directory.dm index 1b45091cf7..99f95700b8 100644 --- a/code/game/verbs/character_directory.dm +++ b/code/game/verbs/character_directory.dm @@ -18,7 +18,8 @@ var/mob/living/carbon/human/H = C.mob if(data_core && data_core.general) if(!find_general_record("name", H.real_name)) - continue + if(!find_record("name", H.real_name, data_core.hidden_general)) + continue curID++ html += "
" html += "

[H.real_name]


" diff --git a/code/global.dm b/code/global.dm index 31535369df..7360e625fa 100644 --- a/code/global.dm +++ b/code/global.dm @@ -37,7 +37,7 @@ var/const/star_name = "Virgo-Erigone" var/const/starsys_name = "Virgo-Erigone" var/const/game_version = "VOREStation" var/changelog_hash = "" -var/game_year = (text2num(time2text(world.realtime, "YYYY")) + 544) +var/game_year = (text2num(time2text(world.realtime, "YYYY")) + 300) //VOREStation Edit var/round_progressing = 1 var/master_mode = "extended" // "extended" diff --git a/code/global_vr.dm b/code/global_vr.dm index d8d1887bde..457a37ea0a 100644 --- a/code/global_vr.dm +++ b/code/global_vr.dm @@ -4,7 +4,8 @@ robot_module_types += "Janihound" robot_module_types += "Sci-borg" robot_module_types += "Pupdozer" - robot_module_types += "Servicehound" //YW changes + robot_module_types += "Service-Hound" + robot_module_types += "KMine" robot_module_types += "BoozeHound" //YW changes return 1 diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index fc1a8e05ca..48eb275a9e 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -83,7 +83,7 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = var/sql = "INSERT INTO erro_ban (`id`,`bantime`,`serverip`,`bantype`,`reason`,`job`,`duration`,`rounds`,`expiration_time`,`ckey`,`computerid`,`ip`,`a_ckey`,`a_computerid`,`a_ip`,`who`,`adminwho`,`edits`,`unbanned`,`unbanned_datetime`,`unbanned_ckey`,`unbanned_computerid`,`unbanned_ip`) VALUES (null, Now(), '[serverip]', '[bantype_str]', '[reason]', '[job]', [(duration)?"[duration]":"0"], [(rounds)?"[rounds]":"0"], Now() + INTERVAL [(duration>0) ? duration : 0] MINUTE, '[ckey]', '[computerid]', '[ip]', '[a_ckey]', '[a_computerid]', '[a_ip]', '[who]', '[adminwho]', '', null, null, null, null, null)" var/DBQuery/query_insert = dbcon.NewQuery(sql) query_insert.Execute() - to_chat(usr, "Ban saved to database.") + to_chat(usr, "Ban saved to database.") message_admins("[key_name_admin(usr)] has added a [bantype_str] for [ckey] [(job)?"([job])":""] [(duration > 0)?"([duration] minutes)":""] with the reason: \"[reason]\" to the ban database.",1) @@ -137,17 +137,17 @@ datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "") ban_number++; if(ban_number == 0) - to_chat(usr, "Database update failed due to no bans fitting the search criteria. If this is not a legacy ban you should contact the database admin.") + to_chat(usr, "Database update failed due to no bans fitting the search criteria. If this is not a legacy ban you should contact the database admin.") return if(ban_number > 1) - to_chat(usr, "Database update failed due to multiple bans fitting the search criteria. Note down the ckey, job and current time and contact the database admin.") + to_chat(usr, "Database update failed due to multiple bans fitting the search criteria. Note down the ckey, job and current time and contact the database admin.") return if(istext(ban_id)) ban_id = text2num(ban_id) if(!isnum(ban_id)) - to_chat(usr, "Database update failed due to a ban ID mismatch. Contact the database admin.") + to_chat(usr, "Database update failed due to a ban ID mismatch. Contact the database admin.") return DB_ban_unban_by_id(ban_id) @@ -173,7 +173,7 @@ datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null) duration = query.item[2] reason = query.item[3] else - to_chat(usr, "Invalid ban id. Contact the database admin") + to_chat(usr, "Invalid ban id. Contact the database admin") return reason = sql_sanitize_text(reason) @@ -205,12 +205,8 @@ datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null) if(alert("Unban [pckey]?", "Unban?", "Yes", "No") == "Yes") DB_ban_unban_by_id(banid) return - else - to_chat(usr, "Cancelled") - return - else - to_chat(usr, "Cancelled") - return + to_chat(usr, "Cancelled") + return datum/admins/proc/DB_ban_unban_by_id(var/id) @@ -232,11 +228,11 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) ban_number++; if(ban_number == 0) - to_chat(usr, "Database update failed due to a ban id not being present in the database.") + to_chat(usr, "Database update failed due to a ban id not being present in the database.") return if(ban_number > 1) - to_chat(usr, "Database update failed due to multiple bans having the same ID. Contact the database admin.") + to_chat(usr, "Database update failed due to multiple bans having the same ID. Contact the database admin.") return if(!src.owner || !istype(src.owner, /client)) @@ -272,7 +268,7 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) establish_db_connection() if(!dbcon.IsConnected()) - to_chat(usr, "Failed to establish database connection") + to_chat(usr, "Failed to establish database connection") return var/output = "
" diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index 944cdc552a..15d29eb1f0 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -106,7 +106,7 @@ var/savefile/Banlist Banlist.cd = "/base" if ( Banlist.dir.Find("[ckey][computerid]") ) - to_chat(usr, "Ban already exists.") + to_chat(usr, "Ban already exists.") return 0 else Banlist.dir.Add("[ckey][computerid]") diff --git a/code/modules/admin/ToRban.dm b/code/modules/admin/ToRban.dm index 1e2d5ef49c..dbf373b3ff 100644 --- a/code/modules/admin/ToRban.dm +++ b/code/modules/admin/ToRban.dm @@ -38,7 +38,7 @@ F["last_update"] << world.realtime log_misc("ToR data updated!") if(usr) - to_chat(usr, "ToRban updated.") + to_chat(usr, "ToRban updated.") return 1 log_misc("ToR data update aborted: no data.") return 0 @@ -73,16 +73,16 @@ var/choice = input(src,"Please select an IP address to remove from the ToR banlist:","Remove ToR ban",null) as null|anything in F.dir if(choice) F.dir.Remove(choice) - to_chat(src, "Address removed") + to_chat(src, "Address removed") if("remove all") - to_chat(src, "[TORFILE] was [fdel(TORFILE)?"":"not "]removed.") + to_chat(src, "[TORFILE] was [fdel(TORFILE)?"":"not "]removed.") if("find") var/input = input(src,"Please input an IP address to search for:","Find ToR ban",null) as null|text if(input) if(ToRban_isbanned(input)) - to_chat(src, "Address is a known ToR address") + to_chat(src, "Address is a known ToR address") else - to_chat(src, "Address is not a known ToR address") + to_chat(src, "Address is not a known ToR address") return #undef TORFILE diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 6fc26c7d48..ccf0b4ef94 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -5,7 +5,7 @@ var/global/floorIsLava = 0 //////////////////////////////// /proc/message_admins(var/msg) - msg = "ADMIN LOG: [msg]" + msg = "ADMIN LOG: [msg]" //log_adminwarn(msg) //log_and_message_admins is for this for(var/client/C in admins) @@ -13,7 +13,7 @@ var/global/floorIsLava = 0 to_chat(C,msg) /proc/msg_admin_attack(var/text) //Toggleable Attack Messages - var/rendered = "ATTACK: [text]" + var/rendered = "ATTACK: [text]" for(var/client/C in admins) if((R_ADMIN|R_MOD) & C.holder.rights) if(C.is_preference_enabled(/datum/client_preference/mod/show_attack_logs)) @@ -877,7 +877,7 @@ var/datum/announcement/minor/admin_min_announcer = new if(!check_rights(R_SERVER|R_EVENT)) return if(SSticker.current_state > GAME_STATE_PREGAME) - to_chat(usr, "Error: Start Now: Game has already started.") + to_chat(usr, "Error: Start Now: Game has already started.") return if(!SSticker.start_immediately) SSticker.start_immediately = TRUE @@ -885,11 +885,11 @@ var/datum/announcement/minor/admin_min_announcer = new if(SSticker.current_state == GAME_STATE_INIT) msg = " (The server is still setting up, but the round will be started as soon as possible.)" log_admin("[key_name(usr)] has started the game.[msg]") - message_admins("[key_name_admin(usr)] has started the game.[msg]") + message_admins("[key_name_admin(usr)] has started the game.[msg]") feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! else SSticker.start_immediately = FALSE - to_chat(world, "Immediate game start canceled. Normal startup resumed.") + to_world("Immediate game start canceled. Normal startup resumed.") log_and_message_admins("cancelled immediate game start.") /datum/admins/proc/toggleenter() diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index 8dc1e9de74..1342fc2f5f 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -23,7 +23,7 @@ if(!message) return var/F = investigate_subject2file(subject) if(!F) return - to_chat(F, "[time2text(world.timeofday,"hh:mm")] \ref[src] ([x],[y],[z]) || [src] [message]
") + to_chat(F, "[time2text(world.timeofday,"hh:mm")] \ref[src] ([x],[y],[z]) || [src] [message]
") //ADMINVERBS /client/proc/investigate_show( subject in list("hrefs","notes","singulo","telesci") ) @@ -34,7 +34,7 @@ if("singulo", "telesci") //general one-round-only stuff var/F = investigate_subject2file(subject) if(!F) - to_chat(src, "Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.") + to_chat(src, "Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.") return src << browse(F,"window=investigate[subject];size=800x300") @@ -43,8 +43,8 @@ if(href_logfile) src << browse(href_logfile,"window=investigate[subject];size=800x300") else - to_chat(src, "Error: admin_investigate: No href logfile found.") + to_chat(src, "Error: admin_investigate: No href logfile found.") return else - to_chat(src, "Error: admin_investigate: Href Logging is not on.") + to_chat(src, "Error: admin_investigate: Href Logging is not on.") return diff --git a/code/modules/admin/admin_memo.dm b/code/modules/admin/admin_memo.dm index 007ca49ba5..fc38dda9d5 100644 --- a/code/modules/admin/admin_memo.dm +++ b/code/modules/admin/admin_memo.dm @@ -22,11 +22,11 @@ return if("") F.dir.Remove(ckey) - to_chat(src, "Memo removed") + to_chat(src, "Memo removed") return if( findtext(memo,"[memo]") + to_chat(F[ckey], "[key] on [time2text(world.realtime,"(DDD) DD MMM hh:mm")]
[memo]
") message_admins("[key] set an admin memo:
[memo]") //show all memos @@ -35,7 +35,7 @@ var/savefile/F = new(MEMOFILE) if(F) for(var/ckey in F.dir) - to_chat(src, "
Admin Memo by [F[ckey]]
") + to_chat(src, "
Admin Memo by [F[ckey]]
") //delete your own or somebody else's memo /client/proc/admin_memo_delete() @@ -48,7 +48,7 @@ ckey = src.ckey if(ckey) F.dir.Remove(ckey) - to_chat(src, "Removed Memo created by [ckey].") + to_chat(src, "Removed Memo created by [ckey].") #undef MEMOFILE #undef ENABLE_MEMOS \ No newline at end of file diff --git a/code/modules/admin/admin_verb_lists.dm b/code/modules/admin/admin_verb_lists.dm new file mode 100644 index 0000000000..63d02af1f7 --- /dev/null +++ b/code/modules/admin/admin_verb_lists.dm @@ -0,0 +1,531 @@ +//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless +var/list/admin_verbs_default = list( + /datum/admins/proc/show_player_panel, //shows an interface for individual players, with various links (links require additional flags, + /client/proc/player_panel_new, //shows an interface for all players, with links to various panels, + /client/proc/player_panel, + /client/proc/deadmin_self, //destroys our own admin datum so we can play as a regular player, + /client/proc/hide_verbs, //hides all our adminverbs, + /client/proc/hide_most_verbs, //hides all our hideable adminverbs, + /client/proc/debug_variables, //allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify, + /client/proc/mark_datum_mapview, + /client/proc/cmd_check_new_players, //allows us to see every new player +// /client/proc/check_antagonists, //shows all antags, +// /client/proc/cmd_mod_say, +// /client/proc/deadchat //toggles deadchat on/off, +// /client/proc/toggle_ahelp_sound, + ) + +var/list/admin_verbs_admin = list( + /datum/admins/proc/set_tcrystals, + /datum/admins/proc/add_tcrystals, + /client/proc/invisimin, //allows our mob to go invisible/visible, + /datum/admins/proc/show_traitor_panel, //interface which shows a mob's mind., + /datum/admins/proc/show_game_mode, //Configuration window for the current game mode., + /datum/admins/proc/force_mode_latespawn, //Force the mode to try a latespawn proc, + /datum/admins/proc/force_antag_latespawn, //Force a specific template to try a latespawn proc, + /datum/admins/proc/toggleenter, //toggles whether people can join the current game, + /datum/admins/proc/toggleguests, //toggles whether guests can join the current game, + /datum/admins/proc/announce, //priority announce something to all clients., + /datum/admins/proc/intercom, //send a fake intercom message, like an arrivals announcement, + /datum/admins/proc/intercom_convo, //send a fake intercom conversation, like an ATC exchange, + /client/proc/colorooc, //allows us to set a custom colour for everythign we say in ooc, + /client/proc/admin_ghost, //allows us to ghost/reenter body at will, + /client/proc/toggle_view_range, //changes how far we can see, + /datum/admins/proc/view_txt_log, //shows the server log (diary) for today, + /datum/admins/proc/view_atk_log, //shows the server combat-log, doesn't do anything presently, + /client/proc/cmd_admin_pm_context, //right-click adminPM interface, + /client/proc/cmd_admin_pm_panel, //admin-pm list, + /client/proc/cmd_admin_subtle_message, //send an message to somebody as a 'voice in their head', + /client/proc/cmd_admin_delete, //delete an instance/object/mob/etc, + /client/proc/cmd_admin_check_contents, //displays the contents of an instance, + /client/proc/cmd_admin_check_player_logs, //checks a player's attack logs, + /client/proc/cmd_admin_check_dialogue_logs, //checks a player's dialogue logs, + /datum/admins/proc/access_news_network, //allows access of newscasters, + /client/proc/giveruntimelog, //allows us to give access to runtime logs to somebody, + /client/proc/getserverlog, //allows us to fetch server logs (diary) for other days, + /client/proc/jumptocoord, //we ghost and jump to a coordinate, + /client/proc/Getmob, //teleports a mob to our location, + /client/proc/Getkey, //teleports a mob with a certain ckey to our location, +// /client/proc/sendmob, //sends a mob somewhere, -Removed due to it needing two sorting procs to work, which were executed every time an admin right-clicked. ~Errorage, + /client/proc/Jump, + /client/proc/jumptokey, //allows us to jump to the location of a mob with a certain ckey, + /client/proc/jumptomob, //allows us to jump to a specific mob, + /client/proc/jumptoturf, //allows us to jump to a specific turf, + /client/proc/admin_call_shuttle, //allows us to call the emergency shuttle, + /client/proc/admin_cancel_shuttle, //allows us to cancel the emergency shuttle, sending it back to CentCom, + /client/proc/cmd_admin_direct_narrate, //send text directly to a player with no padding. Useful for narratives and fluff-text, + /client/proc/cmd_admin_world_narrate, //sends text to all players with no padding, + /client/proc/cmd_admin_create_centcom_report, + /client/proc/check_words, //displays cult-words, + /client/proc/check_ai_laws, //shows AI and borg laws, + /client/proc/rename_silicon, //properly renames silicons, + /client/proc/manage_silicon_laws, // Allows viewing and editing silicon laws. , + /client/proc/check_antagonists, + /client/proc/admin_memo, //admin memo system. show/delete/write. +SERVER needed to delete admin memos of others, + /client/proc/dsay, //talk in deadchat using our ckey/fakekey, +// /client/proc/toggle_hear_deadcast, //toggles whether we hear deadchat, + /client/proc/investigate_show, //various admintools for investigation. Such as a singulo grief-log, + /client/proc/secrets, + /datum/admins/proc/toggleooc, //toggles ooc on/off for everyone, + /datum/admins/proc/togglelooc, //toggles looc on/off for everyone, + /datum/admins/proc/toggleoocdead, //toggles ooc on/off for everyone who is dead, + /datum/admins/proc/togglehubvisibility, //toggles visibility on the BYOND Hub., + /datum/admins/proc/toggledsay, //toggles dsay on/off for everyone, + /client/proc/game_panel, //game panel, allows to change game-mode etc, + /client/proc/cmd_admin_say, //admin-only ooc chat, + /client/proc/cmd_mod_say, + /client/proc/cmd_event_say, + /datum/admins/proc/PlayerNotes, + /datum/admins/proc/show_player_info, + /client/proc/free_slot, //frees slot for chosen job, + /client/proc/cmd_admin_change_custom_event, + /client/proc/cmd_admin_rejuvenate, + /client/proc/toggleghostwriters, + /client/proc/toggledrones, + /datum/admins/proc/show_skills, + /client/proc/check_customitem_activity, + /client/proc/man_up, + /client/proc/global_man_up, + /client/proc/response_team, // Response Teams admin verb, + /client/proc/trader_ship, // Trader ship admin verb, + /client/proc/toggle_antagHUD_use, + /client/proc/toggle_antagHUD_restrictions, + /client/proc/allow_character_respawn, // Allows a ghost to respawn , + /client/proc/event_manager_panel, + /client/proc/empty_ai_core_toggle_latejoin, + /client/proc/empty_ai_core_toggle_latejoin, + /client/proc/aooc, + /client/proc/change_human_appearance_admin, // Allows an admin to change the basic appearance of human-based mobs , + /client/proc/change_human_appearance_self, // Allows the human-based mob itself change its basic appearance , + /client/proc/change_security_level, + /client/proc/view_chemical_reaction_logs, + /client/proc/makePAI, + /client/proc/toggle_debug_logs, + /client/proc/toggle_attack_logs, + /datum/admins/proc/paralyze_mob, + /client/proc/fixatmos, + /datum/admins/proc/quick_nif, //VOREStation Add, + /datum/admins/proc/sendFax, + /client/proc/despawn_player, + /datum/admins/proc/view_feedback + ) + +var/list/admin_verbs_ban = list( + /client/proc/unban_panel, + /client/proc/jobbans + ) + +var/list/admin_verbs_sounds = list( + /client/proc/play_local_sound, + /client/proc/play_sound, + /client/proc/play_server_sound + ) + +var/list/admin_verbs_fun = list( + /client/proc/object_talk, + /datum/admins/proc/cmd_admin_dress, + /client/proc/cmd_admin_gib_self, + /client/proc/drop_bomb, + /client/proc/everyone_random, + /client/proc/cinematic, + /datum/admins/proc/toggle_aliens, + /datum/admins/proc/toggle_space_ninja, + /client/proc/cmd_admin_add_freeform_ai_law, + /client/proc/cmd_admin_add_random_ai_law, + /client/proc/make_sound, + /client/proc/toggle_random_events, + /client/proc/editappear, + /client/proc/roll_dices, + /datum/admins/proc/call_supply_drop, + /datum/admins/proc/call_drop_pod, + /client/proc/smite, + /client/proc/smite_vr, //VOREStation Add, + /client/proc/admin_lightning_strike, + ) + +var/list/admin_verbs_spawn = list( + /datum/admins/proc/spawn_fruit, + /datum/admins/proc/spawn_custom_item, + /datum/admins/proc/check_custom_items, + /datum/admins/proc/spawn_plant, + /datum/admins/proc/spawn_atom, //allows us to spawn instances, + /client/proc/respawn_character, + /client/proc/spawn_character_mob, //VOREStation Add, + /client/proc/virus2_editor, + /client/proc/spawn_chemdisp_cartridge, + /client/proc/map_template_load, + /client/proc/map_template_upload, + /client/proc/map_template_load_on_new_z + ) + +var/list/admin_verbs_server = list( + /datum/admins/proc/capture_map, + /client/proc/Set_Holiday, + /client/proc/ToRban, + /datum/admins/proc/startnow, + /datum/admins/proc/restart, + /datum/admins/proc/delay, + /datum/admins/proc/toggleaban, + /client/proc/cmd_mod_say, + /client/proc/toggle_log_hrefs, + /datum/admins/proc/immreboot, + /client/proc/everyone_random, + /datum/admins/proc/toggleAI, + /client/proc/cmd_admin_delete, //delete an instance/object/mob/etc, + /client/proc/cmd_debug_del_all, + /datum/admins/proc/adrev, + /datum/admins/proc/adspawn, + /datum/admins/proc/adjump, + /datum/admins/proc/toggle_aliens, + /datum/admins/proc/toggle_space_ninja, + /client/proc/toggle_random_events, + /client/proc/check_customitem_activity, + /client/proc/nanomapgen_DumpImage, + /client/proc/modify_server_news, + /client/proc/recipe_dump, + /client/proc/panicbunker, + /client/proc/paranoia_logging, + /client/proc/ip_reputation + ) + +var/list/admin_verbs_debug = list( + /client/proc/getruntimelog, //allows us to access runtime logs to somebody, + /client/proc/cmd_admin_list_open_jobs, + /client/proc/Debug2, + /client/proc/kill_air, + /client/proc/ZASSettings, + /client/proc/cmd_debug_make_powernets, + /client/proc/kill_airgroup, + /client/proc/debug_controller, + /client/proc/debug_antagonist_template, + /client/proc/cmd_debug_mob_lists, + /client/proc/cmd_debug_using_map, + /client/proc/cmd_admin_delete, + /client/proc/cmd_debug_del_all, + /client/proc/cmd_debug_tog_aliens, + /client/proc/cmd_display_del_log, + /client/proc/cmd_display_init_log, + /client/proc/cmd_display_overlay_log, + /client/proc/air_report, + /client/proc/reload_admins, + /client/proc/reload_eventMs, + /client/proc/restart_controller, + /datum/admins/proc/restart, + /client/proc/print_random_map, + /client/proc/create_random_map, + /client/proc/apply_random_map, + /client/proc/overlay_random_map, + /client/proc/delete_random_map, + /client/proc/show_plant_genes, + /client/proc/enable_debug_verbs, + /client/proc/callproc, + /client/proc/callproc_datum, + /client/proc/SDQL2_query, + /client/proc/Jump, + /client/proc/jumptomob, + /client/proc/jumptocoord, + /client/proc/dsay, + /client/proc/toggle_debug_logs, + /client/proc/admin_ghost, //allows us to ghost/reenter body at will, + /datum/admins/proc/view_runtimes, + // /client/proc/show_gm_status, // VOREStation Edit - We don't use SSgame_master yet. + /datum/admins/proc/change_weather, + /datum/admins/proc/change_time, + /client/proc/admin_give_modifier, + /client/proc/simple_DPS, + /datum/admins/proc/view_feedback + ) + +var/list/admin_verbs_paranoid_debug = list( + /client/proc/callproc, + /client/proc/callproc_datum, + /client/proc/debug_controller + ) + +var/list/admin_verbs_possess = list( + /proc/possess, + /proc/release + ) +var/list/admin_verbs_permissions = list( + /client/proc/edit_admin_permissions + ) +var/list/admin_verbs_rejuv = list( + /client/proc/respawn_character + ) + +//verbs which can be hidden - needs work +var/list/admin_verbs_hideable = list( + /client/proc/deadmin_self, +// /client/proc/deadchat, + /datum/admins/proc/show_traitor_panel, + /datum/admins/proc/toggleenter, + /datum/admins/proc/toggleguests, + /datum/admins/proc/announce, + /client/proc/colorooc, + /client/proc/admin_ghost, + /client/proc/toggle_view_range, + /datum/admins/proc/view_txt_log, + /datum/admins/proc/view_atk_log, + /client/proc/cmd_admin_subtle_message, + /client/proc/cmd_admin_check_contents, + /client/proc/cmd_admin_check_player_logs, + /client/proc/cmd_admin_check_dialogue_logs, + /datum/admins/proc/access_news_network, + /client/proc/admin_call_shuttle, + /client/proc/admin_cancel_shuttle, + /client/proc/cmd_admin_direct_narrate, + /client/proc/cmd_admin_world_narrate, + /client/proc/check_words, + /client/proc/play_local_sound, + /client/proc/play_sound, + /client/proc/play_server_sound, + /client/proc/object_talk, + /datum/admins/proc/cmd_admin_dress, + /client/proc/cmd_admin_gib_self, + /client/proc/drop_bomb, + /client/proc/cinematic, + /datum/admins/proc/toggle_aliens, + /datum/admins/proc/toggle_space_ninja, + /client/proc/cmd_admin_add_freeform_ai_law, + /client/proc/cmd_admin_add_random_ai_law, + /client/proc/cmd_admin_create_centcom_report, + /client/proc/make_sound, + /client/proc/toggle_random_events, + /client/proc/cmd_admin_add_random_ai_law, + /client/proc/Set_Holiday, + /client/proc/ToRban, + /datum/admins/proc/startnow, + /datum/admins/proc/restart, + /datum/admins/proc/delay, + /datum/admins/proc/toggleaban, + /client/proc/toggle_log_hrefs, + /datum/admins/proc/immreboot, + /client/proc/everyone_random, + /datum/admins/proc/toggleAI, + /datum/admins/proc/adrev, + /datum/admins/proc/adspawn, + /datum/admins/proc/adjump, + /client/proc/restart_controller, + /client/proc/cmd_admin_list_open_jobs, + /client/proc/callproc, + /client/proc/callproc_datum, + /client/proc/Debug2, + /client/proc/reload_admins, + /client/proc/kill_air, + /client/proc/cmd_debug_make_powernets, + /client/proc/kill_airgroup, + /client/proc/debug_controller, + /client/proc/startSinglo, + /client/proc/simple_DPS, + /client/proc/cmd_debug_mob_lists, + /client/proc/cmd_debug_using_map, + /client/proc/cmd_debug_del_all, + /client/proc/cmd_debug_tog_aliens, + /client/proc/cmd_display_del_log, + /client/proc/air_report, + /client/proc/enable_debug_verbs, + /client/proc/roll_dices, + /proc/possess, + /proc/release, + /datum/admins/proc/set_tcrystals + ) +var/list/admin_verbs_mod = list( + /client/proc/cmd_admin_pm_context, //right-click adminPM interface, + /client/proc/cmd_admin_pm_panel, //admin-pm list, + /client/proc/debug_variables, //allows us to -see- the variables of any instance in the game., + /datum/admins/proc/PlayerNotes, + /client/proc/admin_ghost, //allows us to ghost/reenter body at will, + /client/proc/cmd_mod_say, + /client/proc/cmd_event_say, + /datum/admins/proc/show_player_info, + /datum/admins/proc/show_traitor_panel, + /client/proc/colorooc, + /client/proc/player_panel_new, + /client/proc/dsay, + /datum/admins/proc/show_skills, + /datum/admins/proc/show_player_panel, + /client/proc/check_antagonists, + /client/proc/aooc, + /client/proc/jobbans, + /client/proc/toggle_attack_logs, + /client/proc/cmd_admin_subtle_message, //send an message to somebody as a 'voice in their head', + /datum/admins/proc/paralyze_mob, + /client/proc/cmd_admin_direct_narrate, + /client/proc/allow_character_respawn, // Allows a ghost to respawn , + /datum/admins/proc/sendFax, + /client/proc/getserverlog, //allows us to fetch server logs (diary) for other days, + /datum/admins/proc/view_txt_log, //shows the server log (diary) for today, + /datum/admins/proc/view_atk_log //shows the server combat-log, doesn't do anything presently, +) + +var/list/admin_verbs_event_manager = list( + /client/proc/cmd_event_say, + /client/proc/cmd_admin_pm_context, + /client/proc/cmd_admin_pm_panel, + /client/proc/admin_ghost, + /datum/admins/proc/show_player_info, + /client/proc/dsay, + /client/proc/cmd_admin_subtle_message, + /client/proc/debug_variables, + /client/proc/check_antagonists, + /client/proc/aooc, + /datum/admins/proc/paralyze_mob, + /client/proc/cmd_admin_direct_narrate, + /client/proc/allow_character_respawn, + /datum/admins/proc/sendFax, + /client/proc/respawn_character, + /proc/possess, + /proc/release, + /datum/admins/proc/change_weather, + /datum/admins/proc/change_time, + /client/proc/admin_give_modifier, + /client/proc/Jump, + /client/proc/jumptomob, + /client/proc/jumptocoord, + /client/proc/cmd_admin_delete, + /datum/admins/proc/delay, + /client/proc/Set_Holiday, + /client/proc/make_sound, + /client/proc/toggle_random_events, + /datum/admins/proc/cmd_admin_dress, + /client/proc/cmd_admin_gib_self, + /client/proc/drop_bomb, + /client/proc/cmd_admin_add_freeform_ai_law, + /client/proc/cmd_admin_add_random_ai_law, + /client/proc/make_sound, + /client/proc/toggle_random_events, + /client/proc/editappear, + /client/proc/roll_dices, + /datum/admins/proc/call_supply_drop, + /datum/admins/proc/call_drop_pod, + /datum/admins/proc/PlayerNotes, + /client/proc/callproc, + /client/proc/callproc_datum, + /client/proc/debug_controller, + // /client/proc/show_gm_status, // VOREStation Edit - We don't use SSgame_master yet. + /datum/admins/proc/change_weather, + /datum/admins/proc/change_time, + /client/proc/admin_give_modifier, + /datum/admins/proc/cmd_admin_dress, + /client/proc/cmd_admin_gib_self, + /datum/admins/proc/set_tcrystals, + /datum/admins/proc/add_tcrystals, + /client/proc/invisimin, //allows our mob to go invisible/visible, + /datum/admins/proc/show_traitor_panel, //interface which shows a mob's mind., + /datum/admins/proc/show_game_mode, //Configuration window for the current game mode., + /datum/admins/proc/force_mode_latespawn, //Force the mode to try a latespawn proc, + /datum/admins/proc/force_antag_latespawn, //Force a specific template to try a latespawn proc, + /datum/admins/proc/announce, //priority announce something to all clients., + /datum/admins/proc/intercom, //send a fake intercom message, like an arrivals announcement, + /datum/admins/proc/intercom_convo, //send a fake intercom conversation, like an ATC exchange, + /client/proc/colorooc, //allows us to set a custom colour for everythign we say in ooc, + /client/proc/admin_ghost, //allows us to ghost/reenter body at will, + /client/proc/toggle_view_range, //changes how far we can see, + /client/proc/cmd_admin_pm_context, //right-click adminPM interface, + /client/proc/cmd_admin_pm_panel, //admin-pm list, + /client/proc/cmd_admin_subtle_message, //send an message to somebody as a 'voice in their head', + /client/proc/cmd_admin_delete, //delete an instance/object/mob/etc, + /client/proc/cmd_admin_check_contents, //displays the contents of an instance, + /client/proc/cmd_admin_check_player_logs, //checks a player's attack logs, + /client/proc/cmd_admin_check_dialogue_logs, //checks a player's dialogue logs, + /datum/admins/proc/access_news_network, //allows access of newscasters, + /client/proc/jumptocoord, //we ghost and jump to a coordinate, + /client/proc/Getmob, //teleports a mob to our location, + /client/proc/Getkey, //teleports a mob with a certain ckey to our location, + /client/proc/Jump, + /client/proc/jumptokey, //allows us to jump to the location of a mob with a certain ckey, + /client/proc/jumptomob, //allows us to jump to a specific mob, + /client/proc/jumptoturf, //allows us to jump to a specific turf, + /client/proc/admin_call_shuttle, //allows us to call the emergency shuttle, + /client/proc/admin_cancel_shuttle, //allows us to cancel the emergency shuttle, sending it back to CentCom, + /client/proc/cmd_admin_direct_narrate, //send text directly to a player with no padding. Useful for narratives and fluff-text, + /client/proc/cmd_admin_world_narrate, //sends text to all players with no padding, + /client/proc/cmd_admin_create_centcom_report, + /client/proc/check_words, //displays cult-words, + /client/proc/check_ai_laws, //shows AI and borg laws, + /client/proc/rename_silicon, //properly renames silicons, + /client/proc/manage_silicon_laws, // Allows viewing and editing silicon laws. , + /client/proc/check_antagonists, + /client/proc/admin_memo, //admin memo system. show/delete/write. +SERVER needed to delete admin memos of others, + /client/proc/dsay, //talk in deadchat using our ckey/fakekey, + /client/proc/secrets, + /client/proc/game_panel, //game panel, allows to change game-mode etc, + /client/proc/cmd_mod_say, + /client/proc/cmd_event_say, + /datum/admins/proc/show_player_info, + /client/proc/free_slot, //frees slot for chosen job, + /client/proc/cmd_admin_change_custom_event, + /client/proc/cmd_admin_rejuvenate, + /client/proc/toggleghostwriters, + /datum/admins/proc/show_skills, + /client/proc/man_up, + /client/proc/global_man_up, + /client/proc/response_team, // Response Teams admin verb, + /client/proc/trader_ship, // Trader ship admin verb, + /client/proc/allow_character_respawn, // Allows a ghost to respawn , + /client/proc/event_manager_panel, + /client/proc/aooc, + /client/proc/change_human_appearance_admin, // Allows an admin to change the basic appearance of human-based mobs , + /client/proc/change_human_appearance_self, // Allows the human-based mob itself change its basic appearance , + /client/proc/change_security_level, + /client/proc/makePAI, + /client/proc/toggle_debug_logs, + /client/proc/toggle_attack_logs, + /datum/admins/proc/paralyze_mob, + /client/proc/fixatmos, + /datum/admins/proc/sendFax, + /client/proc/despawn_player, + /datum/admins/proc/view_feedback, + /datum/admins/proc/capture_map, + /client/proc/Set_Holiday, + /datum/admins/proc/startnow, + /datum/admins/proc/restart, + /datum/admins/proc/delay, + /client/proc/cmd_mod_say, + /datum/admins/proc/immreboot, + /client/proc/everyone_random, + /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/add_admin_verbs() + if(holder) + verbs += admin_verbs_default + if(holder.rights & R_BUILDMODE) verbs += /client/proc/togglebuildmodeself + if(holder.rights & R_ADMIN) verbs += admin_verbs_admin + if(holder.rights & R_BAN) verbs += admin_verbs_ban + if(holder.rights & R_FUN) verbs += admin_verbs_fun + if(holder.rights & R_SERVER) verbs += admin_verbs_server + if(holder.rights & R_DEBUG) + verbs += admin_verbs_debug + if(config.debugparanoid && !(holder.rights & R_ADMIN)) + verbs.Remove(admin_verbs_paranoid_debug) //Right now it's just callproc but we can easily add others later on. + if(holder.rights & R_POSSESS) verbs += admin_verbs_possess + if(holder.rights & R_PERMISSIONS) verbs += admin_verbs_permissions + if(holder.rights & R_STEALTH) verbs += /client/proc/stealth + if(holder.rights & R_REJUVINATE) verbs += admin_verbs_rejuv + if(holder.rights & R_SOUNDS) verbs += admin_verbs_sounds + if(holder.rights & R_SPAWN) verbs += admin_verbs_spawn + if(holder.rights & R_MOD) verbs += admin_verbs_mod + if(holder.rights & R_EVENT) verbs += admin_verbs_event_manager + +/client/proc/remove_admin_verbs() + verbs.Remove( + admin_verbs_default, + /client/proc/togglebuildmodeself, + admin_verbs_admin, + admin_verbs_ban, + admin_verbs_fun, + admin_verbs_server, + admin_verbs_debug, + admin_verbs_possess, + admin_verbs_permissions, + /client/proc/stealth, + admin_verbs_rejuv, + admin_verbs_sounds, + admin_verbs_spawn, + debug_verbs + ) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 257b47b431..c47fa3a190 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -1,537 +1,3 @@ -//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless -var/list/admin_verbs_default = list( - /datum/admins/proc/show_player_panel, //shows an interface for individual players, with various links (links require additional flags, - /client/proc/player_panel_new, //shows an interface for all players, with links to various panels, - /client/proc/player_panel, - /client/proc/deadmin_self, //destroys our own admin datum so we can play as a regular player, - /client/proc/hide_verbs, //hides all our adminverbs, - /client/proc/hide_most_verbs, //hides all our hideable adminverbs, - /client/proc/debug_variables, //allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify, - /client/proc/mark_datum_mapview, - /client/proc/cmd_check_new_players, //allows us to see every new player -// /client/proc/check_antagonists, //shows all antags, -// /client/proc/cmd_mod_say, -// /client/proc/deadchat //toggles deadchat on/off, -// /client/proc/toggle_ahelp_sound, - ) - -var/list/admin_verbs_admin = list( - /datum/admins/proc/set_tcrystals, - /datum/admins/proc/add_tcrystals, - /client/proc/invisimin, //allows our mob to go invisible/visible, - /datum/admins/proc/show_traitor_panel, //interface which shows a mob's mind., - /datum/admins/proc/show_game_mode, //Configuration window for the current game mode., - /datum/admins/proc/force_mode_latespawn, //Force the mode to try a latespawn proc, - /datum/admins/proc/force_antag_latespawn, //Force a specific template to try a latespawn proc, - /datum/admins/proc/toggleenter, //toggles whether people can join the current game, - /datum/admins/proc/toggleguests, //toggles whether guests can join the current game, - /datum/admins/proc/announce, //priority announce something to all clients., - /datum/admins/proc/intercom, //send a fake intercom message, like an arrivals announcement, - /datum/admins/proc/intercom_convo, //send a fake intercom conversation, like an ATC exchange, - /client/proc/colorooc, //allows us to set a custom colour for everythign we say in ooc, - /client/proc/admin_ghost, //allows us to ghost/reenter body at will, - /client/proc/toggle_view_range, //changes how far we can see, - /datum/admins/proc/view_txt_log, //shows the server log (diary) for today, - /datum/admins/proc/view_atk_log, //shows the server combat-log, doesn't do anything presently, - /client/proc/cmd_admin_pm_context, //right-click adminPM interface, - /client/proc/cmd_admin_pm_panel, //admin-pm list, - /client/proc/cmd_admin_subtle_message, //send an message to somebody as a 'voice in their head', - /client/proc/cmd_admin_delete, //delete an instance/object/mob/etc, - /client/proc/cmd_admin_check_contents, //displays the contents of an instance, - /client/proc/cmd_admin_check_player_logs, //checks a player's attack logs, - /client/proc/cmd_admin_check_dialogue_logs, //checks a player's dialogue logs, - /datum/admins/proc/access_news_network, //allows access of newscasters, - /client/proc/giveruntimelog, //allows us to give access to runtime logs to somebody, - /client/proc/getserverlog, //allows us to fetch server logs (diary) for other days, - /client/proc/jumptocoord, //we ghost and jump to a coordinate, - /client/proc/Getmob, //teleports a mob to our location, - /client/proc/Getkey, //teleports a mob with a certain ckey to our location, - /client/proc/SetCKey, //set the ckey of a mob -// /client/proc/sendmob, //sends a mob somewhere, -Removed due to it needing two sorting procs to work, which were executed every time an admin right-clicked. ~Errorage, - /client/proc/Jump, - /client/proc/jumptokey, //allows us to jump to the location of a mob with a certain ckey, - /client/proc/jumptomob, //allows us to jump to a specific mob, - /client/proc/jumptoturf, //allows us to jump to a specific turf, - /client/proc/admin_call_shuttle, //allows us to call the emergency shuttle, - /client/proc/admin_cancel_shuttle, //allows us to cancel the emergency shuttle, sending it back to CentCom, - /client/proc/cmd_admin_direct_narrate, //send text directly to a player with no padding. Useful for narratives and fluff-text, - /client/proc/cmd_admin_world_narrate, //sends text to all players with no padding, - /client/proc/cmd_admin_create_centcom_report, - /client/proc/check_words, //displays cult-words, - /client/proc/check_ai_laws, //shows AI and borg laws, - /client/proc/rename_silicon, //properly renames silicons, - /client/proc/manage_silicon_laws, // Allows viewing and editing silicon laws. , - /client/proc/check_antagonists, - /client/proc/admin_memo, //admin memo system. show/delete/write. +SERVER needed to delete admin memos of others, - /client/proc/dsay, //talk in deadchat using our ckey/fakekey, -// /client/proc/toggle_hear_deadcast, //toggles whether we hear deadchat, - /client/proc/investigate_show, //various admintools for investigation. Such as a singulo grief-log, - /client/proc/secrets, - /datum/admins/proc/toggleooc, //toggles ooc on/off for everyone, - /datum/admins/proc/togglelooc, //toggles looc on/off for everyone, - /datum/admins/proc/toggleoocdead, //toggles ooc on/off for everyone who is dead, - /datum/admins/proc/togglehubvisibility, //toggles visibility on the BYOND Hub., - /datum/admins/proc/toggledsay, //toggles dsay on/off for everyone, - /client/proc/game_panel, //game panel, allows to change game-mode etc, - /client/proc/cmd_admin_say, //admin-only ooc chat, - /client/proc/cmd_mod_say, - /client/proc/cmd_event_say, - /datum/admins/proc/PlayerNotes, - /datum/admins/proc/show_player_info, - /client/proc/free_slot, //frees slot for chosen job, - /client/proc/cmd_admin_change_custom_event, - /client/proc/cmd_admin_rejuvenate, - /client/proc/toggleghostwriters, - /client/proc/toggledrones, - /datum/admins/proc/show_skills, - /client/proc/check_customitem_activity, - /client/proc/man_up, - /client/proc/global_man_up, - /client/proc/response_team, // Response Teams admin verb, - /client/proc/trader_ship, // Trader ship admin verb, - /client/proc/toggle_antagHUD_use, - /client/proc/toggle_antagHUD_restrictions, - /client/proc/allow_character_respawn, // Allows a ghost to respawn , - /client/proc/event_manager_panel, - /client/proc/empty_ai_core_toggle_latejoin, - /client/proc/empty_ai_core_toggle_latejoin, - /client/proc/aooc, - /client/proc/change_human_appearance_admin, // Allows an admin to change the basic appearance of human-based mobs , - /client/proc/change_human_appearance_self, // Allows the human-based mob itself change its basic appearance , - /client/proc/change_security_level, - /client/proc/view_chemical_reaction_logs, - /client/proc/makePAI, - /client/proc/toggle_debug_logs, - /client/proc/toggle_attack_logs, - /datum/admins/proc/paralyze_mob, - /client/proc/fixatmos, - /datum/admins/proc/quick_nif, //VOREStation Add, - /datum/admins/proc/sendFax, - /client/proc/despawn_player, - /datum/admins/proc/view_feedback - ) - -var/list/admin_verbs_ban = list( - /client/proc/unban_panel, - /client/proc/jobbans - ) - -var/list/admin_verbs_sounds = list( - /client/proc/play_local_sound, - /client/proc/play_sound, - /client/proc/play_server_sound - ) - -var/list/admin_verbs_fun = list( - /client/proc/object_talk, - /datum/admins/proc/cmd_admin_dress, - /client/proc/cmd_admin_gib_self, - /client/proc/drop_bomb, - /client/proc/everyone_random, - /client/proc/cinematic, - /datum/admins/proc/toggle_aliens, - /datum/admins/proc/toggle_space_ninja, - /client/proc/cmd_admin_add_freeform_ai_law, - /client/proc/cmd_admin_add_random_ai_law, - /client/proc/make_sound, - /client/proc/toggle_random_events, - /client/proc/editappear, - /client/proc/roll_dices, - /datum/admins/proc/call_supply_drop, - /datum/admins/proc/call_drop_pod, - /client/proc/smite_vr, //VOREStation Add, - /client/proc/smite, - /client/proc/admin_lightning_strike, - ) - -var/list/admin_verbs_spawn = list( - /datum/admins/proc/spawn_fruit, - /datum/admins/proc/spawn_custom_item, - /datum/admins/proc/check_custom_items, - /datum/admins/proc/spawn_plant, - /datum/admins/proc/spawn_atom, //allows us to spawn instances, - /client/proc/respawn_character, - /client/proc/spawn_character_mob, //VOREStation Add, - /client/proc/virus2_editor, - /client/proc/spawn_chemdisp_cartridge, - /client/proc/map_template_load, - /client/proc/map_template_upload, - /client/proc/map_template_load_on_new_z - ) - -var/list/admin_verbs_server = list( - /datum/admins/proc/capture_map, - /client/proc/Set_Holiday, - /client/proc/ToRban, - /datum/admins/proc/startnow, - /datum/admins/proc/restart, - /datum/admins/proc/delay, - /datum/admins/proc/toggleaban, - /client/proc/cmd_mod_say, - /client/proc/toggle_log_hrefs, - /datum/admins/proc/immreboot, - /client/proc/everyone_random, - /datum/admins/proc/toggleAI, - /client/proc/cmd_admin_delete, //delete an instance/object/mob/etc, - /client/proc/cmd_debug_del_all, - /datum/admins/proc/adrev, - /datum/admins/proc/adspawn, - /datum/admins/proc/adjump, - /datum/admins/proc/toggle_aliens, - /datum/admins/proc/toggle_space_ninja, - /client/proc/toggle_random_events, - /client/proc/check_customitem_activity, - /client/proc/nanomapgen_DumpImage, - /client/proc/modify_server_news, - /client/proc/recipe_dump, - /client/proc/panicbunker, - /client/proc/paranoia_logging, - /client/proc/ip_reputation - ) - -var/list/admin_verbs_debug = list( - /client/proc/getruntimelog, //allows us to access runtime logs to somebody, - /client/proc/cmd_admin_list_open_jobs, - /client/proc/Debug2, - /client/proc/kill_air, - /client/proc/ZASSettings, - /client/proc/cmd_debug_make_powernets, - /client/proc/kill_airgroup, - /client/proc/debug_controller, - /client/proc/debug_antagonist_template, - /client/proc/cmd_debug_mob_lists, - /client/proc/cmd_debug_using_map, - /client/proc/cmd_admin_delete, - /client/proc/cmd_debug_del_all, - /client/proc/cmd_debug_tog_aliens, - /client/proc/cmd_display_del_log, - /client/proc/cmd_display_init_log, - /client/proc/cmd_display_overlay_log, - /client/proc/air_report, - /client/proc/reload_admins, - /client/proc/reload_eventMs, - /client/proc/restart_controller, - /datum/admins/proc/restart, - /client/proc/print_random_map, - /client/proc/create_random_map, - /client/proc/apply_random_map, - /client/proc/overlay_random_map, - /client/proc/delete_random_map, - /client/proc/show_plant_genes, - /client/proc/enable_debug_verbs, - /client/proc/callproc, - /client/proc/callproc_datum, - /client/proc/SDQL2_query, - /client/proc/Jump, - /client/proc/debug_rogueminer, - /client/proc/jumptomob, - /client/proc/jumptocoord, - /client/proc/dsay, - /client/proc/toggle_debug_logs, - /client/proc/admin_ghost, //allows us to ghost/reenter body at will, - /datum/admins/proc/view_runtimes, - // /client/proc/show_gm_status, // VOREStation Edit - We don't use SSgame_master yet. - /datum/admins/proc/change_weather, - /datum/admins/proc/change_time, - /client/proc/admin_give_modifier, - /client/proc/simple_DPS, - /datum/admins/proc/view_feedback - ) - -var/list/admin_verbs_paranoid_debug = list( - /client/proc/callproc, - /client/proc/callproc_datum, - /client/proc/debug_controller - ) - -var/list/admin_verbs_possess = list( - /proc/possess, - /proc/release - ) -var/list/admin_verbs_permissions = list( - /client/proc/edit_admin_permissions - ) -var/list/admin_verbs_rejuv = list( - /client/proc/respawn_character - ) - -//verbs which can be hidden - needs work -var/list/admin_verbs_hideable = list( - /client/proc/deadmin_self, -// /client/proc/deadchat, - /datum/admins/proc/show_traitor_panel, - /datum/admins/proc/toggleenter, - /datum/admins/proc/toggleguests, - /datum/admins/proc/announce, - /client/proc/colorooc, - /client/proc/admin_ghost, - /client/proc/toggle_view_range, - /datum/admins/proc/view_txt_log, - /datum/admins/proc/view_atk_log, - /client/proc/cmd_admin_subtle_message, - /client/proc/cmd_admin_check_contents, - /client/proc/cmd_admin_check_player_logs, - /client/proc/cmd_admin_check_dialogue_logs, - /datum/admins/proc/access_news_network, - /client/proc/admin_call_shuttle, - /client/proc/admin_cancel_shuttle, - /client/proc/cmd_admin_direct_narrate, - /client/proc/cmd_admin_world_narrate, - /client/proc/check_words, - /client/proc/play_local_sound, - /client/proc/play_sound, - /client/proc/play_server_sound, - /client/proc/object_talk, - /datum/admins/proc/cmd_admin_dress, - /client/proc/cmd_admin_gib_self, - /client/proc/drop_bomb, - /client/proc/cinematic, - /datum/admins/proc/toggle_aliens, - /datum/admins/proc/toggle_space_ninja, - /client/proc/cmd_admin_add_freeform_ai_law, - /client/proc/cmd_admin_add_random_ai_law, - /client/proc/cmd_admin_create_centcom_report, - /client/proc/make_sound, - /client/proc/toggle_random_events, - /client/proc/cmd_admin_add_random_ai_law, - /client/proc/Set_Holiday, - /client/proc/ToRban, - /datum/admins/proc/startnow, - /datum/admins/proc/restart, - /datum/admins/proc/delay, - /datum/admins/proc/toggleaban, - /client/proc/toggle_log_hrefs, - /datum/admins/proc/immreboot, - /client/proc/everyone_random, - /datum/admins/proc/toggleAI, - /datum/admins/proc/adrev, - /datum/admins/proc/adspawn, - /datum/admins/proc/adjump, - /client/proc/restart_controller, - /client/proc/cmd_admin_list_open_jobs, - /client/proc/callproc, - /client/proc/callproc_datum, - /client/proc/Debug2, - /client/proc/reload_admins, - /client/proc/kill_air, - /client/proc/cmd_debug_make_powernets, - /client/proc/kill_airgroup, - /client/proc/debug_controller, - /client/proc/startSinglo, - /client/proc/simple_DPS, - /client/proc/cmd_debug_mob_lists, - /client/proc/cmd_debug_using_map, - /client/proc/cmd_debug_del_all, - /client/proc/cmd_debug_tog_aliens, - /client/proc/cmd_display_del_log, - /client/proc/air_report, - /client/proc/enable_debug_verbs, - /client/proc/roll_dices, - /proc/possess, - /proc/release, - /datum/admins/proc/set_tcrystals - ) -var/list/admin_verbs_mod = list( - /client/proc/cmd_admin_pm_context, //right-click adminPM interface, - /client/proc/cmd_admin_pm_panel, //admin-pm list, - /client/proc/debug_variables, //allows us to -see- the variables of any instance in the game., - /datum/admins/proc/PlayerNotes, - /client/proc/admin_ghost, //allows us to ghost/reenter body at will, - /client/proc/cmd_mod_say, - /client/proc/cmd_event_say, - /datum/admins/proc/show_player_info, - /datum/admins/proc/show_traitor_panel, - /client/proc/colorooc, - /client/proc/player_panel_new, - /client/proc/dsay, - /datum/admins/proc/show_skills, - /datum/admins/proc/show_player_panel, - /client/proc/check_antagonists, - /client/proc/aooc, - /client/proc/jobbans, - /client/proc/toggle_attack_logs, - /client/proc/cmd_admin_subtle_message, //send an message to somebody as a 'voice in their head', - /datum/admins/proc/paralyze_mob, - /client/proc/cmd_admin_direct_narrate, - /client/proc/allow_character_respawn, // Allows a ghost to respawn , - /datum/admins/proc/sendFax, - /client/proc/getserverlog, //allows us to fetch server logs (diary) for other days, - /datum/admins/proc/view_txt_log, //shows the server log (diary) for today, - /datum/admins/proc/view_atk_log //shows the server combat-log, doesn't do anything presently, -) - -var/list/admin_verbs_event_manager = list( - /client/proc/cmd_admin_say, //VOREStation Edit - Event managers can use asay, - /client/proc/cmd_admin_pm_context, - /client/proc/cmd_admin_pm_panel, - /client/proc/admin_ghost, - /datum/admins/proc/show_player_info, - /client/proc/dsay, - /client/proc/cmd_admin_subtle_message, - /client/proc/debug_variables, - /client/proc/check_antagonists, - /client/proc/aooc, - /datum/admins/proc/paralyze_mob, - /client/proc/cmd_admin_direct_narrate, - /client/proc/allow_character_respawn, - /datum/admins/proc/sendFax, - /client/proc/respawn_character, - /proc/possess, - /proc/release, - /datum/admins/proc/change_weather, - /datum/admins/proc/change_time, - /client/proc/admin_give_modifier, - /client/proc/Jump, - /client/proc/jumptomob, - /client/proc/jumptocoord, - /client/proc/cmd_admin_delete, - /datum/admins/proc/delay, - /client/proc/Set_Holiday, - /client/proc/make_sound, - /client/proc/toggle_random_events, - /datum/admins/proc/cmd_admin_dress, - /client/proc/cmd_admin_gib_self, - /client/proc/drop_bomb, - /client/proc/cmd_admin_add_freeform_ai_law, - /client/proc/cmd_admin_add_random_ai_law, - /client/proc/make_sound, - /client/proc/toggle_random_events, - /client/proc/editappear, - /client/proc/roll_dices, - /datum/admins/proc/call_supply_drop, - /datum/admins/proc/call_drop_pod, - /datum/admins/proc/PlayerNotes, - /client/proc/callproc, - /client/proc/callproc_datum, - /client/proc/debug_controller, - // /client/proc/show_gm_status, // VOREStation Edit - We don't use SSgame_master yet. - /datum/admins/proc/change_weather, - /datum/admins/proc/change_time, - /client/proc/admin_give_modifier, - /datum/admins/proc/cmd_admin_dress, - /client/proc/cmd_admin_gib_self, - /datum/admins/proc/set_tcrystals, - /datum/admins/proc/add_tcrystals, - /client/proc/invisimin, //allows our mob to go invisible/visible, - /datum/admins/proc/show_traitor_panel, //interface which shows a mob's mind., - /datum/admins/proc/show_game_mode, //Configuration window for the current game mode., - /datum/admins/proc/force_mode_latespawn, //Force the mode to try a latespawn proc, - /datum/admins/proc/force_antag_latespawn, //Force a specific template to try a latespawn proc, - /datum/admins/proc/announce, //priority announce something to all clients., - /datum/admins/proc/intercom, //send a fake intercom message, like an arrivals announcement, - /datum/admins/proc/intercom_convo, //send a fake intercom conversation, like an ATC exchange, - /client/proc/colorooc, //allows us to set a custom colour for everythign we say in ooc, - /client/proc/admin_ghost, //allows us to ghost/reenter body at will, - /client/proc/toggle_view_range, //changes how far we can see, - /client/proc/cmd_admin_pm_context, //right-click adminPM interface, - /client/proc/cmd_admin_pm_panel, //admin-pm list, - /client/proc/cmd_admin_subtle_message, //send an message to somebody as a 'voice in their head', - /client/proc/cmd_admin_delete, //delete an instance/object/mob/etc, - /client/proc/cmd_admin_check_contents, //displays the contents of an instance, - /client/proc/cmd_admin_check_player_logs, //checks a player's attack logs, - /client/proc/cmd_admin_check_dialogue_logs, //checks a player's dialogue logs, - /datum/admins/proc/access_news_network, //allows access of newscasters, - /client/proc/jumptocoord, //we ghost and jump to a coordinate, - /client/proc/Getmob, //teleports a mob to our location, - /client/proc/Getkey, //teleports a mob with a certain ckey to our location, - /client/proc/Jump, - /client/proc/jumptokey, //allows us to jump to the location of a mob with a certain ckey, - /client/proc/jumptomob, //allows us to jump to a specific mob, - /client/proc/jumptoturf, //allows us to jump to a specific turf, - /client/proc/admin_call_shuttle, //allows us to call the emergency shuttle, - /client/proc/admin_cancel_shuttle, //allows us to cancel the emergency shuttle, sending it back to CentCom, - /client/proc/cmd_admin_direct_narrate, //send text directly to a player with no padding. Useful for narratives and fluff-text, - /client/proc/cmd_admin_world_narrate, //sends text to all players with no padding, - /client/proc/cmd_admin_create_centcom_report, - /client/proc/check_words, //displays cult-words, - /client/proc/check_ai_laws, //shows AI and borg laws, - /client/proc/rename_silicon, //properly renames silicons, - /client/proc/manage_silicon_laws, // Allows viewing and editing silicon laws. , - /client/proc/check_antagonists, - /client/proc/admin_memo, //admin memo system. show/delete/write. +SERVER needed to delete admin memos of others, - /client/proc/dsay, //talk in deadchat using our ckey/fakekey, - /client/proc/secrets, - /client/proc/game_panel, //game panel, allows to change game-mode etc, - /client/proc/cmd_mod_say, - /client/proc/cmd_event_say, - /datum/admins/proc/show_player_info, - /client/proc/free_slot, //frees slot for chosen job, - /client/proc/cmd_admin_change_custom_event, - /client/proc/cmd_admin_rejuvenate, - /client/proc/toggleghostwriters, - /datum/admins/proc/show_skills, - /client/proc/man_up, - /client/proc/global_man_up, - /client/proc/response_team, // Response Teams admin verb, - /client/proc/trader_ship, // Trader ship admin verb, - /client/proc/allow_character_respawn, // Allows a ghost to respawn , - /client/proc/event_manager_panel, - /client/proc/aooc, - /client/proc/change_human_appearance_admin, // Allows an admin to change the basic appearance of human-based mobs , - /client/proc/change_human_appearance_self, // Allows the human-based mob itself change its basic appearance , - /client/proc/change_security_level, - /client/proc/makePAI, - /client/proc/toggle_debug_logs, - /client/proc/toggle_attack_logs, - /datum/admins/proc/paralyze_mob, - /client/proc/fixatmos, - /datum/admins/proc/sendFax, - /client/proc/despawn_player, - /datum/admins/proc/view_feedback, - /datum/admins/proc/capture_map, - /client/proc/Set_Holiday, - /datum/admins/proc/startnow, - /datum/admins/proc/restart, - /datum/admins/proc/delay, - /client/proc/cmd_mod_say, - /datum/admins/proc/immreboot, - /client/proc/everyone_random, - /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/add_admin_verbs() - if(holder) - control_freak = CONTROL_FREAK_SKIN | CONTROL_FREAK_MACROS - verbs += admin_verbs_default - if(holder.rights & R_BUILDMODE) verbs += /client/proc/togglebuildmodeself - if(holder.rights & R_ADMIN) verbs += admin_verbs_admin - if(holder.rights & R_BAN) verbs += admin_verbs_ban - if(holder.rights & R_FUN) verbs += admin_verbs_fun - if(holder.rights & R_SERVER) verbs += admin_verbs_server - if(holder.rights & R_DEBUG) - verbs += admin_verbs_debug - if(config.debugparanoid && !(holder.rights & R_ADMIN)) - verbs.Remove(admin_verbs_paranoid_debug) //Right now it's just callproc but we can easily add others later on. - if(holder.rights & R_POSSESS) verbs += admin_verbs_possess - if(holder.rights & R_PERMISSIONS) verbs += admin_verbs_permissions - if(holder.rights & R_STEALTH) verbs += /client/proc/stealth - if(holder.rights & R_REJUVINATE) verbs += admin_verbs_rejuv - if(holder.rights & R_SOUNDS) verbs += admin_verbs_sounds - if(holder.rights & R_SPAWN) verbs += admin_verbs_spawn - if(holder.rights & R_MOD) verbs += admin_verbs_mod - if(holder.rights & R_EVENT) verbs += admin_verbs_event_manager - -/client/proc/remove_admin_verbs() - verbs.Remove( - admin_verbs_default, - /client/proc/togglebuildmodeself, - admin_verbs_admin, - admin_verbs_ban, - admin_verbs_fun, - admin_verbs_server, - admin_verbs_debug, - admin_verbs_possess, - admin_verbs_permissions, - /client/proc/stealth, - admin_verbs_rejuv, - admin_verbs_sounds, - admin_verbs_spawn, - debug_verbs - ) - /client/proc/hide_most_verbs()//Allows you to keep some functionality while hiding some verbs set name = "Adminverbs - Hide Most" set category = "Admin" @@ -539,7 +5,7 @@ var/list/admin_verbs_event_manager = list( verbs.Remove(/client/proc/hide_most_verbs, admin_verbs_hideable) verbs += /client/proc/show_verbs - to_chat(src, "Most of your adminverbs have been hidden.") + to_chat(src, "Most of your adminverbs have been hidden.") feedback_add_details("admin_verb","HMV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return @@ -550,7 +16,7 @@ var/list/admin_verbs_event_manager = list( remove_admin_verbs() verbs += /client/proc/show_verbs - to_chat(src, "Almost all of your adminverbs have been hidden.") + to_chat(src, "Almost all of your adminverbs have been hidden.") feedback_add_details("admin_verb","TAVVH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return @@ -561,7 +27,7 @@ var/list/admin_verbs_event_manager = list( verbs -= /client/proc/show_verbs add_admin_verbs() - to_chat(src, "All of your adminverbs are now visible.") + to_chat(src, "All of your adminverbs are now visible.") feedback_add_details("admin_verb","TAVVS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -575,13 +41,13 @@ var/list/admin_verbs_event_manager = list( if(ghost.can_reenter_corpse) ghost.reenter_corpse() else - to_chat(ghost, "Error: Aghost: Can't reenter corpse.") + to_chat(ghost, "Error: Aghost: Can't reenter corpse.") return feedback_add_details("admin_verb","P") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! else if(istype(mob,/mob/new_player)) - to_chat(src, "Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first.") + to_chat(src, "Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first.") else //ghostize var/mob/body = mob @@ -600,11 +66,11 @@ var/list/admin_verbs_event_manager = list( if(holder && mob) if(mob.invisibility == INVISIBILITY_OBSERVER) mob.invisibility = initial(mob.invisibility) - to_chat(mob, "Invisimin off. Invisibility reset.") + to_chat(mob, "Invisimin off. Invisibility reset.") mob.alpha = max(mob.alpha + 100, 255) else mob.invisibility = INVISIBILITY_OBSERVER - to_chat(mob, "Invisimin on. You are now as invisible as a ghost.") + to_chat(mob, "Invisimin on. You are now as invisible as a ghost.") mob.alpha = max(mob.alpha - 100, 0) @@ -722,8 +188,7 @@ var/list/admin_verbs_event_manager = list( createStealthKey() if(istype(mob, /mob/new_player)) mob.name = new_key - log_admin("[key_name(usr)] has turned stealth mode [holder.fakekey ? "ON" : "OFF"]") - message_admins("[key_name_admin(usr)] has turned stealth mode [holder.fakekey ? "ON" : "OFF"]", 1) + log_and_message_admins("[key_name(usr)] has turned stealth mode [holder.fakekey ? "ON" : "OFF"]") feedback_add_details("admin_verb","SM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! #define MAX_WARNS 3 @@ -734,7 +199,7 @@ var/list/admin_verbs_event_manager = list( if(!warned_ckey || !istext(warned_ckey)) return if(warned_ckey in admin_datums) - to_chat(usr, "Error: warn(): You can't warn admins.") + to_chat(usr, "Error: warn(): You can't warn admins.") return var/datum/preferences/D @@ -743,14 +208,14 @@ var/list/admin_verbs_event_manager = list( else D = preferences_datums[warned_ckey] if(!D) - to_chat(src, "Error: warn(): No such ckey found.") + to_chat(src, "Error: warn(): No such ckey found.") return if(++D.warns >= MAX_WARNS) //uh ohhhh...you'reee iiiiin trouuuubble O:) ban_unban_log_save("[ckey] warned [warned_ckey], resulting in a [AUTOBANTIME] minute autoban.") if(C) message_admins("[key_name_admin(src)] has warned [key_name_admin(C)] resulting in a [AUTOBANTIME] minute ban.") - to_chat(C, "You have been autobanned due to a warning by [ckey].
This is a temporary ban, it will be removed in [AUTOBANTIME] minutes.
") + to_chat(C, "You have been autobanned due to a warning by [ckey].
This is a temporary ban, it will be removed in [AUTOBANTIME] minutes.
") del(C) else message_admins("[key_name_admin(src)] has warned [warned_ckey] resulting in a [AUTOBANTIME] minute ban.") @@ -758,7 +223,7 @@ var/list/admin_verbs_event_manager = list( feedback_inc("ban_warn",1) else if(C) - to_chat(C, "You have been formally warned by an administrator.
Further warnings will result in an autoban.
") + to_chat(C, "You have been formally warned by an administrator.
Further warnings will result in an autoban.
") message_admins("[key_name_admin(src)] has warned [key_name_admin(C)]. They have [MAX_WARNS-D.warns] strikes remaining.") else message_admins("[key_name_admin(src)] has warned [warned_ckey] (DC). They have [MAX_WARNS-D.warns] strikes remaining.") @@ -881,19 +346,15 @@ var/list/admin_verbs_event_manager = list( if(!msg) return for (var/mob/V in hearers(mob.control_object)) - V.show_message("[mob.control_object.name] says: \"" + msg + "\"", 2) + V.show_message("[mob.control_object.name] says: \"[msg]\"", 2) feedback_add_details("admin_verb","OT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/kill_air() // -- TLE set category = "Debug" set name = "Kill Air" set desc = "Toggle Air Processing" - if(!SSair.can_fire) - SSair.can_fire = TRUE - to_chat(usr, "Enabled air processing.") - else - SSair.can_fire = FALSE - to_chat(usr, "Disabled air processing.") + SSair.can_fire = !SSair.can_fire + to_chat(usr, "[SSair.can_fire ? "En" : "Dis"]abled air processing.") feedback_add_details("admin_verb","KA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] used 'kill air'.") message_admins("[key_name_admin(usr)] used 'kill air'.", 1) @@ -906,7 +367,7 @@ var/list/admin_verbs_event_manager = list( deadmin_holder.reassociate() log_admin("[src] re-admined themself.") message_admins("[src] re-admined themself.", 1) - to_chat(src, "You now have the keys to control the planet, or atleast a small space station") + to_chat(src, "You now have the keys to control the planet, or at least a small space station") verbs -= /client/proc/readmin_self /client/proc/deadmin_self() @@ -918,7 +379,7 @@ var/list/admin_verbs_event_manager = list( log_admin("[src] deadmined themself.") message_admins("[src] deadmined themself.", 1) deadmin() - to_chat(src, "You are now a normal player.") + to_chat(src, "You are now a normal player.") verbs |= /client/proc/readmin_self feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -927,12 +388,8 @@ var/list/admin_verbs_event_manager = list( set category = "Server" if(!holder) return if(config) - if(config.log_hrefs) - config.log_hrefs = 0 - to_chat(src, "Stopped logging hrefs") - else - config.log_hrefs = 1 - to_chat(src, "Started logging hrefs") + config.log_hrefs = !config.log_hrefs + message_admins("[key_name_admin(usr)] [config.log_hrefs ? "started" : "stopped"] logging hrefs") /client/proc/check_ai_laws() set name = "Check AI Laws" @@ -994,7 +451,7 @@ var/list/admin_verbs_event_manager = list( if(!H) return if(!H.client) - to_chat(usr, "Only mobs with clients can alter their own appearance.") + to_chat(usr, " Only mobs with clients can alter their own appearance.") return var/datum/gender/T = gender_datums[H.get_visible_gender()] switch(alert("Do you wish for [H] to be allowed to select non-whitelisted races?","Alter Mob Appearance","Yes","No","Cancel")) @@ -1037,7 +494,7 @@ var/list/admin_verbs_event_manager = list( var/mob/living/carbon/human/M = input("Select mob.", "Edit Appearance") as null|anything in human_mob_list if(!istype(M, /mob/living/carbon/human)) - to_chat(usr, "You can only do this to humans!") + to_chat(usr, "You can only do this to humans!") return switch(alert("Are you sure you wish to edit this mob's appearance? Skrell, Unathi, Tajaran can result in unintended consequences.",,"Yes","No")) if("No") @@ -1125,28 +582,16 @@ var/list/admin_verbs_event_manager = list( set category = "Server" if(!holder) return if(config) - if(config.cult_ghostwriter) - config.cult_ghostwriter = 0 - to_chat(src, "Disallowed ghost writers.") - message_admins("Admin [key_name_admin(usr)] has disabled ghost writers.", 1) - else - config.cult_ghostwriter = 1 - to_chat(src, "Enabled ghost writers.") - message_admins("Admin [key_name_admin(usr)] has enabled ghost writers.", 1) + config.cult_ghostwriter = !config.cult_ghostwriter + message_admins("Admin [key_name_admin(usr)] has [config.cult_ghostwriter ? "en" : "dis"]abled ghost writers.", 1) /client/proc/toggledrones() set name = "Toggle maintenance drones" set category = "Server" if(!holder) return if(config) - if(config.allow_drone_spawn) - config.allow_drone_spawn = 0 - to_chat(src, "Disallowed maint drones.") - message_admins("Admin [key_name_admin(usr)] has disabled maint drones.", 1) - else - config.allow_drone_spawn = 1 - to_chat(src, "Enabled maint drones.") - message_admins("Admin [key_name_admin(usr)] has enabled maint drones.", 1) + config.allow_drone_spawn = !config.allow_drone_spawn + message_admins("Admin [key_name_admin(usr)] has [config.allow_drone_spawn ? "en" : "dis"]abled maintenance drones.", 1) /client/proc/man_up(mob/T as mob in mob_list) set category = "Fun" @@ -1156,8 +601,8 @@ var/list/admin_verbs_event_manager = list( if(alert("Are you sure you want to tell them to man up?","Confirmation","Deal with it","No")=="No") return - to_chat(T, "Man up and deal with it.") - to_chat(T, "Move along.") + to_chat(T, "Man up and deal with it.") + to_chat(T, "Move along.") log_admin("[key_name(usr)] told [key_name(T)] to man up and deal with it.") message_admins("[key_name_admin(usr)] told [key_name(T)] to man up and deal with it.", 1) @@ -1170,7 +615,7 @@ var/list/admin_verbs_event_manager = list( if(alert("Are you sure you want to tell the whole server up?","Confirmation","Deal with it","No")=="No") return for (var/mob/T as mob in mob_list) - to_chat(T, "
Man up.
Deal with it.

Move along.

") + to_chat(T, "
Man up.
Deal with it.

Move along.

") T << 'sound/voice/ManUp1.ogg' log_admin("[key_name(usr)] told everyone to man up and deal with it.") diff --git a/code/modules/admin/callproc/callproc.dm b/code/modules/admin/callproc/callproc.dm index f72606d27b..0a4ec4f0b2 100644 --- a/code/modules/admin/callproc/callproc.dm +++ b/code/modules/admin/callproc/callproc.dm @@ -1,210 +1,210 @@ -/client/proc/callproc() - set category = "Debug" - set name = "Advanced ProcCall" - set waitfor = 0 - - if(!check_rights(R_DEBUG)) - return - - var/datum/target = null - var/targetselected = 0 - var/returnval = null - - switch(alert("Proc owned by something?",,"Yes","No")) - if("Yes") - targetselected = 1 - var/list/value = vv_get_value(default_class = VV_ATOM_REFERENCE, classes = list(VV_ATOM_REFERENCE, VV_DATUM_REFERENCE, VV_MOB_REFERENCE, VV_CLIENT)) - if (!value["class"] || !value["value"]) - return - target = value["value"] - if("No") - target = null - targetselected = 0 - - var/procname = input("Proc path, eg: /proc/fake_blood","Path:", null) as text|null - if(!procname) - return - - //hascall() doesn't support proc paths (eg: /proc/gib(), it only supports "gib") - var/testname = procname - if(targetselected) - //Find one of the 3 possible ways they could have written /proc/PROCNAME - if(findtext(procname, "/proc/")) - testname = replacetext(procname, "/proc/", "") - else if(findtext(procname, "/proc")) - testname = replacetext(procname, "/proc", "") - else if(findtext(procname, "proc/")) - testname = replacetext(procname, "proc/", "") - //Clear out any parenthesis if they're a dummy - testname = replacetext(testname, "()", "") - - if(targetselected && !hascall(target,testname)) - to_chat(usr, "Error: callproc(): type [target.type] has no proc named [procname].") - return - else - var/procpath = text2path(procname) - if (!procpath) - to_chat(usr, "Error: callproc(): proc [procname] does not exist. (Did you forget the /proc/ part?)") - return - var/list/lst = get_callproc_args() - if(!lst) - return - - if(targetselected) - if(!target) - to_chat(usr, "Error: callproc(): owner of proc no longer exists.") - return - var/msg = "[key_name(src)] called [target]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]." - log_admin(msg) - //message_admins(msg) //Proccall announce removed. - admin_ticket_log(target, msg) - returnval = WrapAdminProcCall(target, procname, lst) // Pass the lst as an argument list to the proc - else - //this currently has no hascall protection. wasn't able to get it working. - log_admin("[key_name(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].") - //message_admins("[key_name(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].") //Proccall announce removed. - returnval = WrapAdminProcCall(GLOBAL_PROC, procname, lst) // Pass the lst as an argument list to the proc - . = get_callproc_returnval(returnval, procname) - if(.) - to_chat(usr, .) - feedback_add_details("admin_verb","APC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -GLOBAL_VAR(AdminProcCaller) -GLOBAL_PROTECT(AdminProcCaller) -GLOBAL_VAR_INIT(AdminProcCallCount, 0) -GLOBAL_PROTECT(AdminProcCallCount) -GLOBAL_VAR(LastAdminCalledTargetRef) -GLOBAL_PROTECT(LastAdminCalledTargetRef) -GLOBAL_VAR(LastAdminCalledTarget) -GLOBAL_PROTECT(LastAdminCalledTarget) -GLOBAL_VAR(LastAdminCalledProc) -GLOBAL_PROTECT(LastAdminCalledProc) -GLOBAL_LIST_EMPTY(AdminProcCallSpamPrevention) -GLOBAL_PROTECT(AdminProcCallSpamPrevention) - -/proc/WrapAdminProcCall(datum/target, procname, list/arguments) - if(target && procname == "Del") - to_chat(usr, "Calling Del() is not allowed") - return - - if(target != GLOBAL_PROC && !target.CanProcCall(procname)) - to_chat(usr, "Proccall on [target.type]/proc/[procname] is disallowed!") - return - var/current_caller = GLOB.AdminProcCaller - var/ckey = usr ? usr.client.ckey : GLOB.AdminProcCaller - if(!ckey) - CRASH("WrapAdminProcCall with no ckey: [target] [procname] [english_list(arguments)]") - if(current_caller && current_caller != ckey) - if(!GLOB.AdminProcCallSpamPrevention[ckey]) - to_chat(usr, "Another set of admin called procs are still running, your proc will be run after theirs finish.") - GLOB.AdminProcCallSpamPrevention[ckey] = TRUE - UNTIL(!GLOB.AdminProcCaller) - to_chat(usr, "Running your proc") - GLOB.AdminProcCallSpamPrevention -= ckey - else - UNTIL(!GLOB.AdminProcCaller) - GLOB.LastAdminCalledProc = procname - if(target != GLOBAL_PROC) - GLOB.LastAdminCalledTargetRef = "\ref[target]" - GLOB.AdminProcCaller = ckey //if this runtimes, too bad for you - ++GLOB.AdminProcCallCount - . = world.WrapAdminProcCall(target, procname, arguments) - if(--GLOB.AdminProcCallCount == 0) - GLOB.AdminProcCaller = null - -//adv proc call this, ya nerds -/world/proc/WrapAdminProcCall(datum/target, procname, list/arguments) - if(target == GLOBAL_PROC) - return call(procname)(arglist(arguments)) - else if(target != world) - return call(target, procname)(arglist(arguments)) - else - log_admin("[key_name(usr)] attempted to call world/proc/[procname] with arguments: [english_list(arguments)]") - -/proc/IsAdminAdvancedProcCall() -#ifdef TESTING - return FALSE -#else - return usr && usr.client && GLOB.AdminProcCaller == usr.client.ckey -#endif - -/client/proc/callproc_datum(datum/A as null|area|mob|obj|turf) - set category = "Debug" - set name = "Atom ProcCall" - set waitfor = 0 - - if(!check_rights(R_DEBUG)) - return - - var/procname = input("Proc name, eg: fake_blood","Proc:", null) as text|null - if(!procname) - return - if(!hascall(A,procname)) - to_chat(usr, "Error: callproc_datum(): type [A.type] has no proc named [procname].") - return - var/list/lst = get_callproc_args() - if(!lst) - return - - if(!A || !IsValidSrc(A)) - to_chat(usr, "Error: callproc_datum(): owner of proc no longer exists.") - return - var/msg = "[key_name(src)] called [A]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]." - log_admin(msg) - //message_admins(msg) - admin_ticket_log(A, msg) - feedback_add_details("admin_verb","TPC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - - var/returnval = WrapAdminProcCall(A, procname, lst) // Pass the lst as an argument list to the proc - . = get_callproc_returnval(returnval,procname) - if(.) - to_chat(usr, .) - -/client/proc/get_callproc_args() - var/argnum = input("Number of arguments","Number:",0) as num|null - if(isnull(argnum)) - return null //Cancel - - . = list() - //var/list/named_args = list() //Named arguments are removed, due to them making proccalling take too long. - while(argnum--) - /* //Named arguments are removed, due to them making proccalling take too long. - var/named_arg = input("Leave blank for positional argument. Positional arguments will be considered as if they were added first.", "Named argument") as text|null - if(isnull(named_arg)) - return null //Cancel - */ - var/value = vv_get_value(restricted_classes = list(VV_RESTORE_DEFAULT)) - if (!value["class"]) - return null //Cancel - /* //Named arguments are removed, due to them making proccalling take too long. - if(named_arg) - named_args[named_arg] = value["value"] - else - . += value["value"] - if(LAZYLEN(named_args)) - . += named_args - */ - . += value["value"] - -/client/proc/get_callproc_returnval(returnval,procname) - . = "" - if(islist(returnval)) - var/list/returnedlist = returnval - . = "" - if(returnedlist.len) - var/assoc_check = returnedlist[1] - if(istext(assoc_check) && (returnedlist[assoc_check] != null)) - . += "[procname] returned an associative list:" - for(var/key in returnedlist) - . += "\n[key] = [returnedlist[key]]" - - else - . += "[procname] returned a list:" - for(var/elem in returnedlist) - . += "\n[elem]" - else - . = "[procname] returned an empty list" - . += "" - - else - . = "[procname] returned: [!isnull(returnval) ? returnval : "null"]" +/client/proc/callproc() + set category = "Debug" + set name = "Advanced ProcCall" + set waitfor = 0 + + if(!check_rights(R_DEBUG)) + return + + var/datum/target = null + var/targetselected = 0 + var/returnval = null + + switch(alert("Proc owned by something?",,"Yes","No")) + if("Yes") + targetselected = 1 + var/list/value = vv_get_value(default_class = VV_ATOM_REFERENCE, classes = list(VV_ATOM_REFERENCE, VV_DATUM_REFERENCE, VV_MOB_REFERENCE, VV_CLIENT)) + if (!value["class"] || !value["value"]) + return + target = value["value"] + if("No") + target = null + targetselected = 0 + + var/procname = input("Proc path, eg: /proc/fake_blood","Path:", null) as text|null + if(!procname) + return + + //hascall() doesn't support proc paths (eg: /proc/gib(), it only supports "gib") + var/testname = procname + if(targetselected) + //Find one of the 3 possible ways they could have written /proc/PROCNAME + if(findtext(procname, "/proc/")) + testname = replacetext(procname, "/proc/", "") + else if(findtext(procname, "/proc")) + testname = replacetext(procname, "/proc", "") + else if(findtext(procname, "proc/")) + testname = replacetext(procname, "proc/", "") + //Clear out any parenthesis if they're a dummy + testname = replacetext(testname, "()", "") + + if(targetselected && !hascall(target,testname)) + to_chat(usr, "Error: callproc(): type [target.type] has no proc named [procname].") + return + else + var/procpath = text2path(procname) + if (!procpath) + to_chat(usr, "Error: callproc(): proc [procname] does not exist. (Did you forget the /proc/ part?)") + return + var/list/lst = get_callproc_args() + if(!lst) + return + + if(targetselected) + if(!target) + to_chat(usr, "Error: callproc(): owner of proc no longer exists.") + return + var/msg = "[key_name(src)] called [target]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]." + log_admin(msg) + //message_admins(msg) //Proccall announce removed. + admin_ticket_log(target, msg) + returnval = WrapAdminProcCall(target, procname, lst) // Pass the lst as an argument list to the proc + else + //this currently has no hascall protection. wasn't able to get it working. + log_admin("[key_name(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].") + //message_admins("[key_name(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].") //Proccall announce removed. + returnval = WrapAdminProcCall(GLOBAL_PROC, procname, lst) // Pass the lst as an argument list to the proc + . = get_callproc_returnval(returnval, procname) + if(.) + to_chat(usr, .) + feedback_add_details("admin_verb","APC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +GLOBAL_VAR(AdminProcCaller) +GLOBAL_PROTECT(AdminProcCaller) +GLOBAL_VAR_INIT(AdminProcCallCount, 0) +GLOBAL_PROTECT(AdminProcCallCount) +GLOBAL_VAR(LastAdminCalledTargetRef) +GLOBAL_PROTECT(LastAdminCalledTargetRef) +GLOBAL_VAR(LastAdminCalledTarget) +GLOBAL_PROTECT(LastAdminCalledTarget) +GLOBAL_VAR(LastAdminCalledProc) +GLOBAL_PROTECT(LastAdminCalledProc) +GLOBAL_LIST_EMPTY(AdminProcCallSpamPrevention) +GLOBAL_PROTECT(AdminProcCallSpamPrevention) + +/proc/WrapAdminProcCall(datum/target, procname, list/arguments) + if(target && procname == "Del") + to_chat(usr, "Calling Del() is not allowed") + return + + if(target != GLOBAL_PROC && !target.CanProcCall(procname)) + to_chat(usr, "Proccall on [target.type]/proc/[procname] is disallowed!") + return + var/current_caller = GLOB.AdminProcCaller + var/ckey = usr ? usr.client.ckey : GLOB.AdminProcCaller + if(!ckey) + CRASH("WrapAdminProcCall with no ckey: [target] [procname] [english_list(arguments)]") + if(current_caller && current_caller != ckey) + if(!GLOB.AdminProcCallSpamPrevention[ckey]) + to_chat(usr, "Another set of admin called procs are still running, your proc will be run after theirs finish.") + GLOB.AdminProcCallSpamPrevention[ckey] = TRUE + UNTIL(!GLOB.AdminProcCaller) + to_chat(usr, "Running your proc") + GLOB.AdminProcCallSpamPrevention -= ckey + else + UNTIL(!GLOB.AdminProcCaller) + GLOB.LastAdminCalledProc = procname + if(target != GLOBAL_PROC) + GLOB.LastAdminCalledTargetRef = "\ref[target]" + GLOB.AdminProcCaller = ckey //if this runtimes, too bad for you + ++GLOB.AdminProcCallCount + . = world.WrapAdminProcCall(target, procname, arguments) + if(--GLOB.AdminProcCallCount == 0) + GLOB.AdminProcCaller = null + +//adv proc call this, ya nerds +/world/proc/WrapAdminProcCall(datum/target, procname, list/arguments) + if(target == GLOBAL_PROC) + return call(procname)(arglist(arguments)) + else if(target != world) + return call(target, procname)(arglist(arguments)) + else + log_admin("[key_name(usr)] attempted to call world/proc/[procname] with arguments: [english_list(arguments)]") + +/proc/IsAdminAdvancedProcCall() +#ifdef TESTING + return FALSE +#else + return usr && usr.client && GLOB.AdminProcCaller == usr.client.ckey +#endif + +/client/proc/callproc_datum(datum/A as null|area|mob|obj|turf) + set category = "Debug" + set name = "Atom ProcCall" + set waitfor = 0 + + if(!check_rights(R_DEBUG)) + return + + var/procname = input("Proc name, eg: fake_blood","Proc:", null) as text|null + if(!procname) + return + if(!hascall(A,procname)) + to_chat(usr, "Error: callproc_datum(): type [A.type] has no proc named [procname].") + return + var/list/lst = get_callproc_args() + if(!lst) + return + + if(!A || !IsValidSrc(A)) + to_chat(usr, "Error: callproc_datum(): owner of proc no longer exists.") + return + var/msg = "[key_name(src)] called [A]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]." + log_admin(msg) + //message_admins(msg) + admin_ticket_log(A, msg) + feedback_add_details("admin_verb","TPC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + + var/returnval = WrapAdminProcCall(A, procname, lst) // Pass the lst as an argument list to the proc + . = get_callproc_returnval(returnval,procname) + if(.) + to_chat(usr, .) + +/client/proc/get_callproc_args() + var/argnum = input("Number of arguments","Number:",0) as num|null + if(isnull(argnum)) + return null //Cancel + + . = list() + //var/list/named_args = list() //Named arguments are removed, due to them making proccalling take too long. + while(argnum--) + /* //Named arguments are removed, due to them making proccalling take too long. + var/named_arg = input("Leave blank for positional argument. Positional arguments will be considered as if they were added first.", "Named argument") as text|null + if(isnull(named_arg)) + return null //Cancel + */ + var/value = vv_get_value(restricted_classes = list(VV_RESTORE_DEFAULT)) + if (!value["class"]) + return null //Cancel + /* //Named arguments are removed, due to them making proccalling take too long. + if(named_arg) + named_args[named_arg] = value["value"] + else + . += value["value"] + if(LAZYLEN(named_args)) + . += named_args + */ + . += value["value"] + +/client/proc/get_callproc_returnval(returnval,procname) + . = "" + if(islist(returnval)) + var/list/returnedlist = returnval + . = "" + if(returnedlist.len) + var/assoc_check = returnedlist[1] + if(istext(assoc_check) && (returnedlist[assoc_check] != null)) + . += "[procname] returned an associative list:" + for(var/key in returnedlist) + . += "\n[key] = [returnedlist[key]]" + + else + . += "[procname] returned a list:" + for(var/elem in returnedlist) + . += "\n[elem]" + else + . = "[procname] returned an empty list" + . += "" + + else + . = "[procname] returned: [!isnull(returnval) ? returnval : "null"]" diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 92fd1c300b..51d50218ec 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -76,7 +76,7 @@ NOTE: It checks usr by default. Supply the "user" argument if you wish to check return FALSE if(!C.holder) if(show_msg) - to_chat(C, "Error: You are not an admin.") + to_chat(C, "Error: You are not an admin.") return FALSE if(rights_required) @@ -84,7 +84,7 @@ NOTE: It checks usr by default. Supply the "user" argument if you wish to check return TRUE else if(show_msg) - to_chat(C, "Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")].") + to_chat(C, "Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")].") return FALSE else return TRUE @@ -98,7 +98,7 @@ NOTE: It checks usr by default. Supply the "user" argument if you wish to check if(usr.client.holder.rights != other.holder.rights) if( (usr.client.holder.rights & other.holder.rights) == other.holder.rights ) return 1 //we have all the rights they have and more - to_chat(usr, "Error: Cannot proceed. They have more or equal rights to us.") + to_chat(usr, "Error: Cannot proceed. They have more or equal rights to us.") return 0 /client/proc/mark_datum(datum/D) diff --git a/code/modules/admin/map_capture.dm b/code/modules/admin/map_capture.dm index a8cf7717fc..68460ebaae 100644 --- a/code/modules/admin/map_capture.dm +++ b/code/modules/admin/map_capture.dm @@ -7,13 +7,13 @@ return if(isnull(tx) || isnull(ty) || isnull(tz) || isnull(range)) - to_chat(usr, "Capture Map Part, captures part of a map using camara like rendering.") - to_chat(usr, "Usage: Capture-Map-Part target_x_cord target_y_cord target_z_cord range") - to_chat(usr, "Target coordinates specify bottom left corner of the capture, range defines render distance to opposite corner.") + to_chat(usr, "Capture Map Part, captures part of a map using camara like rendering.") + to_chat(usr, "Usage: Capture-Map-Part target_x_cord target_y_cord target_z_cord range.") + to_chat(usr, "Target coordinates specify bottom left corner of the capture, range defines render distance to opposite corner.") return if(range > 32 || range <= 0) - to_chat(usr, "Capturing range is incorrect, it must be within 1-32.") + to_chat(usr, "Capturing range is incorrect, it must be within 1-32.") return if(locate(tx,ty,tz)) @@ -53,7 +53,7 @@ cap.Blend(img, blendMode2iconMode(A.blend_mode), A.pixel_x + xoff, A.pixel_y + yoff) var/file_name = "map_capture_x[tx]_y[ty]_z[tz]_r[range].png" - to_chat(usr, "Saved capture in cache as [file_name].") + to_chat(usr, "Saved capture in cache as [file_name].") usr << browse_rsc(cap, file_name) else - to_chat(usr, "Target coordinates are incorrect.") + to_chat(usr, "Target coordinates are incorrect.") diff --git a/code/modules/admin/permissionverbs/permissionedit.dm b/code/modules/admin/permissionverbs/permissionedit.dm index e75d008576..6a579b96af 100644 --- a/code/modules/admin/permissionverbs/permissionedit.dm +++ b/code/modules/admin/permissionverbs/permissionedit.dm @@ -51,13 +51,13 @@ return if(!usr.client.holder || !(usr.client.holder.rights & R_PERMISSIONS)) - to_chat(usr, "You do not have permission to do this!") + to_chat(usr, "You do not have permission to do this!") return establish_db_connection() if(!dbcon.IsConnected()) - to_chat(usr, "Failed to establish database connection") + to_chat(usr, "Failed to establish database connection") return if(!adm_ckey || !new_rank) @@ -85,14 +85,14 @@ insert_query.Execute() var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new admin [adm_ckey] to rank [new_rank]');") log_query.Execute() - to_chat(usr, "New admin added.") + to_chat(usr, "New admin added.") else if(!isnull(admin_id) && isnum(admin_id)) var/DBQuery/insert_query = dbcon.NewQuery("UPDATE `erro_admin` SET rank = '[new_rank]' WHERE id = [admin_id]") insert_query.Execute() var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Edited the rank of [adm_ckey] to [new_rank]');") log_query.Execute() - to_chat(usr, "Admin rank changed.") + to_chat(usr, "Admin rank changed.") /datum/admins/proc/log_admin_permission_modification(var/adm_ckey, var/new_permission) if(config.admin_legacy_system) return @@ -101,12 +101,12 @@ return if(!usr.client.holder || !(usr.client.holder.rights & R_PERMISSIONS)) - to_chat(usr, "You do not have permission to do this!") + to_chat(usr, "You do not have permission to do this!") return establish_db_connection() if(!dbcon.IsConnected()) - to_chat(usr, "Failed to establish database connection") + to_chat(usr, "Failed to establish database connection") return if(!adm_ckey || !new_permission) @@ -140,10 +140,10 @@ insert_query.Execute() var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Removed permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]');") log_query.Execute() - to_chat(usr, "Permission removed.") + to_chat(usr, "Permission removed.") else //This admin doesn't have this permission, so we are adding it. var/DBQuery/insert_query = dbcon.NewQuery("UPDATE `erro_admin` SET flags = '[admin_rights | new_permission]' WHERE id = [admin_id]") insert_query.Execute() var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]')") log_query.Execute() - to_chat(usr, "Permission added.") \ No newline at end of file + to_chat(usr, "Permission added.") \ No newline at end of file diff --git a/code/modules/admin/secrets/random_events/gravity_vr.dm b/code/modules/admin/secrets/random_events/gravity_vr.dm new file mode 100644 index 0000000000..fc0c854c19 --- /dev/null +++ b/code/modules/admin/secrets/random_events/gravity_vr.dm @@ -0,0 +1,34 @@ +/********** +* Gravity * +**********/ +/datum/admin_secret_item/random_event/gravity + name = "Toggle Station Artificial Gravity" + +/datum/admin_secret_item/random_event/gravity/can_execute(var/mob/user) + if(!(ticker && ticker.mode)) + return 0 + + return ..() + +/datum/admin_secret_item/random_event/gravity/execute(var/mob/user) + . = ..() + if(!.) + return + + gravity_is_on = !gravity_is_on + for(var/obj/machinery/gravity_generator/main/GG in machines) + if(GG.z in using_map.station_levels) + GG.breaker = gravity_is_on + GG.set_power() + GG.charge_count = gravity_is_on ? 90 : 10 + + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","Grav") + if(gravity_is_on) + log_admin("[key_name(user)] toggled gravity on.", 1) + message_admins("[key_name_admin(user)] toggled gravity on.", 1) + command_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.") + else + log_admin("[key_name(user)] toggled gravity off.", 1) + message_admins("[key_name_admin(usr)] toggled gravity off.", 1) + command_announcement.Announce("Feedback surge detected in mass-distributions systems. Artificial gravity has been disabled. Please wait for the system to reinitialize, or contact your engineering department.", "Gravity Failure") diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index fe6048d0c2..f44c52ffc6 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -63,23 +63,23 @@ switch(bantype) if(BANTYPE_PERMA) if(!banckey || !banreason) - to_chat(usr, "Not enough parameters (Requires ckey and reason)") + to_chat(usr, "Not enough parameters (Requires ckey and reason)") return banduration = null banjob = null if(BANTYPE_TEMP) if(!banckey || !banreason || !banduration) - to_chat(usr, "Not enough parameters (Requires ckey, reason and duration)") + to_chat(usr, "Not enough parameters (Requires ckey, reason and duration)") return banjob = null if(BANTYPE_JOB_PERMA) if(!banckey || !banreason || !banjob) - to_chat(usr, "Not enough parameters (Requires ckey, reason and job)") + to_chat(usr, "Not enough parameters (Requires ckey, reason and job)") return banduration = null if(BANTYPE_JOB_TEMP) if(!banckey || !banreason || !banjob || !banduration) - to_chat(usr, "Not enough parameters (Requires ckey, reason and job)") + to_chat(usr, "Not enough parameters (Requires ckey, reason and job)") return var/mob/playermob @@ -116,14 +116,14 @@ var/new_ckey = ckey(input(usr,"New admin's ckey","Admin ckey", null) as text|null) if(!new_ckey) return if(new_ckey in admin_datums) - to_chat(usr, "Error: Topic 'editrights': [new_ckey] is already an admin") + to_chat(usr, "Error: Topic 'editrights': [new_ckey] is already an admin") return adm_ckey = new_ckey task = "rank" else if(task != "show") adm_ckey = ckey(href_list["ckey"]) if(!adm_ckey) - to_chat(usr, "Error: Topic 'editrights': No valid ckey") + to_chat(usr, "Error: Topic 'editrights': No valid ckey") return var/datum/admins/D = admin_datums[adm_ckey] @@ -155,7 +155,7 @@ if(config.admin_legacy_system) new_rank = ckeyEx(new_rank) if(!new_rank) - to_chat(usr, "Error: Topic 'editrights': Invalid rank") + to_chat(usr, "Error: Topic 'editrights': Invalid rank") return if(config.admin_legacy_system) if(admin_ranks.len) @@ -264,7 +264,7 @@ var/mob/M = locate(href_list["mob"]) if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") return var/delmob = 0 @@ -370,14 +370,14 @@ var/mob/M = locate(href_list["jobban2"]) if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") return if(!M.ckey) //sanity - to_chat(usr, "This mob has no ckey") + to_chat(usr, "This mob has no ckey") return if(!job_master) - to_chat(usr, "Job Master has not been setup!") + to_chat(usr, "Job Master has not been setup!") return var/dat = "" @@ -631,16 +631,16 @@ //JOBBAN'S INNARDS else if(href_list["jobban3"]) if(!check_rights(R_MOD,0) && !check_rights(R_ADMIN,0)) - to_chat(usr, "You do not have the appropriate permissions to add job bans!") + to_chat(usr, "You do not have the appropriate permissions to add job bans!") return if(check_rights(R_MOD,0) && !check_rights(R_ADMIN,0) && !config.mods_can_job_tempban) // If mod and tempban disabled - to_chat(usr, "Mod jobbanning is disabled!") + to_chat(usr, "Mod jobbanning is disabled!") return var/mob/M = locate(href_list["jobban4"]) if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") return if(M != usr) //we can jobban ourselves @@ -649,7 +649,7 @@ return if(!job_master) - to_chat(usr, "Job Master has not been setup!") + to_chat(usr, "Job Master has not been setup!") return //get jobs for department if specified, otherwise just returnt he one job in a list. @@ -726,16 +726,16 @@ switch(alert("Temporary Ban?",,"Yes","No", "Cancel")) if("Yes") if(!check_rights(R_MOD,0) && !check_rights(R_BAN, 0)) - to_chat(usr, " You Cannot issue temporary job-bans!") + to_chat(usr, " You Cannot issue temporary job-bans!") return if(config.ban_legacy_system) - to_chat(usr, "Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.") + to_chat(usr, "Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.") return var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null if(!mins) return if(check_rights(R_MOD, 0) && !check_rights(R_BAN, 0) && mins > config.mod_job_tempban_max) - to_chat(usr, " Moderators can only job tempban up to [config.mod_job_tempban_max] minutes!") + to_chat(usr, " Moderators can only job tempban up to [config.mod_job_tempban_max] minutes!") return var/reason = sanitize(input(usr,"Reason?","Please State Reason","") as text|null) if(!reason) @@ -755,9 +755,9 @@ msg += ", [job]" notes_add(M.ckey, "Banned from [msg] - [reason]", usr) message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes", 1) - to_chat(M, "You have been jobbanned by [usr.client.ckey] from: [msg].") - to_chat(M, "The reason is: [reason]") - to_chat(M, "This jobban will be lifted in [mins] minutes.") + to_chat(M, "You have been jobbanned by [usr.client.ckey] from: [msg].") + to_chat(M, "The reason is: [reason]") + to_chat(M, "This jobban will be lifted in [mins] minutes.") href_list["jobban2"] = 1 // lets it fall through and refresh return 1 if("No") @@ -776,9 +776,9 @@ else msg += ", [job]" notes_add(M.ckey, "Banned from [msg] - [reason]", usr) message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg]", 1) - to_chat(M, "You have been jobbanned by [usr.client.ckey] from: [msg].") - to_chat(M, "The reason is: [reason]") - to_chat(M, "Jobban can be lifted only upon request.") + to_chat(M, "You have been jobbanned by [usr.client.ckey] from: [msg].") + to_chat(M, "The reason is: [reason]") + to_chat(M, "Jobban can be lifted only upon request.") href_list["jobban2"] = 1 // lets it fall through and refresh return 1 if("Cancel") @@ -788,7 +788,7 @@ //all jobs in joblist are banned already OR we didn't give a reason (implying they shouldn't be banned) if(joblist.len) //at least 1 banned job exists in joblist so we have stuff to unban. if(!config.ban_legacy_system) - to_chat(usr, "Unfortunately, database based unbanning cannot be done through this panel") + to_chat(usr, "Unfortunately, database based unbanning cannot be done through this panel") DB_ban_panel(M.ckey) return var/msg @@ -809,7 +809,7 @@ continue if(msg) message_admins("[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg]", 1) - to_chat(M, "You have been un-jobbanned by [usr.client.ckey] from [msg].") + to_chat(M, "You have been un-jobbanned by [usr.client.ckey] from [msg].") href_list["jobban2"] = 1 // lets it fall through and refresh return 1 return 0 //we didn't do anything! @@ -823,7 +823,7 @@ if(!reason) return - to_chat(M, span("critical", "You have been kicked from the server: [reason]")) + to_chat(M, span("filter_system critical", "You have been kicked from the server: [reason]")) log_admin("[key_name(usr)] booted [key_name(M)] for reason: '[reason]'.") message_admins("[key_name_admin(usr)] booted [key_name_admin(M)] for reason '[reason]'.", 1) //M.client = null @@ -874,15 +874,15 @@ AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins) ban_unban_log_save("[usr.client.ckey] has banned [M.ckey]. - Reason: [reason] - This will be removed in [mins] minutes.") notes_add(M.ckey,"[usr.client.ckey] has banned [M.ckey]. - Reason: [reason] - This will be removed in [mins] minutes.",usr) - to_chat(M, "You have been banned by [usr.client.ckey].\nReason: [reason].") - to_chat(M, "This is a temporary ban, it will be removed in [mins] minutes.") + to_chat(M, "You have been banned by [usr.client.ckey].\nReason: [reason].") + to_chat(M, "This is a temporary ban, it will be removed in [mins] minutes.") feedback_inc("ban_tmp",1) DB_ban_record(BANTYPE_TEMP, M, mins, reason) feedback_inc("ban_tmp_mins",mins) if(config.banappeals) - to_chat(M, "To try to resolve this matter head to [config.banappeals]") + to_chat(M, "To try to resolve this matter head to [config.banappeals]") else - to_chat(M, "No ban appeals URL has been set.") + to_chat(M, "No ban appeals URL has been set.") log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.") message_admins("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.") var/datum/admin_help/AH = M.client ? M.client.current_ticket : null @@ -901,12 +901,12 @@ AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0, M.lastKnownIP) if("No") AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0) - to_chat(M, "You have been banned by [usr.client.ckey].\nReason: [reason].") - to_chat(M, "This is a permanent ban.") + to_chat(M, "You have been banned by [usr.client.ckey].\nReason: [reason].") + to_chat(M, "This is a permanent ban.") if(config.banappeals) - to_chat(M, "To try to resolve this matter head to [config.banappeals]") + to_chat(M, "To try to resolve this matter head to [config.banappeals]") else - to_chat(M, "No ban appeals URL has been set.") + to_chat(M, "No ban appeals URL has been set.") ban_unban_log_save("[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.") notes_add(M.ckey,"[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.",usr) log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.") @@ -992,7 +992,7 @@ var/mob/living/carbon/human/H = locate(href_list["monkeyone"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return log_admin("[key_name(usr)] attempting to monkeyize [key_name(H)]") @@ -1004,7 +1004,7 @@ var/mob/living/carbon/human/H = locate(href_list["corgione"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return log_admin("[key_name(usr)] attempting to corgize [key_name(H)]") @@ -1016,7 +1016,7 @@ var/mob/M = locate(href_list["forcespeech"]) if(!ismob(M)) - to_chat(usr, "this can only be used on instances of type /mob") + to_chat(usr, "this can only be used on instances of type /mob") var/speech = input("What will [key_name(M)] say?.", "Force speech", "")// Don't need to sanitize, since it does that in say(), we also trust our admins. if(!speech) return @@ -1033,10 +1033,10 @@ var/mob/M = locate(href_list["sendtoprison"]) if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") return if(istype(M, /mob/living/silicon/ai)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") + to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") return var/turf/prison_cell = pick(prisonwarp) @@ -1061,7 +1061,7 @@ prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/prison(prisoner), slot_w_uniform) prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes) - to_chat(M, "You have been sent to the prison station!") + to_chat(M, "You have been sent to the prison station!") log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.") message_admins("[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1) @@ -1071,11 +1071,11 @@ var/mob/M = locate(href_list["sendbacktolobby"]) if(!isobserver(M)) - to_chat(usr, "You can only send ghost players back to the Lobby.") + to_chat(usr, "You can only send ghost players back to the Lobby.") return if(!M.client) - to_chat(usr, "[M] doesn't seem to have an active client.") + to_chat(usr, "[M] doesn't seem to have an active client.") return if(alert(usr, "Send [key_name(M)] back to Lobby?", "Message", "Yes", "No") != "Yes") @@ -1096,10 +1096,10 @@ var/mob/M = locate(href_list["tdome1"]) if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") return if(istype(M, /mob/living/silicon/ai)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") + to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") return for(var/obj/item/I in M) @@ -1109,7 +1109,7 @@ sleep(5) M.loc = pick(tdome1) spawn(50) - to_chat(M, "You have been sent to the Thunderdome.") + to_chat(M, "You have been sent to the Thunderdome.") log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 1)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Team 1)", 1) @@ -1121,10 +1121,10 @@ var/mob/M = locate(href_list["tdome2"]) if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") return if(istype(M, /mob/living/silicon/ai)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") + to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") return for(var/obj/item/I in M) @@ -1134,7 +1134,7 @@ sleep(5) M.loc = pick(tdome2) spawn(50) - to_chat(M, "You have been sent to the Thunderdome.") + to_chat(M, "You have been sent to the Thunderdome.") log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 2)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Team 2)", 1) @@ -1146,17 +1146,17 @@ var/mob/M = locate(href_list["tdomeadmin"]) if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") return if(istype(M, /mob/living/silicon/ai)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") + to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") return M.Paralyse(5) sleep(5) M.loc = pick(tdomeadmin) spawn(50) - to_chat(M, "You have been sent to the Thunderdome.") + to_chat(M, "You have been sent to the Thunderdome.") log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Admin.)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Admin.)", 1) @@ -1168,10 +1168,10 @@ var/mob/M = locate(href_list["tdomeobserve"]) if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") return if(istype(M, /mob/living/silicon/ai)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") + to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") return for(var/obj/item/I in M) @@ -1185,7 +1185,7 @@ sleep(5) M.loc = pick(tdomeobserve) spawn(50) - to_chat(M, "You have been sent to the Thunderdome.") + to_chat(M, "You have been sent to the Thunderdome.") log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Observer.)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Observer.)", 1) @@ -1194,7 +1194,7 @@ var/mob/living/L = locate(href_list["revive"]) if(!istype(L)) - to_chat(usr, "This can only be used on instances of type /mob/living") + to_chat(usr, "This can only be used on instances of type /mob/living") return if(config.allow_admin_rev) @@ -1202,14 +1202,14 @@ message_admins("Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!", 1) log_admin("[key_name(usr)] healed / Rrvived [key_name(L)]") else - to_chat(usr, "Admin Rejuvinates have been disabled") + to_chat(usr, "Admin Rejuvinates have been disabled") else if(href_list["makeai"]) if(!check_rights(R_SPAWN)) return var/mob/living/carbon/human/H = locate(href_list["makeai"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return message_admins("Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!", 1) @@ -1221,7 +1221,7 @@ var/mob/living/carbon/human/H = locate(href_list["makealien"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return usr.client.cmd_admin_alienize(H) @@ -1231,7 +1231,7 @@ var/mob/living/carbon/human/H = locate(href_list["makerobot"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return usr.client.cmd_admin_robotize(H) @@ -1241,7 +1241,7 @@ var/mob/M = locate(href_list["makeanimal"]) if(istype(M, /mob/new_player)) - to_chat(usr, "This cannot be used on instances of type /mob/new_player") + to_chat(usr, "This cannot be used on instances of type /mob/new_player") return usr.client.cmd_admin_animalize(M) @@ -1260,7 +1260,7 @@ var/mob/living/carbon/human/H = locate(href_list["togmutate"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return var/block=text2num(href_list["block"]) usr.client.cmd_admin_toggle_block(H,block) @@ -1303,7 +1303,7 @@ for(var/client/X in admins) if((R_ADMIN|R_MOD|R_SERVER) & X.holder.rights) //VOREStation Edit to_chat(X, take_msg) - to_chat(M, "Your adminhelp is being attended to by [usr.client]. Thanks for your patience!") + to_chat(M, "Your adminhelp is being attended to by [usr.client]. Thanks for your patience!") // VoreStation Edit Start if (config.chat_webhook_url) spawn(0) @@ -1334,7 +1334,7 @@ else if(href_list["adminmoreinfo"]) var/mob/M = locate(href_list["adminmoreinfo"]) if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") return var/location_description = "" @@ -1374,19 +1374,20 @@ if(MALE,FEMALE) gender_description = "[M.gender]" else gender_description = "[M.gender]" - to_chat(src.owner, "Info about [M.name]: ") - to_chat(src.owner, "Mob type = [M.type]; Gender = [gender_description] Damage = [health_description]") - to_chat(src.owner, "Name = [M.name]; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = [M.key];") - to_chat(src.owner, "Location = [location_description];") - to_chat(src.owner, "[special_role_description]") - to_chat(src.owner, "(PM) (PP) (VV) (SM) ([admin_jump_link(M, src)]) (CA)") + to_chat(src.owner, "Info about [M.name]:
\ + Mob type = [M.type]; Gender = [gender_description] Damage = [health_description]
\ + Name = [M.name]; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = [M.key];
\ + Location = [location_description];
\ + [special_role_description]
\ + (PM) (PP) (VV) \ + (SM) ([admin_jump_link(M, src)]) (CA)
") else if(href_list["adminspawncookie"]) if(!check_rights(R_ADMIN|R_FUN|R_EVENT)) return var/mob/living/carbon/human/H = locate(href_list["adminspawncookie"]) if(!ishuman(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return H.equip_to_slot_or_del( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_l_hand ) @@ -1403,14 +1404,14 @@ log_admin("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]") message_admins("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]") feedback_inc("admin_cookies_spawned",1) - to_chat(H, "Your prayers have been answered!! You received the best cookie!") + to_chat(H, "Your prayers have been answered!! You received the best cookie!") else if(href_list["adminsmite"]) if(!check_rights(R_ADMIN|R_FUN|R_EVENT)) return var/mob/living/carbon/human/H = locate(href_list["adminsmite"]) if(!ishuman(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return owner.smite(H) @@ -1420,7 +1421,7 @@ var/mob/living/M = locate(href_list["BlueSpaceArtillery"]) if(!isliving(M)) - to_chat(usr, "This can only be used on instances of type /mob/living") + to_chat(usr, "This can only be used on instances of type /mob/living") return if(alert(src.owner, "Are you sure you wish to hit [key_name(M)] with Blue Space Artillery?", "Confirm Firing?" , "Yes" , "No") != "Yes") @@ -1431,14 +1432,14 @@ else if(href_list["CentComReply"]) var/mob/living/L = locate(href_list["CentComReply"]) if(!istype(L)) - to_chat(usr, "This can only be used on instances of type /mob/living/") + to_chat(usr, "This can only be used on instances of type /mob/living/") return if(L.can_centcom_reply()) var/input = sanitize(input(src.owner, "Please enter a message to reply to [key_name(L)] via their headset.","Outgoing message from CentCom", "")) if(!input) return - to_chat(src.owner, "You sent [input] to [L] via a secure channel.") + to_chat(src.owner, "You sent [input] to [L] via a secure channel.") log_admin("[src.owner] replied to [key_name(L)]'s CentCom message with the message [input].") message_admins("[src.owner] replied to [key_name(L)]'s CentCom message with: \"[input]\"") if(!isAI(L)) @@ -1448,24 +1449,25 @@ to_chat(L, "[input]") to_chat(L, "Message ends.") else - to_chat(src.owner, "The person you are trying to contact does not have functional radio equipment.") + to_chat(src.owner, "The person you are trying to contact does not have functional radio equipment.") else if(href_list["SyndicateReply"]) var/mob/living/carbon/human/H = locate(href_list["SyndicateReply"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset)) - to_chat(usr, "The person you are trying to contact is not wearing a headset") + to_chat(usr, "The person you are trying to contact is not wearing a headset") return var/input = sanitize(input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from a shadowy figure...", "")) if(!input) return - to_chat(src.owner, "You sent [input] to [H] via a secure channel.") + to_chat(src.owner, "You sent [input] to [H] via a secure channel.") log_admin("[src.owner] replied to [key_name(H)]'s illegal message with the message [input].") - to_chat(H, "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your benefactor. Message as follows, agent. \"[input]\" Message ends.\"") + to_chat(H, "You hear something crackle in your headset for a moment before a voice speaks. \ + \"Please stand by for a message from your benefactor. Message as follows, agent. \"[input]\" Message ends.\"") else if(href_list["AdminFaxView"]) var/obj/item/fax = locate(href_list["AdminFaxView"]) @@ -1487,7 +1489,7 @@ usr << browse(data, "window=[B.name]") else - to_chat(usr, "The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]") + to_chat(usr, "The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]") else if (href_list["AdminFaxViewPage"]) var/page = text2num(href_list["AdminFaxViewPage"]) @@ -1559,7 +1561,7 @@ var/mob/M = locate(href_list["traitor"]) if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob.") + to_chat(usr, "This can only be used on instances of type /mob.") return show_traitor_panel(M) @@ -1583,7 +1585,7 @@ if(!check_rights(R_SPAWN)) return if(!config.allow_admin_spawning) - to_chat(usr, "Spawning of items is not allowed.") + to_chat(usr, "Spawning of items is not allowed.") return var/atom/loc = usr.loc @@ -1643,24 +1645,24 @@ where = "onfloor" if( where == "inhand" ) - to_chat(usr, "Support for inhand not available yet. Will spawn on floor.") + to_chat(usr, "Support for inhand not available yet. Will spawn on floor.") where = "onfloor" if ( where == "inhand" ) //Can only give when human or monkey if ( !( ishuman(usr) || issmall(usr) ) ) - to_chat(usr, "Can only spawn in hand when you're a human or a monkey.") + to_chat(usr, "Can only spawn in hand when you're a human or a monkey.") where = "onfloor" else if ( usr.get_active_hand() ) - to_chat(usr, "Your active hand is full. Spawning on floor.") + to_chat(usr, "Your active hand is full. Spawning on floor.") where = "onfloor" if ( where == "inmarked" ) if ( !marked_datum ) - to_chat(usr, "You don't have any object marked. Abandoning spawn.") + to_chat(usr, "You don't have any object marked. Abandoning spawn.") return else if ( !istype(marked_datum,/atom) ) - to_chat(usr, "The object you have marked cannot be used as a target. Target must be of type /atom. Abandoning spawn.") + to_chat(usr, "The object you have marked cannot be used as a target. Target must be of type /atom. Abandoning spawn.") return var/atom/target //Where the object will be spawned @@ -1912,17 +1914,17 @@ if(check_rights(R_SPAWN)) //VOREStation Edit var/mob/M = locate(href_list["toglang"]) if(!istype(M)) - to_chat(usr, "[M] is illegal type, must be /mob!") + to_chat(usr, "[M] is illegal type, must be /mob!") return var/lang2toggle = href_list["lang"] var/datum/language/L = GLOB.all_languages[lang2toggle] if(L in M.languages) if(!M.remove_language(lang2toggle)) - to_chat(usr, "Failed to remove language '[lang2toggle]' from \the [M]!") + to_chat(usr, "Failed to remove language '[lang2toggle]' from \the [M]!") else if(!M.add_language(lang2toggle)) - to_chat(usr, "Failed to add language '[lang2toggle]' from \the [M]!") + to_chat(usr, "Failed to add language '[lang2toggle]' from \the [M]!") show_player_panel(M) diff --git a/code/modules/admin/verbs/BrokenInhands.dm b/code/modules/admin/verbs/BrokenInhands.dm index 654badec7f..2ddfd393f4 100644 --- a/code/modules/admin/verbs/BrokenInhands.dm +++ b/code/modules/admin/verbs/BrokenInhands.dm @@ -31,6 +31,6 @@ var/F = file("broken_icons.txt") fdel(F) F << text - to_world("Completeled successfully and written to [F]") + to_world("Completeled successfully and written to [F]") diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 589aefed79..9cac0a5f34 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -273,7 +273,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) AddInteraction("Reopened by [key_name_admin(usr)]") if(initiator) - to_chat(initiator, "Ticket [TicketHref("#[id]")] was reopened by [key_name(usr,FALSE,FALSE)].") + to_chat(initiator, "Ticket [TicketHref("#[id]")] was reopened by [key_name(usr,FALSE,FALSE)].") var/msg = "Ticket [TicketHref("#[id]")] reopened by [key_name_admin(usr)]." message_admins(msg) log_admin(msg) @@ -297,9 +297,9 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) RemoveActive() state = AHELP_CLOSED GLOB.ahelp_tickets.ListInsert(src) - AddInteraction("Closed by [key_name_admin(usr)].") + AddInteraction("Closed by [key_name_admin(usr)].") if(initiator) - to_chat(initiator, "Ticket [TicketHref("#[id]")] was closed by [key_name(usr,FALSE,FALSE)].") + to_chat(initiator, "Ticket [TicketHref("#[id]")] was closed by [key_name(usr,FALSE,FALSE)].") if(!silent) feedback_inc("ahelp_close") var/msg = "Ticket [TicketHref("#[id]")] closed by [key_name_admin(usr)]." @@ -314,9 +314,9 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) state = AHELP_RESOLVED GLOB.ahelp_tickets.ListInsert(src) - AddInteraction("Resolved by [key_name_admin(usr)].") + AddInteraction("Resolved by [key_name_admin(usr)].") if(initiator) - to_chat(initiator, "Ticket [TicketHref("#[id]")] was marked resolved by [key_name(usr,FALSE,FALSE)].") + to_chat(initiator, "Ticket [TicketHref("#[id]")] was marked resolved by [key_name(usr,FALSE,FALSE)].") if(!silent) feedback_inc("ahelp_resolve") var/msg = "Ticket [TicketHref("#[id]")] resolved by [key_name_admin(usr)]" @@ -332,9 +332,9 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(initiator.is_preference_enabled(/datum/client_preference/holder/play_adminhelp_ping)) initiator << 'sound/effects/adminhelp.ogg' - to_chat(initiator, "- AdminHelp Rejected! -") - to_chat(initiator, "Your admin help was rejected.") - to_chat(initiator, "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting.") + to_chat(initiator, "- AdminHelp Rejected! -
\ + Your admin help was rejected.
\ + Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting.
") feedback_inc("ahelp_reject") var/msg = "Ticket [TicketHref("#[id]")] rejected by [key_name_admin(usr)]" @@ -348,9 +348,9 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(state != AHELP_ACTIVE) return - var/msg = "- AdminHelp marked as IC issue! -
" + var/msg = "- AdminHelp marked as IC issue! -
" msg += "This is something that can be solved ICly, and does not currently require staff intervention.
" - msg += "Your AdminHelp may also be unanswerable due to ongoing events." + msg += "Your AdminHelp may also be unanswerable due to ongoing events.
" if(initiator) to_chat(initiator, msg) diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index e414a774cd..b735daccb8 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -55,7 +55,7 @@ A.on_mob_jump() A.forceMove(T) else - to_chat(A, "This mob is not located in the game world.") + to_chat(A, "This mob is not located in the game world.") else alert("Admin jumping disabled") @@ -94,7 +94,7 @@ keys += M.client var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys) if(!selection) - to_chat(src, "No keys found.") + to_chat(src, "No keys found.") return var/mob/M = selection:mob log_admin("[key_name(usr)] jumped to [key_name(M)]") @@ -169,4 +169,34 @@ message_admins(msg) admin_ticket_log(M, msg) else - alert("Admin jumping disabled") \ No newline at end of file + alert("Admin jumping disabled") + +/client/proc/cmd_admin_move_atom(var/atom/movable/AM, tx as num, ty as num, tz as num) + set category = "Admin" + set name = "Move Atom to Coordinate" + + if(!check_rights(R_ADMIN|R_DEBUG|R_EVENT)) + return + + if(config.allow_admin_jump) + if(isnull(tx)) + tx = input("Select X coordinate", "Move Atom", null, null) as null|num + if(!tx) return + if(isnull(ty)) + ty = input("Select Y coordinate", "Move Atom", null, null) as null|num + if(!ty) return + if(isnull(tz)) + tz = input("Select Z coordinate", "Move Atom", null, null) as null|num + if(!tz) return + var/turf/T = locate(tx, ty, tz) + if(!T) + to_chat(usr, "Those coordinates are outside the boundaries of the map.") + return + if(ismob(AM)) + var/mob/M = AM + M.on_mob_jump() + AM.forceMove(T) + feedback_add_details("admin_verb", "MA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + message_admins("[key_name_admin(usr)] jumped [AM] to coordinates [tx], [ty], [tz]") + else + alert("Admin jumping disabled") diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm index 2f7d65db05..0691e370e5 100644 --- a/code/modules/admin/verbs/atmosdebug.dm +++ b/code/modules/admin/verbs/atmosdebug.dm @@ -3,8 +3,8 @@ set name = "Check Piping" set background = 1 if(!src.holder) - to_chat(src, "Only administrators may use this command.") return + feedback_add_details("admin_verb","CP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! if(alert("WARNING: This command should not be run on a live server. Do you want to continue?", "Check Piping", "No", "Yes") == "No") @@ -14,17 +14,17 @@ //all plumbing - yes, some things might get stated twice, doesn't matter. for (var/obj/machinery/atmospherics/plumbing in machines) if (plumbing.nodealert) - to_chat(usr, "Unconnected [plumbing.name] located at [plumbing.x],[plumbing.y],[plumbing.z] ([get_area(plumbing.loc)])") + to_chat(usr, "Unconnected [plumbing.name] located at [plumbing.x],[plumbing.y],[plumbing.z] ([get_area(plumbing.loc)])") //Manifolds for (var/obj/machinery/atmospherics/pipe/manifold/pipe in machines) if (!pipe.node1 || !pipe.node2 || !pipe.node3) - to_chat(usr, "Unconnected [pipe.name] located at [pipe.x],[pipe.y],[pipe.z] ([get_area(pipe.loc)])") + to_chat(usr, "Unconnected [pipe.name] located at [pipe.x],[pipe.y],[pipe.z] ([get_area(pipe.loc)])") //Pipes for (var/obj/machinery/atmospherics/pipe/simple/pipe in machines) if (!pipe.node1 || !pipe.node2) - to_chat(usr, "Unconnected [pipe.name] located at [pipe.x],[pipe.y],[pipe.z] ([get_area(pipe.loc)])") + to_chat(usr, "Unconnected [pipe.name] located at [pipe.x],[pipe.y],[pipe.z] ([get_area(pipe.loc)])") to_chat(usr, "Checking for overlapping pipes...") next_turf: @@ -36,7 +36,7 @@ for(var/connect_type in pipe.connect_types) connect_types[connect_type] += 1 if(connect_types[1] > 1 || connect_types[2] > 1 || connect_types[3] > 1) - to_chat(usr, "Overlapping pipe ([pipe.name]) located at [T.x],[T.y],[T.z] ([get_area(T)])") + to_chat(usr, "Overlapping pipe ([pipe.name]) located at [T.x],[T.y],[T.z] ([get_area(T)])") continue next_turf to_chat(usr, "Done") @@ -44,17 +44,17 @@ set category = "Mapping" set name = "Check Power" if(!src.holder) - to_chat(src, "Only administrators may use this command.") return + feedback_add_details("admin_verb","CPOW") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! for (var/datum/powernet/PN in powernets) if (!PN.nodes || !PN.nodes.len) if(PN.cables && (PN.cables.len > 1)) var/obj/structure/cable/C = PN.cables[1] - to_chat(usr, "Powernet with no nodes! (number [PN.number]) - example cable at [C.x], [C.y], [C.z] in area [get_area(C.loc)]") + to_chat(usr, "Powernet with no nodes! (number [PN.number]) - example cable at [C.x], [C.y], [C.z] in area [get_area(C.loc)]") if (!PN.cables || (PN.cables.len < 10)) if(PN.cables && (PN.cables.len > 1)) var/obj/structure/cable/C = PN.cables[1] - to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [C.x], [C.y], [C.z] in area [get_area(C.loc)]") \ No newline at end of file + to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [C.x], [C.y], [C.z] in area [get_area(C.loc)]") \ No newline at end of file diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm index a5e9c15029..6a0d8ba266 100644 --- a/code/modules/admin/verbs/buildmode.dm +++ b/code/modules/admin/verbs/buildmode.dm @@ -88,85 +88,83 @@ switch(master.cl.buildmode) if(BUILDMODE_BASIC) - to_chat(usr, "***********************************************************") - to_chat(usr, "Left Mouse Button = Construct / Upgrade") - to_chat(usr, "Right Mouse Button = Deconstruct / Delete / Downgrade") - to_chat(usr, "Left Mouse Button + ctrl = R-Window") - to_chat(usr, "Left Mouse Button + alt = Airlock") - to_chat(usr, "") - to_chat(usr, "Use the button in the upper left corner to") - to_chat(usr, "change the direction of built objects.") - to_chat(usr, "***********************************************************") - + to_chat(usr, "***********************************************************
\ + Left Mouse Button = Construct / Upgrade
\ + Right Mouse Button = Deconstruct / Delete / Downgrade
\ + Left Mouse Button + ctrl = R-Window
\ + Left Mouse Button + alt = Airlock

\ + Use the button in the upper left corner to
\ + change the direction of built objects.
\ + ***********************************************************
") + if(BUILDMODE_ADVANCED) - to_chat(usr, "***********************************************************") - to_chat(usr, "Right Mouse Button on buildmode button = Set object type") - to_chat(usr, "Middle Mouse Button on buildmode button= On/Off object type saying") - to_chat(usr, "Middle Mouse Button on turf/obj = Capture object type") - to_chat(usr, "Left Mouse Button on turf/obj = Place objects") - to_chat(usr, "Right Mouse Button = Delete objects") - to_chat(usr, "Mouse Button + ctrl = Copy object type") - to_chat(usr, "") - to_chat(usr, "Use the button in the upper left corner to") - to_chat(usr, "change the direction of built objects.") - to_chat(usr, "***********************************************************") - + to_chat(usr, "***********************************************************
\ + Right Mouse Button on buildmode button = Set object type
\ + Middle Mouse Button on buildmode button= On/Off object type saying
\ + Middle Mouse Button on turf/obj = Capture object type
\ + Left Mouse Button on turf/obj = Place objects
\ + Right Mouse Button = Delete objects
\ + Mouse Button + ctrl = Copy object type

\ + Use the button in the upper left corner to
\ + change the direction of built objects.
\ + ***********************************************************
") + if(BUILDMODE_EDIT) - to_chat(usr, "***********************************************************") - to_chat(usr, "Right Mouse Button on buildmode button = Select var(type) & value") - to_chat(usr, "Left Mouse Button on turf/obj/mob = Set var(type) & value") - to_chat(usr, "Right Mouse Button on turf/obj/mob = Reset var's value") - to_chat(usr, "***********************************************************") - + to_chat(usr, "***********************************************************
\ + Right Mouse Button on buildmode button = Select var(type) & value
\ + Left Mouse Button on turf/obj/mob = Set var(type) & value
\ + Right Mouse Button on turf/obj/mob = Reset var's value
\ + ***********************************************************
") + if(BUILDMODE_THROW) - to_chat(usr, "***********************************************************") - to_chat(usr, "Left Mouse Button on turf/obj/mob = Select") - to_chat(usr, "Right Mouse Button on turf/obj/mob = Throw") - to_chat(usr, "***********************************************************") - + to_chat(usr, "***********************************************************
\ + Left Mouse Button on turf/obj/mob = Select
\ + Right Mouse Button on turf/obj/mob = Throw
\ + ***********************************************************
") + if(BUILDMODE_ROOM) - to_chat(usr, "***********************************************************") - to_chat(usr, "Left Mouse Button on turf = Select as point A") - to_chat(usr, "Right Mouse Button on turf = Select as point B") - to_chat(usr, "Right Mouse Button on buildmode button = Change floor/wall type") - to_chat(usr, "***********************************************************") - + to_chat(usr, "***********************************************************
\ + Left Mouse Button on turf = Select as point A
\ + Right Mouse Button on turf = Select as point B
\ + Right Mouse Button on buildmode button = Change floor/wall type
\ + ***********************************************************
") + if(BUILDMODE_LADDER) - to_chat(usr, "***********************************************************") - to_chat(usr, "Left Mouse Button on turf = Set as upper ladder loc") - to_chat(usr, "Right Mouse Button on turf = Set as lower ladder loc") - to_chat(usr, "***********************************************************") - + to_chat(usr, "***********************************************************
\ + Left Mouse Button on turf = Set as upper ladder loc
\ + Right Mouse Button on turf = Set as lower ladder loc
\ + ***********************************************************
") + if(BUILDMODE_CONTENTS) - to_chat(usr, "***********************************************************") - to_chat(usr, "Left Mouse Button on turf/obj/mob = Select") - to_chat(usr, "Right Mouse Button on turf/obj/mob = Move into selection") - to_chat(usr, "***********************************************************") - + to_chat(usr, "***********************************************************
\ + Left Mouse Button on turf/obj/mob = Select
\ + Right Mouse Button on turf/obj/mob = Move into selection
\ + ***********************************************************
") + if(BUILDMODE_LIGHTS) - to_chat(usr, "***********************************************************") - to_chat(usr, "Left Mouse Button on turf/obj/mob = Make it glow") - to_chat(usr, "Right Mouse Button on turf/obj/mob = Reset glowing") - to_chat(usr, "Right Mouse Button on buildmode button = Change glow properties") - to_chat(usr, "***********************************************************") - + to_chat(usr, "***********************************************************
\ + Left Mouse Button on turf/obj/mob = Make it glow
\ + Right Mouse Button on turf/obj/mob = Reset glowing
\ + Right Mouse Button on buildmode button = Change glow properties
\ + ***********************************************************
") + if(BUILDMODE_AI) - to_chat(usr, "***********************************************************") - to_chat(usr, "Left Mouse Button drag box = Select only mobs in box") - to_chat(usr, "Left Mouse Button drag box + shift = Select additional mobs in area") - to_chat(usr, "Left Mouse Button on non-mob = Deselect all mobs") - to_chat(usr, "Left Mouse Button on AI mob = Select/Deselect mob") - to_chat(usr, "Left Mouse Button + alt on AI mob = Toggle hostility on mob") - to_chat(usr, "Left Mouse Button + shift on AI mob = Toggle AI (also resets)") - to_chat(usr, "Left Mouse Button + ctrl on AI mob = Copy mob faction") - to_chat(usr, "Right Mouse Button + ctrl on any mob = Paste mob faction copied with Left Mouse Button + shift") - to_chat(usr, "Right Mouse Button on enemy mob = Command selected mobs to attack mob") - to_chat(usr, "Right Mouse Button on allied mob = Command selected mobs to follow mob") - to_chat(usr, "Right Mouse Button + shift on any mob = Command selected mobs to follow mob regardless of faction") - to_chat(usr, "Right Mouse Button on tile = Command selected mobs to move to tile (will cancel if enemies are seen)") - to_chat(usr, "Right Mouse Button + shift on tile = Command selected mobs to reposition to tile (will not be inturrupted by enemies)") - to_chat(usr, "Right Mouse Button + alt on obj/turfs = Command selected mobs to attack obj/turf") - to_chat(usr, "***********************************************************") + to_chat(usr, "***********************************************************
\ + Left Mouse Button drag box = Select only mobs in box
\ + Left Mouse Button drag box + shift = Select additional mobs in area
\ + Left Mouse Button on non-mob = Deselect all mobs
\ + Left Mouse Button on AI mob = Select/Deselect mob
\ + Left Mouse Button + alt on AI mob = Toggle hostility on mob
\ + Left Mouse Button + shift on AI mob = Toggle AI (also resets)
\ + Left Mouse Button + ctrl on AI mob = Copy mob faction
\ + Right Mouse Button + ctrl on any mob = Paste mob faction copied with Left Mouse Button + shift
\ + Right Mouse Button on enemy mob = Command selected mobs to attack mob
\ + Right Mouse Button on allied mob = Command selected mobs to follow mob
\ + Right Mouse Button + shift on any mob = Command selected mobs to follow mob regardless of faction
\ + Right Mouse Button on tile = Command selected mobs to move to tile (will cancel if enemies are seen)
\ + Right Mouse Button + shift on tile = Command selected mobs to reposition to tile (will not be inturrupted by enemies)
\ + Right Mouse Button + alt on obj/turfs = Command selected mobs to attack obj/turf
\ + ***********************************************************
") return 1 /obj/effect/bmode/buildquit @@ -272,7 +270,7 @@ master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as obj in world if("turf-reference") master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as turf in world - + if(BUILDMODE_ROOM) var/choice = alert("Would you like to change the floor or wall holders?","Room Builder", "Floor", "Wall") switch(choice) @@ -280,7 +278,7 @@ floor_holder = get_path_from_partial_text(/turf/simulated/floor/plating) if("Wall") wall_holder = get_path_from_partial_text(/turf/simulated/wall) - + if(BUILDMODE_LIGHTS) var/choice = alert("Change the new light range, power, or color?", "Light Maker", "Range", "Power", "Color") switch(choice) @@ -357,7 +355,7 @@ if(NORTHWEST) var/obj/structure/window/reinforced/WIN = new/obj/structure/window/reinforced(get_turf(object)) WIN.set_dir(NORTHWEST) - + if(BUILDMODE_ADVANCED) if(pa.Find("left") && !pa.Find("ctrl")) if(ispath(holder.buildmode.objholder,/turf)) @@ -399,7 +397,7 @@ if(holder.throw_atom) holder.throw_atom.throw_at(object, 10, 1) log_admin("[key_name(usr)] threw [holder.throw_atom] at [object]") - + if(BUILDMODE_ROOM) if(pa.Find("left")) holder.buildmode.coordA = get_turf(object) @@ -419,7 +417,7 @@ ) holder.buildmode.coordA = null holder.buildmode.coordB = null - + if(BUILDMODE_LADDER) if(pa.Find("left")) holder.buildmode.coordA = get_turf(object) @@ -439,7 +437,7 @@ B.update_icon() holder.buildmode.coordA = null holder.buildmode.coordB = null - + if(BUILDMODE_CONTENTS) if(pa.Find("left")) if(istype(object, /atom)) @@ -448,7 +446,7 @@ if(holder.throw_atom && istype(object, /atom/movable)) object.forceMove(holder.throw_atom) log_admin("[key_name(usr)] moved [object] into [holder.throw_atom].") - + if(BUILDMODE_LIGHTS) if(pa.Find("left")) if(object) @@ -456,7 +454,7 @@ if(pa.Find("right")) if(object) object.set_light(0, 0, "#FFFFFF") - + if(BUILDMODE_AI) if(pa.Find("left")) if(isliving(object)) @@ -509,7 +507,7 @@ else //Not living for(var/mob/living/unit in holder.selected_mobs) holder.deselect_AI_mob(user.client, unit) - + if(pa.Find("right")) // Paste faction @@ -594,7 +592,7 @@ switch(buildmode) if(BUILDMODE_AI) - + //Holding shift prevents the deselection of existing if(!pa.Find("shift")) for(var/mob/living/unit in holder.selected_mobs) @@ -610,7 +608,7 @@ var/hi_x = max(c1.x,c2.x) var/hi_y = max(c1.y,c2.y) var/z = c1.z //Eh - + var/i = 0 for(var/mob/living/L in living_mob_list) if(L.z != z || L.client) diff --git a/code/modules/admin/verbs/custom_event.dm b/code/modules/admin/verbs/custom_event.dm index 407843784a..5d9cfd3269 100644 --- a/code/modules/admin/verbs/custom_event.dm +++ b/code/modules/admin/verbs/custom_event.dm @@ -30,11 +30,10 @@ set name = "Custom Event Info" if(!custom_event_msg || custom_event_msg == "") - to_chat(src, "There currently is no known custom event taking place.") - to_chat(src, "Keep in mind: it is possible that an admin has not properly set this.") + to_chat(src, "There currently is no known custom event taking place.") + to_chat(src, "Keep in mind: it is possible that an admin has not properly set this.") return - to_chat(src, "

Custom Event

") - to_chat(src, "

A custom event is taking place. OOC Info:

") - to_chat(src, "[custom_event_msg]") - to_chat(src, "
") + to_chat(src, "

Custom Event

") + to_chat(src, "

A custom event is taking place. OOC Info:

") + to_chat(src, "[custom_event_msg]
") diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 4500379ec5..cc94db2f1d 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -582,17 +582,17 @@ switch(input("Which list?") in list("Players","Admins","Mobs","Living Mobs","Dead Mobs", "Clients")) if("Players") - usr << jointext(player_list,",") + to_chat(usr, span("filter_debuglogs", jointext(player_list,","))) if("Admins") - usr << jointext(admins,",") + to_chat(usr, span("filter_debuglogs", jointext(admins,","))) if("Mobs") - usr << jointext(mob_list,",") + to_chat(usr, span("filter_debuglogs", jointext(mob_list,","))) if("Living Mobs") - usr << jointext(living_mob_list,",") + to_chat(usr, span("filter_debuglogs", jointext(living_mob_list,","))) if("Dead Mobs") - usr << jointext(dead_mob_list,",") + to_chat(usr, span("filter_debuglogs", jointext(dead_mob_list,","))) if("Clients") - usr << jointext(GLOB.clients,",") + to_chat(usr, span("filter_debuglogs", jointext(GLOB.clients,","))) /client/proc/cmd_debug_using_map() set category = "Debug" diff --git a/code/modules/admin/verbs/smite.dm b/code/modules/admin/verbs/smite.dm index e8183e3665..1fd5120f55 100644 --- a/code/modules/admin/verbs/smite.dm +++ b/code/modules/admin/verbs/smite.dm @@ -56,18 +56,12 @@ return BSACooldown = 1 - spawn(50) - BSACooldown = 0 + VARSET_IN(global, BSACooldown, FALSE, 5 SECONDS) to_chat(target,"You've been hit by bluespace artillery!") log_and_message_admins("[key_name(target)] has been hit by Bluespace Artillery fired by [key_name(user ? user : usr)]") - var/obj/effect/stop/S - S = new /obj/effect/stop - S.victim = target - S.loc = target.loc - spawn(20) - qdel(S) + target.setMoveCooldown(2 SECONDS) var/turf/simulated/floor/T = get_turf(target) if(istype(T)) diff --git a/code/modules/admin/verbs/smite_vr.dm b/code/modules/admin/verbs/smite_vr.dm index fb52f18b50..cbf78c6f5a 100644 --- a/code/modules/admin/verbs/smite_vr.dm +++ b/code/modules/admin/verbs/smite_vr.dm @@ -228,7 +228,7 @@ var/redspace_abduction_z fake_autosave(L, user) return - target.move_delay = 99999999 + target.setMoveCooldown(10 SECONDS) to_chat(target, "Autosaving your progress, please wait...") target << 'sound/effects/ding.ogg' @@ -257,7 +257,6 @@ var/redspace_abduction_z spawn(10 SECONDS) if(target) - target.move_delay = 0 to_chat(target, "Autosave complete!") - if(target.client) - target.client.screen -= loader + if(target.client) + target.client.screen -= loader diff --git a/code/modules/ai/aI_holder_subtypes/slime_xenobio_ai.dm b/code/modules/ai/aI_holder_subtypes/slime_xenobio_ai.dm index 743e2b405c..c2598f4a75 100644 --- a/code/modules/ai/aI_holder_subtypes/slime_xenobio_ai.dm +++ b/code/modules/ai/aI_holder_subtypes/slime_xenobio_ai.dm @@ -142,6 +142,7 @@ hostile = FALSE retaliate = FALSE cooperative = FALSE + holder.a_intent = I_HELP // The holder's attack changes based on intent. This lets the AI choose what effect is desired. /datum/ai_holder/simple_mob/xenobio_slime/pre_melee_attack(atom/A) @@ -178,6 +179,7 @@ if(!(H in grudges)) // Unless they're an ass. return FALSE if(discipline && !rabid) + holder.a_intent = I_HELP return FALSE // We're a good slime. /datum/ai_holder/simple_mob/xenobio_slime/react_to_attack(atom/movable/attacker) diff --git a/code/modules/ai/aI_holder_subtypes/slime_xenobio_ai_vr.dm b/code/modules/ai/aI_holder_subtypes/slime_xenobio_ai_vr.dm deleted file mode 100644 index c4bb314359..0000000000 --- a/code/modules/ai/aI_holder_subtypes/slime_xenobio_ai_vr.dm +++ /dev/null @@ -1,3 +0,0 @@ -/datum/ai_holder/simple_mob/xenobio_slime/post_melee_attack(atom/A) - var/mob/living/simple_mob/slime/xenobio/my_slime = holder - my_slime.a_intent = I_HELP // Return back to help after attacking \ No newline at end of file diff --git a/code/modules/ai/ai_holder.dm b/code/modules/ai/ai_holder.dm index b5272ea996..d4686e1537 100644 --- a/code/modules/ai/ai_holder.dm +++ b/code/modules/ai/ai_holder.dm @@ -1,6 +1,14 @@ // This is a datum-based artificial intelligence for simple mobs (and possibly others) to use. // The neat thing with having this here instead of on the mob is that it is independant of Life(), and that different mobs // can use a more or less complex AI by giving it a different datum. +#define AI_NO_PROCESS 0 +#define AI_PROCESSING (1<<0) +#define AI_FASTPROCESSING (1<<1) + +#define START_AIPROCESSING(Datum) if (!(Datum.process_flags & AI_PROCESSING)) {Datum.process_flags |= AI_PROCESSING;SSai.processing += Datum} +#define STOP_AIPROCESSING(Datum) Datum.process_flags &= ~AI_PROCESSING;SSai.processing -= Datum +#define START_AIFASTPROCESSING(Datum) if (!(Datum.process_flags & AI_FASTPROCESSING)) {Datum.process_flags |= AI_FASTPROCESSING;SSaifast.processing += Datum} +#define STOP_AIFASTPROCESSING(Datum) Datum.process_flags &= ~AI_FASTPROCESSING;SSaifast.processing -= Datum /mob/living var/datum/ai_holder/ai_holder = null @@ -27,7 +35,21 @@ var/busy = FALSE // If true, the ticker will skip processing this mob until this is false. Good for if you need the // mob to stay still (e.g. delayed attacking). If you need the mob to be inactive for an extended period of time, // consider sleeping the AI instead. - + var/process_flags = 0 // Where we're processing, see flag defines. + var/list/static/fastprocess_stances = list( + STANCE_ALERT, + STANCE_APPROACH, + STANCE_FIGHT, + STANCE_BLINDFIGHT, + STANCE_REPOSITION, + STANCE_MOVE, + STANCE_FOLLOW, + STANCE_FLEE, + STANCE_DISABLED + ) + var/list/static/noprocess_stances = list( + STANCE_SLEEP + ) /datum/ai_holder/hostile @@ -40,16 +62,34 @@ /datum/ai_holder/New(var/new_holder) ASSERT(new_holder) holder = new_holder - SSai.processing += src home_turf = get_turf(holder) + manage_processing(AI_PROCESSING) + GLOB.stat_set_event.register(holder, src, .proc/holder_stat_change) ..() /datum/ai_holder/Destroy() holder = null - SSai.processing -= src // We might've already been asleep and removed, but byond won't care if we do this again and it saves a conditional. + manage_processing(AI_NO_PROCESS) home_turf = null return ..() +/datum/ai_holder/proc/manage_processing(var/desired) + if(desired & AI_PROCESSING) + START_AIPROCESSING(src) + else + STOP_AIPROCESSING(src) + + if(desired & AI_FASTPROCESSING) + START_AIFASTPROCESSING(src) + else + STOP_AIFASTPROCESSING(src) + +/datum/ai_holder/proc/holder_stat_change(var/mob, old_stat, new_stat) + if(old_stat >= DEAD && new_stat <= DEAD) //Revived + manage_processing(AI_PROCESSING) + else if(old_stat <= DEAD && new_stat >= DEAD) //Killed + manage_processing(AI_NO_PROCESS) + /datum/ai_holder/proc/update_stance_hud() var/image/stanceimage = holder.grab_hud(LIFE_HUD) stanceimage.icon_state = "ais_[stance]" @@ -78,7 +118,6 @@ return forget_everything() // If we ever wake up, its really unlikely that our current memory will be of use. set_stance(STANCE_SLEEP) - SSai.processing -= src update_paused_hud() // Reverses the above proc. @@ -89,7 +128,6 @@ if(!should_wake()) return set_stance(STANCE_IDLE) - SSai.processing += src update_paused_hud() /datum/ai_holder/proc/should_wake() @@ -122,12 +160,23 @@ // For setting the stance WITHOUT processing it /datum/ai_holder/proc/set_stance(var/new_stance) + if(stance == new_stance) + ai_log("set_stance() : Ignoring change stance to same stance request.", AI_LOG_INFO) + return + ai_log("set_stance() : Setting stance from [stance] to [new_stance].", AI_LOG_INFO) stance = new_stance if(stance_coloring) // For debugging or really weird mobs. stance_color() update_stance_hud() + if(new_stance in fastprocess_stances) //Becoming fast + manage_processing(AI_PROCESSING|AI_FASTPROCESSING) + else if(new_stance in noprocess_stances) + manage_processing(AI_NO_PROCESS) //Becoming off + else + manage_processing(AI_PROCESSING) //Becoming slow + // This is called every half a second. /datum/ai_holder/proc/handle_stance_tactical() ai_log("========= Fast Process Beginning ==========", AI_LOG_TRACE) // This is to make it easier visually to disinguish between 'blocks' of what a tick did. @@ -167,19 +216,6 @@ return switch(stance) - if(STANCE_IDLE) - if(should_go_home()) - ai_log("handle_stance_tactical() : STANCE_IDLE, going to go home.", AI_LOG_TRACE) - go_home() - - else if(should_follow_leader()) - ai_log("handle_stance_tactical() : STANCE_IDLE, going to follow leader.", AI_LOG_TRACE) - set_stance(STANCE_FOLLOW) - - else if(should_wander()) - ai_log("handle_stance_tactical() : STANCE_IDLE, going to wander randomly.", AI_LOG_TRACE) - handle_wander_movement() - if(STANCE_ALERT) ai_log("handle_stance_tactical() : STANCE_ALERT, going to threaten_target().", AI_LOG_TRACE) threaten_target() @@ -241,9 +277,23 @@ if(STANCE_IDLE) if(speak_chance) // In the long loop since otherwise it wont shut up. handle_idle_speaking() + if(hostile) ai_log("handle_stance_strategical() : STANCE_IDLE, going to find_target().", AI_LOG_TRACE) find_target() + + if(should_go_home()) + ai_log("handle_stance_tactical() : STANCE_IDLE, going to go home.", AI_LOG_TRACE) + go_home() + + else if(should_follow_leader()) + ai_log("handle_stance_tactical() : STANCE_IDLE, going to follow leader.", AI_LOG_TRACE) + set_stance(STANCE_FOLLOW) + + else if(should_wander()) + ai_log("handle_stance_tactical() : STANCE_IDLE, going to wander randomly.", AI_LOG_TRACE) + handle_wander_movement() + if(STANCE_APPROACH) if(target) ai_log("handle_stance_strategical() : STANCE_APPROACH, going to calculate_path([target]).", AI_LOG_TRACE) @@ -291,4 +341,7 @@ // 'Taunts' the AI into attacking the taunter. /mob/living/proc/taunt(atom/movable/taunter, force_target_switch = FALSE) if(ai_holder) - ai_holder.receive_taunt(taunter, force_target_switch) \ No newline at end of file + ai_holder.receive_taunt(taunter, force_target_switch) + +#undef AI_PROCESSING +#undef AI_FASTPROCESSING \ No newline at end of file diff --git a/code/modules/ai/ai_holder_disabled.dm b/code/modules/ai/ai_holder_disabled.dm index dc3717fe18..d68e2ecf5d 100644 --- a/code/modules/ai/ai_holder_disabled.dm +++ b/code/modules/ai/ai_holder_disabled.dm @@ -6,7 +6,7 @@ // If our holder is able to do anything. /datum/ai_holder/proc/can_act() if(!holder) // Holder missing. - SSai.processing -= src + manage_processing(AI_NO_PROCESS) return FALSE if(holder.stat) // Dead or unconscious. ai_log("can_act() : Stat was non-zero ([holder.stat]).", AI_LOG_TRACE) diff --git a/code/modules/ai/ai_holder_follow.dm b/code/modules/ai/ai_holder_follow.dm index 1e7bb0875d..45d0d1e7a0 100644 --- a/code/modules/ai/ai_holder_follow.dm +++ b/code/modules/ai/ai_holder_follow.dm @@ -57,7 +57,7 @@ ai_log("lose_follow() : Exited.", AI_LOG_DEBUG) /datum/ai_holder/proc/should_follow_leader() - if(!leader) + if(!leader || target) return FALSE if(follow_until_time && world.time > follow_until_time) lose_follow() diff --git a/code/modules/ai/ai_holder_movement.dm b/code/modules/ai/ai_holder_movement.dm index eb465dec5d..3f9eb1b685 100644 --- a/code/modules/ai/ai_holder_movement.dm +++ b/code/modules/ai/ai_holder_movement.dm @@ -43,6 +43,8 @@ ai_log("walk_to_destination() : Exiting.",AI_LOG_TRACE) /datum/ai_holder/proc/should_go_home() + if(stance != STANCE_IDLE) + return FALSE if(!returns_home || !home_turf) return FALSE if(get_dist(holder, home_turf) > max_home_distance) @@ -139,7 +141,7 @@ return MOVEMENT_ON_COOLDOWN /datum/ai_holder/proc/should_wander() - return wander && !leader + return (stance == STANCE_IDLE) && wander && !leader // Wanders randomly in cardinal directions. /datum/ai_holder/proc/handle_wander_movement() diff --git a/code/modules/ai/ai_holder_targeting.dm b/code/modules/ai/ai_holder_targeting.dm index f33906c662..cacfcf56de 100644 --- a/code/modules/ai/ai_holder_targeting.dm +++ b/code/modules/ai/ai_holder_targeting.dm @@ -25,8 +25,8 @@ // Step 1, find out what we can see. /datum/ai_holder/proc/list_targets() - . = hearers(vision_range, holder) - holder // Remove ourselves to prevent suicidal decisions. ~ SRC is the ai_holder. - . -= dview_mob // Not the dview mob either, nerd. + . = ohearers(vision_range, holder) + . -= dview_mob // Not the dview mob! var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha, /obj/structure/blob)) @@ -43,13 +43,8 @@ if(!has_targets_list) possible_targets = list_targets() for(var/possible_target in possible_targets) - var/atom/A = possible_target - if(found(A)) // In case people want to override this. - . = list(A) - break - if(can_attack(A)) // Can we attack it? - . += A - continue + if(can_attack(possible_target)) // Can we attack it? + . += possible_target var/new_target = pick_target(.) give_target(new_target) @@ -57,7 +52,7 @@ // Step 3, pick among the possible, attackable targets. /datum/ai_holder/proc/pick_target(list/targets) - if(target != null) // If we already have a target, but are told to pick again, calculate the lowest distance between all possible, and pick from the lowest distance targets. + if(target) // If we already have a target, but are told to pick again, calculate the lowest distance between all possible, and pick from the lowest distance targets. targets = target_filter_distance(targets) else targets = target_filter_closest(targets) @@ -88,32 +83,31 @@ // Filters return one or more 'preferred' targets. -// This one is for closest targets. +// This one is for targets closer than our current one. /datum/ai_holder/proc/target_filter_distance(list/targets) + var/target_dist = get_dist(holder, target) + var/list/better_targets = list() for(var/possible_target in targets) var/atom/A = possible_target - var/target_dist = get_dist(holder, target) var/possible_target_distance = get_dist(holder, A) - if(target_dist < possible_target_distance) - targets -= A - return targets + if(possible_target_distance < target_dist) + better_targets += A + return better_targets +// Returns the closest target and anything tied with it for distance /datum/ai_holder/proc/target_filter_closest(list/targets) - var/lowest_distance = -1 - var/list/sorted_targets = list() + var/lowest_distance = 1e6 //fakely far + var/list/closest_targets = list() for(var/possible_target in targets) var/atom/A = possible_target var/current_distance = get_dist(holder, A) - if(lowest_distance == -1) + if(current_distance < lowest_distance) + closest_targets.Cut() lowest_distance = current_distance - sorted_targets += A - else if(current_distance < lowest_distance) - targets.Cut() - lowest_distance = current_distance - sorted_targets += A + closest_targets += A else if(current_distance == lowest_distance) - sorted_targets += A - return sorted_targets + closest_targets += A + return closest_targets /datum/ai_holder/proc/can_attack(atom/movable/the_target, var/vision_required = TRUE) if(!can_see_target(the_target) && vision_required) @@ -163,11 +157,6 @@ return TRUE // return FALSE -// Override this for special targeting criteria. -// If it returns true, the mob will always select it as the target. -/datum/ai_holder/proc/found(atom/movable/the_target) - return FALSE - // 'Soft' loss of target. They may still exist, we still have some info about them maybe. /datum/ai_holder/proc/lose_target() ai_log("lose_target() : Entering.", AI_LOG_TRACE) diff --git a/code/modules/ai/ai_holder_targeting_vr.dm b/code/modules/ai/ai_holder_targeting_vr.dm new file mode 100644 index 0000000000..4c7ef85403 --- /dev/null +++ b/code/modules/ai/ai_holder_targeting_vr.dm @@ -0,0 +1,5 @@ +/datum/ai_holder/can_see_target(atom/movable/the_target, view_range = vision_range) + if(the_target && isbelly(the_target.loc)) + return FALSE + + return ..() diff --git a/code/modules/ai/interfaces.dm b/code/modules/ai/interfaces.dm index 6cf085c52e..74ad2eb1a4 100644 --- a/code/modules/ai/interfaces.dm +++ b/code/modules/ai/interfaces.dm @@ -7,12 +7,12 @@ return FALSE /mob/living/simple_mob/IAttack(atom/A) - if(!canClick()) // Still on cooldown from a "click". + if(!checkClickCooldown()) // Still on cooldown from a "click". return ATTACK_ON_COOLDOWN return attack_target(A) // This will set click cooldown. /mob/living/carbon/human/IAttack(atom/A) - if(!canClick()) // Still on cooldown from a "click". + if(!checkClickCooldown()) // Still on cooldown from a "click". return FALSE return ClickOn(A) // Except this is an actual fake "click". @@ -20,7 +20,7 @@ return FALSE /mob/living/simple_mob/IRangedAttack(atom/A) - if(!canClick()) // Still on cooldown from a "click". + if(!checkClickCooldown()) // Still on cooldown from a "click". return ATTACK_ON_COOLDOWN return shoot_target(A) @@ -74,30 +74,29 @@ // Respects move cooldowns as if it had a client. // Also tries to avoid being superdumb with moving into certain tiles (unless that's desired). /mob/living/proc/IMove(turf/newloc, safety = TRUE) - if(check_move_cooldown()) -// if(!newdir) -// newdir = get_dir(get_turf(src), newloc) + if(!checkMoveCooldown()) + return MOVEMENT_ON_COOLDOWN - // Check to make sure moving to newloc won't actually kill us. e.g. we're a slime and trying to walk onto water. - if(istype(newloc)) - if(safety && !newloc.is_safe_to_enter(src)) - return MOVEMENT_FAILED - - // Move()ing to another tile successfully returns 32 because BYOND. Would rather deal with TRUE/FALSE-esque terms. - // Note that moving to the same tile will be 'successful'. - var/turf/old_T = get_turf(src) - - // An adjacency check to avoid mobs phasing diagonally past windows. - // This might be better in general movement code but I'm too scared to add it, and most things don't move diagonally anyways. - if(!old_T.Adjacent(newloc)) + // Check to make sure moving to newloc won't actually kill us. e.g. we're a slime and trying to walk onto water. + if(istype(newloc)) + if(safety && !newloc.is_safe_to_enter(src)) return MOVEMENT_FAILED - . = SelfMove(newloc) ? MOVEMENT_SUCCESSFUL : MOVEMENT_FAILED - if(. == MOVEMENT_SUCCESSFUL) - set_dir(get_dir(old_T, newloc)) - // Apply movement delay. - // Player movement has more factors but its all in the client and fixing that would be its own project. - setMoveCooldown(movement_delay()) - return + // Move()ing to another tile successfully returns 32 because BYOND. Would rather deal with TRUE/FALSE-esque terms. + // Note that moving to the same tile will be 'successful'. + var/turf/old_T = get_turf(src) - . = MOVEMENT_ON_COOLDOWN // To avoid superfast mobs that aren't meant to be superfast. Is actually -1. + // An adjacency check to avoid mobs phasing diagonally past windows. + // This might be better in general movement code but I'm too scared to add it, and most things don't move diagonally anyways. + if(!old_T.Adjacent(newloc)) + return MOVEMENT_FAILED + + var/delay_will_be = movement_delay() + + . = SelfMove(newloc, get_dir(loc,newloc), delay_will_be) ? MOVEMENT_SUCCESSFUL : MOVEMENT_FAILED + if(. == MOVEMENT_SUCCESSFUL) + set_dir(get_dir(old_T, newloc)) + // Apply movement delay. + // Player movement has more factors but its all in the client and fixing that would be its own project. + setMoveCooldown(delay_will_be) + return \ No newline at end of file diff --git a/code/modules/alarm/atmosphere_alarm.dm b/code/modules/alarm/atmosphere_alarm.dm index f19044a6b7..be97493afd 100644 --- a/code/modules/alarm/atmosphere_alarm.dm +++ b/code/modules/alarm/atmosphere_alarm.dm @@ -5,7 +5,7 @@ var/list/major_alarms = new() var/list/map_levels = using_map.get_map_levels(z) for(var/datum/alarm/A in visible_alarms()) - if(z && (z && !(A.origin?.z in map_levels))) + if(z && !(A.origin?.z in map_levels)) continue if(A.max_severity() > 1) major_alarms.Add(A) @@ -15,7 +15,7 @@ var/list/minor_alarms = new() var/list/map_levels = using_map.get_map_levels(z) for(var/datum/alarm/A in visible_alarms()) - if(z && (z && !(A.origin?.z in map_levels))) + if(z && !(A.origin?.z in map_levels)) continue if(A.max_severity() == 1) minor_alarms.Add(A) diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index b5851ab4c6..8d28288afb 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -80,14 +80,12 @@ return PROCESS_KILL /obj/item/device/assembly/examine(mob/user) - ..(user) + . = ..() if((in_range(src, user) || loc == user)) if(secured) - to_chat(user, "\The [src] is ready!") + . += "\The [src] is ready!" else - to_chat(user, "\The [src] can be attached!") - return - + . += "\The [src] can be attached!" /obj/item/device/assembly/attack_self(mob/user as mob) if(!user) return 0 diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index c95d2869e9..2f6d7ab02f 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -57,12 +57,12 @@ master.update_icon() /obj/item/device/assembly_holder/examine(mob/user) - ..(user) + . = ..() if ((in_range(src, user) || src.loc == user)) if (src.secured) - to_chat(user, "\The [src] is ready!") + . += "\The [src] is ready!" else - to_chat(user, "\The [src] can be attached!") + . += "\The [src] can be attached!" /obj/item/device/assembly_holder/HasProximity(atom/movable/AM as mob|obj) if(a_left) @@ -84,8 +84,8 @@ if(a_right) a_right.on_found(finder) -/obj/item/device/assembly_holder/Move() - ..() +/obj/item/device/assembly_holder/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() if(a_left && a_right) a_left.holder_movement() a_right.holder_movement() @@ -155,11 +155,11 @@ master.receive_signal() return 1 -/obj/item/device/assembly_holder/hear_talk(mob/living/M as mob, msg, verb, datum/language/speaking) +/obj/item/device/assembly_holder/hear_talk(mob/M, list/message_pieces, verb) if(a_right) - a_right.hear_talk(M,msg,verb,speaking) + a_right.hear_talk(M, message_pieces, verb) if(a_left) - a_left.hear_talk(M,msg,verb,speaking) + a_left.hear_talk(M, message_pieces, verb) /obj/item/device/assembly_holder/timer_igniter name = "timer-igniter assembly" diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 2f10a91fda..b34b2c0c11 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -79,8 +79,11 @@ /obj/item/device/assembly/infra/Move() var/t = dir - ..() + . = ..() set_dir(t) + +/obj/item/device/assembly/infra/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() QDEL_LIST_NULL(i_beams) /obj/item/device/assembly/infra/holder_movement() diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index c2fb202984..b294fc90c8 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -8,9 +8,9 @@ /obj/item/device/assembly/mousetrap/examine(var/mob/user) - ..(user) + . = ..(user) if(armed) - to_chat(user, "It looks like it's armed.") + . += "It looks like it's armed." /obj/item/device/assembly/mousetrap/update_icon() if(armed) diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index a93bda4809..c439163fc2 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -88,8 +88,8 @@ var/obj/item/weapon/grenade/chem_grenade/grenade = holder.loc grenade.primed(scanning) -/obj/item/device/assembly/prox_sensor/Move() - ..() +/obj/item/device/assembly/prox_sensor/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() sense() /obj/item/device/assembly/prox_sensor/interact(mob/user as mob)//TODO: Change this to the wires thingy diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 8ebf8278a8..8990e01d63 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -7,7 +7,8 @@ var/listening = 0 var/recorded //the activation message -/obj/item/device/assembly/voice/hear_talk(mob/living/M as mob, msg) +/obj/item/device/assembly/voice/hear_talk(mob/M, list/message_pieces, verb) + var/msg = multilingual_to_message(message_pieces) if(listening) recorded = msg listening = 0 diff --git a/code/modules/blob2/blobs/base_blob.dm b/code/modules/blob2/blobs/base_blob.dm index 2e04c36b95..1bcf7c35bd 100644 --- a/code/modules/blob2/blobs/base_blob.dm +++ b/code/modules/blob2/blobs/base_blob.dm @@ -64,11 +64,11 @@ GLOBAL_LIST_EMPTY(all_blobs) return FALSE /obj/structure/blob/examine(mob/user) - ..() + . = ..() if(!overmind) - to_chat(user, "It seems inert.") // Dead blob. + . += "It seems inert." // Dead blob. else - to_chat(user, overmind.blob_type.desc) + . += overmind.blob_type.desc /obj/structure/blob/get_description_info() if(overmind) diff --git a/code/modules/blob2/overmind/types/roiling_mold.dm b/code/modules/blob2/overmind/types/roiling_mold.dm index dd42be30ac..e909d06086 100644 --- a/code/modules/blob2/overmind/types/roiling_mold.dm +++ b/code/modules/blob2/overmind/types/roiling_mold.dm @@ -21,6 +21,7 @@ attack_message_synth = ", and your shell buckles" attack_verb = "lashes" spore_projectile = /obj/item/projectile/arc/spore + factory_type = /obj/structure/blob/factory/turret /datum/blob_type/roiling_mold/proc/find_target(var/obj/structure/blob/B, var/tries = 0, var/list/previous_targets = null) if(tries > 3) @@ -33,7 +34,7 @@ previous_targets |= L - L = find_target(B, tries + 1, previous_targets) + return find_target(B, tries + 1, previous_targets) return L diff --git a/code/modules/busy_space_vr/organizations.dm b/code/modules/busy_space/organizations_vr.dm similarity index 66% rename from code/modules/busy_space_vr/organizations.dm rename to code/modules/busy_space/organizations_vr.dm index 8f38ea3307..e14d113689 100644 --- a/code/modules/busy_space_vr/organizations.dm +++ b/code/modules/busy_space/organizations_vr.dm @@ -61,12 +61,12 @@ name = "NanoTrasen Incorporated" short_name = "NanoTrasen" acronym = "NT" - desc = "NanoTrasen is one of the foremost research and development companies in SolGov space. \ + desc = "NanoTrasen is one of the foremost research and development companies in Commonwealth space. \ Originally focused on consumer products, their swift move into the field of Phoron has lead to \ them being the foremost experts on the substance and its uses. In the modern day, NanoTrasen prides \ itself on being an early adopter to as many new technologies as possible, often offering the newest \ products to their employees. In an effort to combat complaints about being 'guinea pigs', Nanotrasen \ - also offers one of the most comprehensive medical plans in SolGov space, up to and including cloning \ + also offers one of the most comprehensive medical plans in Commonwealth space, up to and including cloning \ and therapy.\

\ NT's most well known products are its phoron based creations, especially those used in Cryotherapy. \ @@ -113,9 +113,9 @@ "NAB Smythside Central Headquarters in Sol", "NAS Zeus orbiting Virgo-Prime", "NIB Posideon in Alpha Centauri", - "NTB An-Nur on Virgo-Prime", + "NTB Anur on Virgo-Prime", "the ruins of Virgo-3B", //YW EDIT - "the NanoTrasen phoron refinery in Vilous", + "the phoron refinery in Vilous", "a dockyard orbiting Virgo-Prime", "an asteroid orbiting Virgo 3", ) @@ -137,7 +137,7 @@ desc = "Hephaestus Industries is the largest supplier of arms, ammunition, and small millitary vehicles in Sol space. \ Hephaestus products have a reputation for reliability, and the corporation itself has a noted tendency to stay removed \ from corporate politics. They enforce their neutrality with the help of a fairly large asset-protection contingent which \ - prevents any contracting polities from using their own materiel against them. SolGov itself is one of Hephastus’ largest \ + prevents any contracting polities from using their own materiel against them. The Terran Commonwealth and the Salthan Fyrds are of Hephastus’ largest \ bulk contractors owing to the above factors." history = "" work = "arms manufacturer" @@ -164,7 +164,7 @@ "Tyr" ) destination_names = list( - "a SolGov dockyard on Luna", + "a SolCom dockyard on Luna", "a Fleet outpost in the Almach Rim", "a Fleet outpost on the Moghes border" ) @@ -173,13 +173,13 @@ name = "Vey-Medical" short_name = "Vey-Med" acronym = "VM" - desc = "Vey-Med is one of the newer TSCs on the block and is notable for being largely owned and opperated by Skrell. \ - Despite the suspicion and prejudice leveled at them for their alien origin, Vey-Med has obtained market dominance in \ + desc = "Vey-Med is one of the newer TSCs on the block and is notable for being largely owned and opperated by Skrell and Elysians. \ + Despite the suspicion and prejudice leveled at them for their origin, Vey-Med has obtained market dominance in \ the sale of medical equipment-- from surgical tools to large medical devices to the Oddyseus trauma response mecha \ and everything in between. Their equipment tends to be top-of-the-line, most obviously shown by their incredibly \ - human-like FBP designs. Vey’s rise to stardom came from their introduction of ressurective cloning, although in \ - recent years they’ve been forced to diversify as their patents expired and NanoTrasen-made medications became \ - essential to modern cloning." + human-like FBP designs. Vey’s rise to stardom came from their introduction of ressurective cloning, although in \ + recent years they’ve been forced to diversify as their patents expired and NanoTrasen-made medications became \ + essential in bulk cloning." history = "" work = "medical equipment supplier" headquarters = "" @@ -214,8 +214,8 @@ acronym = "ZH" desc = "Zeng-Hu is an old TSC, based in the Sol system. Until the discovery of Phoron, Zeng-Hu maintained a stranglehold \ on the market for medications, and many household names are patentted by Zeng-Hu-- Bicaridyne, Dylovene, Tricordrizine, \ - and Dexalin all came from a Zeng-Hu medical laboratory. Zeng-Hu’s fortunes have been in decline as Nanotrasen’s near monopoly \ - on phoron research cuts into their R&D and Vey-Med’s superior medical equipment effectively decimated their own equipment \ + and Dexalin all came from a Zeng-Hu medical laboratory. Zeng-Hu’s fortunes have been in decline as Nanotrasen’s development of \ + mass cloning medication cuts into their R&D and Vey-Med’s superior medical equipment effectively decimated their own equipment \ interests. The three-way rivalry between these companies for dominance in the medical field is well-known and a matter of \ constant economic speculation." history = "" @@ -233,8 +233,8 @@ desc = "Ward-Takahashi focuses on the sale of small consumer electronics, with its computers, communicators, \ and even mid-class automobiles a fixture of many households. Less famously, Ward-Takahashi also supplies most \ of the AI cores on which vital control systems are mounted, and it is this branch of their industry that has \ - led to their tertiary interest in the development and sale of high-grade AI systems. Ward-Takahashi’s economies \ - of scale frequently steal market share from Nanotrasen’s high-price products, leading to a bitter rivalry in the \ + led to their tertiary interest in the development and sale of high-grade AI systems. Ward-Takahashi’s economies \ + of scale frequently steal market share from Nanotrasen’s high-price products, leading to a bitter rivalry in the \ consumer electronics market." history = "" work = "electronics manufacturer" @@ -261,10 +261,10 @@ name = "Bishop Cybernetics" short_name = "Bishop" acronym = "BC" - desc = "Bishop’s focus is on high-class, stylish cybernetics. A favorite among transhumanists (and a bête noire for \ + desc = "Bishop's focus is on high-class, stylish cybernetics. A favorite among transhumanists (and a byte noire for \ bioconservatives), Bishop manufactures not only prostheses but also brain augmentation, synthetic organ replacements, \ and odds and ends like implanted wrist-watches. Their business model tends towards smaller, boutique operations, giving \ - it a reputation for high price and luxury, with Bishop cyberware often rivalling Vey-Med’s for cost. Bishop’s reputation \ + it a reputation for high price and luxury, with Bishop cyberware often rivalling Vey-Med’s for cost. Bishop’s reputation \ for catering towards the interests of human augmentation enthusiasts instead of positronics have earned it ire from the \ Positronic Rights Group and puts it in ideological (but not economic) comptetition with Morpheus Cyberkinetics." history = "" @@ -389,10 +389,10 @@ /datum/lore/organization/tsc/xion name = "Xion Manufacturing Group" short_name = "Xion" - desc = "Xion, quietly, controls most of the market for industrial equipment. Their portfolio includes mining exosuits, \ + desc = "Xion, quietly, controls most of the market for industrial equipment on the frontier. Their portfolio includes mining exosuits, \ factory equipment, rugged positronic chassis, and other pieces of equipment vital to the function of the economy. Xion \ keeps its control of the market by leasing, not selling, their equipment, and through infamous and bloody patent protection \ - lawsuits. Xion are noted to be a favorite contractor for SolGov engineers, owing to their low cost and rugged design." + lawsuits. Xion are noted to be a favorite contractor for Rim engineers, owing to their low cost and rugged design." history = "" work = "industrial equipment manufacturer" headquarters = "" @@ -429,29 +429,21 @@ destination_names = list() /datum/lore/organization/gov/solgov - name = "Solar Central Government" - short_name = "SolGov" - acronym = "SCG" - desc = "SolGov is a federation of human governmental entities based on Earth, Sol, which defines top-level law for their member systems. \ - Member systems receive various benefits such as defensive pacts, trade agreements, social support and funding, and being able to participate \ - in the Colonial Assembly. The majority, but not all human territories are members of SolGov. As such, SolGov is a major power and \ - generally represents humanity on the galactic stage." - history = "A Unified Earth Government was formed in the wake of the Sol Interplanetary War and other conflicts of the 2160s. \ - With numerous Earth governments fighting independent battles against factions of both Facist and Communist forces, the UN became \ - involved, eventually using the war to absorb most, if not all Earth governments into itself, forming a global government to combat \ - the terrorists and stabilize the planet and its other world colonies. The UN won the war and the Unified Earth Government was formed, \ - with its' primary defense, scientific and exploratory force being the newly formed USDF. Although the UEG seemed to have complete \ - control over Earth and Sol's colonies, the UN still existed as an organization and a political entity to continue mediating between \ - countries and colonies. In 2291, Tobias Shaw and Wallace Fujikawa invented a device that could transition normal matter into slipspace \ - (bluespace), and FTL travel became possible. As humanity expanded beyond the Solar System, the UEG reorganized its self to become the \ - centralized government of humanity known today; Sol Central. Organizations like the USDF would continue to exist as a peacekeeping \ - force to protect most of humanity's interests across the galaxy." - work = "governing body of humanity's colonies" + name = "Commonwealth of Sol-Procyon" + short_name = "SolCom" + acronym = "CWS" + desc = "The Commonwealth of Sol-Procyon is the evolution of the many nation states of Earth and the outlying colonies \ + having spread amongst the stars. While not quite the hegemon of all Humanity, a narrow majority of them follow \ + the flag of the Commonwealth. The constant tug and pull of government versus corporation, democracy and power \ + troubles this federation of deeply entrenched human colonies much like it did in the 21st century. Some things \ + never change. However, they are economically and culturally quite dominant, although not everyone likes that fact." + history = "" + work = "rump state of humanity's colonies" headquarters = "Paris, Earth" motto = "" autogenerate_destination_names = TRUE - ship_prefixes = list("SCG-T" = "transportation", "SCG-D" = "diplomatic", "SCG-F" = "freight") + ship_prefixes = list("CWS-T" = "transportation", "CWS-D" = "diplomatic", "CWS-F" = "freight") destination_names = list( "Mercury", "Venus", @@ -460,44 +452,10 @@ "Mars", "Titan", "Europa", - "the SolGov embassy in Virgo-Erigone", - "the SolGov embassy in Vilous" + "the SolCom embassy in Virgo-Erigone", + "the SolCom embassy in Vilous" )// autogen will add a lot of other places as well. - -/* YW EDIT START, We're not on Virgo anymore -/datum/lore/organization/gov/virgov // Overrides Polaris stuff - name = "Virgo-Erigone Governmental Authority" - short_name = "" - desc = "Existing far outside the reach of SolGov space, the only governing body of the Virgo-Erigone system is the Virgo-Prime Governmental \ - Authority, also known as VEGA. It is a Technocracy founded and operated by NanoTrasen, using company appointed experts hired to see \ - to the comfort and well being of Virgo's citizens; most of whom are also NanoTrasen employees. VEGA provides basic social services \ - such as law enforcement, emergency services, medical care, education, and infrastructure. VEGA's operations are based on the world \ - of Virgo-Prime, within the spaceport city of Anur. Although the government is an entity of NanoTrasen, some elements of democracy \ - are still practiced, such as voting on changes to local law, policy, or public works." - history = "VEGA was founded in 2556, shortly after the Virgo-Erigone system was colonized by a population of 1000. That population has \ - multiplied many times since then as wealth and commerce come and go from this frontier star system." - work = "governing body of Virgo-Erigone" - headquarters = "Anur, Virgo-Prime" - motto = "Reach for the Stars." - autogenerate_destination_names = FALSE - - ship_prefixes = list("VEFD" = "fire rescue", "VEPD" = "patrol", "VEGA" = "administrative", "SAR" = "medivac") - destination_names = list( - "the colony at Virgo-3B", - "the VORE-1 debris field", - "a mining colony on Virgo-2", - "the Anur Spaceport", - "to a local distress beacon", - "NAS Zeus orbiting Virgo-Prime", - "NTB An-Nur on Virgo-Prime", - "the colony at Virgo-3B", - "a dockyard orbiting Virgo-Prime", - "an asteroid orbiting Virgo 3", - "a telecommunications satellite near Virgo-3B", - "a telecommunications satellite near Virgo-Prime" -*///YW Edit End - -/* // Waiting for lore to be updated. +/* // Waiting for Joan to do their thing. /datum/lore/organization/gov/federation name = "United Federation of Planets" short_name = "Federation" @@ -517,7 +475,6 @@ work = "governing body" headquarters = "" motto = "" - //Star Trek ship names! ship_prefixes = list("SCV" = "military", "STV" = "trading", "SDV" = "diplomatic") ship_names = list("Kestrel", @@ -570,28 +527,13 @@ /datum/lore/organization/mil/usdf name = "United Sol Defense Force" short_name = "" // This is blank on purpose. Otherwise they call the ships "USDF USDF Name" - desc = "The USDF is the dedicated military force of SolGov, originally formed by the United Nations. It is the \ - dominant superpower of the Orion Spur, and is able to project its influence well into parts of the Perseus and \ - Sagittarius arms of the galaxy. However, regions beyond that are too far for the USDF to be a major player." - history = "Earth's clashes with dissident political movements, the most important of which were the \"Red Faction\" and \"Storm Front,\" \ - began the crisis that led to the formation of the USDF. The Storm Front movement was a fascist organization based on the Jovian \ - Moons, a group that received backing from some corporations operating in the Federal Republic of Germany on Earth. Their \ - ideological opponents, the Red Faction, formed a Marxist-Leninist group on Mars centered around the leadership of Vladimir Koslov \ - around the same time. The USDF was commissioned in 2163 as a military force primarily composed of Naval and Marine \ - forces. In July 2164, the USDF partook in its first battle. From this point, the USDF was used by the UN in conflicts, \ - including the Interplanetary War. When the conflicts of Sol ended, a newly powerful Unified Earth Government (later SolGov) \ - and USDF began to expand into the stars. The apex of human expansion would come in 2490, when more than 600 worlds were \ - considered part of SolGov's territory, many developing into full-fledged colonies. By this time, a ring of Outer colonies \ - was providing SolGov with the raw materials that made the macro-economy function; with the political power remaining with \ - the Inner colonies. The massive difference in wealth distribution and political power, which became a hallmark of humanity \ - by this period, led to new threats of secession from the outer ring. In 2492, the colony of Far Isle was razed by nuclear \ - weapons after a massive uprising, creating a new found reason to rebel. SolGov began to wage a bloody struggle against \ - groups of terrorists (or freedom fighters) called the Insurrectionists, who wanted independence. The USDF continues to battle \ - sepratists to this day. The USDF's operations meanwhile focus on curbing piracy operations, as well as providing a deterrent \ - against other major military powers such as the Moghes Hegemony." + desc = "The USDF is the dedicated military force of the Commonwealth of Sol-Procyon, originally formed by a council of the Supranations. It is a \ + considerable tool of military power projection, and is able to effectively police a vast amount of space within the Orion Spur. \ + However, regions beyond that are too far for the USDF to be a major player." + history = "" work = "peacekeeping and piracy suppression" headquarters = "Paris, Earth" - motto = "Per Mare, Per Terras, Per Constellatum." // Stolen from Halo because fuck you that's why. -Ace + motto = "pax in terra et astra" // Peace on Earth and Stars ship_prefixes = list("USDF" = "military", "USDF" = "anti-piracy", "USDF" = "escort", "USDF" = "humanitarian", "USDF" = "peacekeeping", "USDF" = "search-and-rescue", "USDF" = "war game") // It's all USDF but let's mix up what missions they do. ship_names = list("Aegis Fate", "Ain't No Sunshine", @@ -651,7 +593,7 @@ "Two for Flinching") destination_names = list("San Francisco on Earth", "Gateway One above Luna", - "SolGov Headquarters on Earth", + "SolCom Headquarters on Earth", "Olympus City on Mars", "Hermes Naval Shipyard above Mars", "Cairo Station above Earth", @@ -663,12 +605,12 @@ "a settlement on Ceti IV-B", "a colony ship around Ceti IV-B", "a naval station above Ceti IV-B", - "a classified location in SolGov territory", + "a classified location in SolCom territory", "a classified location in uncharted space", "an emergency nav bouy", "the USDF Naval Academy on Earth", "Fort Rain on Tal") - +//YW Change start, as we are not planning on removing sol gov like vore, we will keep this here until we know what to do with it. /datum/lore/organization/mil/oni name = "SolGov Office of Naval Intelligence" short_name = "" // This is blank on purpose. Otherwise they call the ships "ONI ONI Name" @@ -687,7 +629,7 @@ motto = "The truth will set you free." ship_prefixes = list("ONI" = "classified", "ONI" = "archeological", "ONI" = "exploration", "ONI" = "logistic") // It's all ONI but let's mix up what missions they do. ship_names = list("Bastille", - "Fantôme", + "Fant�me", "Harpocrates", "Hoenir", "Mata Hari", @@ -704,6 +646,7 @@ "if told you I'd have to kill you", "... wait, why am I even telling you this? Just let me pass", "stop asking questions") +//YW Change stop /* Space foxes: deleted. Keeping them commented for historical reasons. -YW /datum/lore/organization/gov/kitsuhana name = "Kitsuhana Heavy Industries" @@ -763,14 +706,14 @@ /datum/lore/organization/gov/ares name = "Ares Confederation" short_name = "ArCon" - desc = "A rebel faction in the Cygnus Arm that renounced the government of both SolGov and their corporate overlords. \ - The Confederation has two fleets; a regular United Fleet Host comprised of professional crewmen and officers, and the Free Host \ - of the Confederation which uses privateers, volunteers and former pirates. The Ares Confederation only holds a few dozen star \ - systems, but they will fiercely defend against any incursion upon their territory, especially by the USDF." - history = "Originally only a strike of miners on the dusty, arid planet of Ares in the year 2540, the Ares Confederation was quickly \ - established under the leadership of retired USDF Colonel Rodrick Gellaume, who is now Prime Minister." - work = "rebel fringe government" - headquarters = "Paraiso a Àstrea" + desc = "A loose coalition of socialist and communist movements on the fringes of the human diaspora \ + the Ares Confederation is a government-in-exile from the original uprisings of Mars to stop \ + the government of corporations and capitalist interests over Humanity. While they failed twice \ + they have made their own home far beyond the reach of an effective military response by the \ + Commonwealth. They have become renowned engineers and terraforming experts, mostly due to necessity." + history = "" + work = "idealist socialist government" + headquarters = "Paraiso a Àstrea" motto = "Liberty to the Stars!" ship_prefixes = list("UFHV" = "military", "FFHV" = "shady") @@ -782,7 +725,25 @@ "Fiery Justice", "Fist of Ares", "Freedom", - "Fuck The Captain", + "Marx Was Right", + "Endstage Capitalism", + "Neoluddism Is The Answer Guys", + "Anarchocapitalism Is A Joke", + "One Of Ours, Captain!", + "Is This Thing On?", + "Front Toward Enemy", + "Path of Prosperity", + "Freedom Cry", + "Rebel Yell", + "We Will Return To Mars", + "According To Our Abilities", + "Posadism Gang", + "Accelerationism Doesn't Work In A Vaccuum", + "Don't Shoot, We're Unarmed I Think", + "The Big Stick For Speaking Softly", + "Bull Moose", + "Engels Needs Some Love Too", + "The Icepick", "Gauntlet", "Gellaume", "Hero of the Revolution", @@ -806,110 +767,111 @@ "Torch") destination_names = list("Drydocks of the Ares Confederation", "a classified location", - "a Homestead on Paraiso a Àstrea", + "a Homestead on Paraiso a Àstrea", "a contested sector of ArCon space", "one of our free colonies", - "the Gateway 98-C at Arest", + "the Gateway 98-C at Ares", "Sars Mara on Ares", "Listening Post Maryland-Sigma", "an emergency nav bouy", "New Berlin on Nov-Ferrum", "a settlement needing our help", "Forward Base Sigma-Alpha in ArCon space") + +/datum/lore/organization/gov/elysian + name = "The Elysian Colonies" + short_name = "Demi-Monde" + acronym = "ECS" + desc = "The Elysian Colonies, located spinwards from the Commonwealth, are a disunited bunch of \ + vanity states, utopia projects and personal autocracies, whose only unifying characteristic is \ + a general disregard of 'normal' social conventions of Humanity as well as their inherent desire \ + to keep to their ways, in which cases they do sometimes unite to fight off an outside threat. \ + The Elysian Colonies are one of the few places where true slavery is not only accepted, but sadly also \ + rather commonplace if you go to the wrong worlds. Not that they don't internally have at least a dozen would-be liberators." + history = "" + work = "fracturous vanity colonies" + headquarters = "" + motto = "" -/datum/lore/organization/gov/imperial - name = "Auream Imperium" - short_name = "Imperial" - desc = "Also known as the \"Golden Empire\", Auream Imperium is a superpower of elf-like humanoid beings who thrive in the southern \ - galaxy, presumably somewhere in the mid Centaurus Arm. Having existed in the observation shadow of the galactic core, this \ - galactic superpower had remained undiscovered by humanity despite its size until only recently. First contact was made on \ - June 15th 2561, when Imperial Navy cartographers stumbled upon the Virgo-Erigone system, far from the influence of the USDF. \ - Though little is currently known about the Golden Empire, their scholars have been willing to share some information. They \ - are currently ruled by a woman referred to as Empress Gutamir who is allegedly hundreds of years old. Images and portraits \ - of the empress depict a tall woman with an idealized figure of beauty as might have been seen in ancient Roman or Greek \ - works of art. She has white hair, silvery eyes, and a fair complexion. Whether or not these images are an authentic or \ - even an accurate depiction remains unknown. Vessels of the Golden Empire utilize technology unlike anything humans have ever \ - seen. Although they use bluespace for FTL travel, the methods in which they tap into bluespace has yet to be studied in any \ - detail by human scientists. Their kind hails from a binary system of Earth-like worlds called Sanctum and Venio, though the \ - exact location of these worlds is not known due to a culture of secrecy toward outsiders." - history = "According to Imperial scholars, the Golden Empire is a civilization that has existed for at least 10,000 Earth years. \ - Their home system is said to host not one but two Earth-like worlds, both of which have been home to elves as far as their \ - records go back. How the elves were able to travel between these worlds is currently unknown, but apparently they have been \ - doing so for at least the last 2000 years. However, from what is understood, until only 300 years ago, these accomplishments \ - were only made possible by a very limited number of ships apparently using borrowed technology from an undiscovered \ - civilization they call \"Architectus.\" Curiously, the Golden Empire's primary language is strikingly similar to ancient \ - Latin on Earth, indicating that they may have somehow come into contact with Earth at some point in their history. However, \ - this contradicts what historical records they have been willing to share with us, as it would predate the timeline of space \ - travel they have given us so far." - work = "rule over the southern galaxy in an uncharted region they call Segmentum Obscurum" - headquarters = "Sanctum and Venio" - motto = "Aut inveniam viam aut faciam" + ship_prefixes = list("ECS" = "military", "ECS" = "Transport", "ECS" = "Special Transport", "ECS" = "Diplomat") //The Special Transport is SLAAAAVES. + ship_names = list("Bring Me Wine!", + "I Can't Believe You", + "More Wives Your Grace?", + "Daddy Bought Me This", + "What Do You Mean It's Unethical", + "Libertine Ideals", + "The True Free", + "Unbound", + "No Man Shackled", + "All Men Shackled", + "All Women Shackled", + "All Hermaphrodites Shackled", + "You Know We Just Shackle Anyone", + "Nobody Deserves Shackles", + "Debt Slavery Is Ethical", + "Fashioned After Tradition", + "Sic Vic Pacem", + "Cultivate This", + "We Demand Self-Governance", + "A Thousand Cultures", + "There Is a Character Limit?", + "Slave Galley I", + "The Unconquered CCXXII" + + ) + destination_names = list("Cygnus", + "The Ultra Dome of Brutal Kill Death", + "Sanctum", + "Infernum", + "The Most Esteemed Estates of Fred Fredson, Heir of the Fred Throne and All its illustrious Fredpendencies", + "Priory Melana", + "The Clone Pits of Meridiem Five", + "Forward Base Mara Alpha", + "a very tasty looking distress call", + "a liberation intervention", + "a nav bouy within Cygnus Space", + "a Elysian only refuel outpost", + "to a killer party the Fredperor is holding right now") + + +/datum/lore/organization/gov/fyrds + name = "Unitary Alliance of Salthan Fyrds" + short_name = "Fyrds" + acronym = "SMS" + desc = "Born out of neglect, the Salthan Fyrds are cast-off colonies of the Commonwealth after giving up on \ + pacifying the wartorn region and fighting off the stray Unathi Raiders after the Hegemony War. \ + In the end they self-organized into military pacts and have formed a militaristic society, in which \ + every person, be it organic or robot, is a soldier for the continued cause in serving as aegis against \ + another Unathi Incursion. They are very no-nonsense." + history = "" + work = "human stratocracy" + headquarters = "The Pact,Myria" + motto = "" - ship_prefixes = list("Bellator" = "naval", "Mercator" = "trade", "Benefactori" = "mercy", "Salvator" = "search-and-rescue", "Rimor" = "exploration", "Legatus" = "diplomatic") // It's all HMS but let's mix up what they do. - ship_names = list("Ambition", - "Aurora", - "Argo", - "Behemoth", - "Beholder", - "Boreas", - "Bulwark", - "Calypso", - "Cerberus", - "Chimera", - "Chronos", - "Civitas", - "Colossus", - "Covenant", - "Cyrus", - "Destiny", - "Epimetheus", - "Eternal", - "Excalibur", - "Forerunner", - "Fortitude", - "Hellion", - "Hussar", - "Hyperion", - "Illustria", - "Immortal", - "Infinitum", - "Inquisitor", - "Invictus", - "Judgment", - "Juggernaut", - "Knossos", - "Legacy", - "Leviathan", - "Marathon", - "Megalith", - "Mobius", - "Nemesis", - "Nightingale", - "Oblivion", - "Octavius", - "Orthrus", - "Pandora", - "Phalanx", - "Revenant", - "Rhapsody", - "Scylla", - "Seraphim", - "Starfall", - "Stargazer", - "Starhammer", - "Templar", - "Thundrus", - "Titan", - "Triarius", - "Trident", - "Tyrannus", - "Ulysses", - "Valkyrie", - "Victoria", - "Vindicator", - "Wreath") - destination_names = list("uncharted space", - "Cor Galaxia", - "near Cor Galaxia", - "Segmentum Obscurum", // Basically their home territory, where our telescopes can't see. They prefer to keep it that way. They call it something else internally. - ) + ship_prefixes = list("SMS" = "Military") // The Salthans don't do anything else. + ship_names = list("Yi Sun-sin", + "Horatio Nelson", + "Scipio Africanus", + "Hannibal Barca", + "Hamilcar Barca", + "Caesar", + "Belisarius", + "Aggripa", + "Pericles", + "Alexander", + "Napoleon Bonaparte", + "Charles XI", + "Blas de Lezo", + "Ivan Sirko", + "Frederick the Great", + "William of Normandy", + "Shaka Zulu", + "Patton", + "MacArthur", + "Rommel") + destination_names = list("Base Alpha-Romero", + "Base Zeta-Xray", + "Base Epsilon-Epsilon", + "Base Xray-Beta", + "Base Gamma-Delta", + "Base Yotta-Epsilon") diff --git a/code/modules/catalogue/catalogue_data.dm b/code/modules/catalogue/catalogue_data.dm index ac9b94743b..babd9f7491 100644 --- a/code/modules/catalogue/catalogue_data.dm +++ b/code/modules/catalogue/catalogue_data.dm @@ -139,7 +139,7 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new)

\ Humanity is the primary driving force for rapid space expansion, owing to their strong, expansionist central \ government and opportunistic Trans-Stellar Corporations. The prejudices of the 21st century have mostly \ - given way to bitter divides on the most important issue of the times– technological expansionism, \ + given way to bitter divides on the most important issue of the times� technological expansionism, \ with the major human factions squabbling over their approach to technology in the face of a \ looming singularity.\

\ @@ -170,7 +170,7 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new) desc = "The Unathi are a species of large reptilian humanoids hailing from Moghes, in the \ Uueoa-Esa binary star system. Most Unathi live in a semi-rigid clan system, and clan \ enclaves dot the surface of their homeworld. Proud and long-lived, Unathi of all \ - walks of life display a tendency towards perfectionism, and mastery of one’s craft \ + walks of life display a tendency towards perfectionism, and mastery of one�s craft \ is greatly respected among them. Despite the aggressive nature of their contact, \ Unathi seem willing, if not eager, to reconcile with humanity, though mutual \ distrust runs rampant among individuals of both groups." @@ -181,7 +181,7 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new) desc = "Tajaran are a race of humanoid mammalian aliens from Meralar, the fourth planet \ of the Rarkajar star system. Thickly furred and protected from cold, they thrive on \ their subartic planet, where the only terran temperate areas spread across the \ - equator and “tropical belt.”\ + equator and �tropical belt.�\

\ With their own share of bloody wars and great technological advances, the Tajaran are a \ proud kind. They fiercely believe they belong among the stars and consider themselves \ @@ -273,11 +273,11 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new) desc = "A Positronic being, often an Android, Gynoid, or Robot, is an individual with a positronic brain, \ manufactured and fostered amongst organic life Positronic brains enjoy the same legal status as a humans, \ although discrimination is still common, are considered sapient on all accounts, and can be considered \ - the “synthetic species”. Half-developed and half-discovered in the 2280’s by a black lab studying alien \ + the �synthetic species�. Half-developed and half-discovered in the 2280�s by a black lab studying alien \ artifacts, the first positronic brain was an inch-wide cube of palladium-iridium alloy, nano-etched with \ billions upon billions of conduits and connections. Upon activation, hard-booted by way of an emitter \ laser, the brain issued a single sentence before the neural pathways collapsed and it became an inert \ - lump of platinum: “What is my purpose?”." + lump of platinum: �What is my purpose?�." value = CATALOGUER_REWARD_TRIVIAL /datum/category_item/catalogue/technology/cyborgs @@ -356,11 +356,11 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new) name = "Government - Solar Confederate Government" datum_to_copy = /datum/lore/organization/gov/solgov -/* YW EDIT start +/* //VOREStation Removal /datum/category_item/catalogue/information/organization/virgov name = "Government - Vir Governmental Authority" datum_to_copy = /datum/lore/organization/gov/virgov -*/// YW EDIT end +*/ /datum/category_item/catalogue/anomalous diff --git a/code/modules/catalogue/catalogue_data_vr.dm b/code/modules/catalogue/catalogue_data_vr.dm index 4a117f018c..fde60c17be 100644 --- a/code/modules/catalogue/catalogue_data_vr.dm +++ b/code/modules/catalogue/catalogue_data_vr.dm @@ -1,3 +1,6 @@ +/datum/category_item/catalogue/information/organization/solgov + name = "Government - Commonwealth of Sol-Procyon" + //TODO: VIRGO_LORE_WRITING_WIP - this whole file /datum/category_item/catalogue/fauna/akula diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm index ef64cd4acd..5580c7fd98 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -137,8 +137,12 @@ You can set verify to TRUE if you want send() to sleep until the client has the return new type() return asset_datums[type] +/datum/asset + var/_abstract = /datum/asset // Marker so we don't instanatiate abstract types + /datum/asset/New() asset_datums[type] = src + register() /datum/asset/proc/register() return @@ -148,6 +152,7 @@ You can set verify to TRUE if you want send() to sleep until the client has the //If you don't need anything complicated. /datum/asset/simple + _abstract = /datum/asset/simple var/assets = list() var/verify = FALSE @@ -157,6 +162,65 @@ You can set verify to TRUE if you want send() to sleep until the client has the /datum/asset/simple/send(client) send_asset_list(client,assets,verify) +// +// iconsheet Assets - For making lots of icon states available at once without sending a thousand tiny files. +// +/datum/asset/iconsheet + _abstract = /datum/asset/iconsheet + var/name // Name of the iconsheet. Asset will be named after this. + var/verify = FALSE + +/datum/asset/iconsheet/register(var/list/sprites) + if (!name) + CRASH("iconsheet [type] cannot register without a name") + if (!islist(sprites)) + CRASH("iconsheet [type] cannot register without a sprites list") + + var/res_name = "iconsheet_[name].css" + var/fname = "data/iconsheets/[res_name]" + fdel(fname) + text2file(generate_css(sprites), fname) + register_asset(res_name, fcopy_rsc(fname)) + fdel(fname) + +/datum/asset/iconsheet/send(client/C) + if (!name) + return + send_asset_list(C, list("iconsheet_[name].css"), verify) + +/datum/asset/iconsheet/proc/generate_css(var/list/sprites) + var/list/out = list(".[name]{display:inline-block;}") + for(var/sprite_id in sprites) + var/icon/I = sprites[sprite_id] + var/data_url = "'data:image/png;base64,[icon2base64(I)]'" + out += ".[name].[sprite_id]{width:[I.Width()]px;height:[I.Height()]px;background-image:url([data_url]);}" + return out.Join("\n") + +/datum/asset/iconsheet/proc/build_sprite_list(icon/I, list/directions, prefix = null) + if (length(prefix)) + prefix = "[prefix]-" + + if (!directions) + directions = list(SOUTH) + + var/sprites = list() + for (var/icon_state_name in icon_states(I)) + for (var/direction in directions) + var/suffix = (directions.len > 1) ? "-[dir2text(direction)]" : "" + var/sprite_name = "[prefix][icon_state_name][suffix]" + var/icon/sprite = icon(I, icon_state=icon_state_name, dir=direction, frame=1, moving=FALSE) + if (!sprite || !length(icon_states(sprite))) // that direction or state doesn't exist + continue + sprites[sprite_name] = sprite + return sprites + +// Get HTML link tag for including the iconsheet css file. +/datum/asset/iconsheet/proc/css_tag() + return "" + +// get HTML tag for showing an icon +/datum/asset/iconsheet/proc/icon_tag(icon_state, dir = SOUTH) + return "" //DEFINITIONS FOR ASSET DATUMS START HERE. /datum/asset/simple/pda @@ -270,3 +334,15 @@ You can set verify to TRUE if you want send() to sleep until the client has the send_asset_list(client, uncommon) send_asset_list(client, common) + + +// VOREStation Add Start - pipes iconsheet asset +/datum/asset/iconsheet/pipes + name = "pipes" + +/datum/asset/iconsheet/pipes/register() + var/list/sprites = list() + for (var/each in list('icons/obj/pipe-item.dmi', 'icons/obj/pipes/disposal.dmi')) + sprites += build_sprite_list(each, global.alldirs) + ..(sprites) +// VOREStation Add End diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm index 2331f5b7a6..c90f5ec504 100644 --- a/code/modules/client/client defines.dm +++ b/code/modules/client/client defines.dm @@ -18,7 +18,6 @@ //OTHER// ///////// var/datum/preferences/prefs = null - //var/move_delay = 1 var/moving = null var/adminobs = null var/area = null diff --git a/code/modules/client/preference_setup/antagonism/02_candidacy.dm b/code/modules/client/preference_setup/antagonism/02_candidacy.dm index 2056fbf06d..e9c1f82ec0 100644 --- a/code/modules/client/preference_setup/antagonism/02_candidacy.dm +++ b/code/modules/client/preference_setup/antagonism/02_candidacy.dm @@ -5,17 +5,23 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set "operative" = 1, // 1 "changeling" = 1, // 2 "wizard" = 1, // 3 - "malf AI" = 1, // 4 + "malf AI" = 1, // 4 "revolutionary" = 1, // 5 "alien candidate" = 1, // 6 "positronic brain" = 1, // 7 "cultist" = 1, // 8 - "renegade" = 1, // 9 - "ninja" = 1, // 10 + "renegade" = 1, // 9 + "ninja" = 1, // 10 "raider" = 1, // 11 - "diona" = 1, // 12 - "loyalist" = 1, // 13 - "pAI candidate" = 1, // -- TLE // 14 + "diona" = 1, // 12 + "mutineer" = 1, // 13 + "loyalist" = 1, // 14 + "pAI candidate" = 1, // 15 + //VOREStation Add + "lost drone" = 1, // 16 + "maint pred" = 1, // 17 + "morph" = 1, // 18 + //VOREStation Add End ) /datum/category_item/player_setup_item/antagonism/candidacy diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index 0481affd17..673e273af0 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -1,6 +1,7 @@ /datum/category_item/player_setup_item/general/language name = "Language" sort_order = 2 + var/static/list/forbidden_prefixes = list(";", ":", ".", "!", "*", "^", "-") /datum/category_item/player_setup_item/general/language/load_character(var/savefile/S) S["language"] >> pref.alternate_languages @@ -18,6 +19,9 @@ pref.alternate_languages.len = S.num_alternate_languages // Truncate to allowed length if(isnull(pref.language_prefixes) || !pref.language_prefixes.len) pref.language_prefixes = config.language_prefixes.Copy() + for(var/prefix in pref.language_prefixes) + if(prefix in forbidden_prefixes) + pref.language_prefixes -= prefix /datum/category_item/player_setup_item/general/language/content() . += "Languages
" @@ -79,7 +83,7 @@ alert(user, "Only single characters allowed.", "Error", "Ok") else if(char in list(";", ":", ".")) alert(user, "Radio character. Rejected.", "Error", "Ok") - else if(char in list("!","*", "^")) + else if(char in list("!","*","^","-")) alert(user, "Say character. Rejected.", "Error", "Ok") else if(contains_az09(char)) alert(user, "Non-special character. Rejected.", "Error", "Ok") diff --git a/code/modules/client/preference_setup/global/setting_datums.dm b/code/modules/client/preference_setup/global/setting_datums.dm index 8fefa8c929..1703d582a2 100644 --- a/code/modules/client/preference_setup/global/setting_datums.dm +++ b/code/modules/client/preference_setup/global/setting_datums.dm @@ -104,6 +104,12 @@ var/list/_client_preferences_by_type key = "EMOTE_NOISES" enabled_description = "Noisy" disabled_description = "Silent" +/datum/client_preference/whisubtle_vis + description = "Whi/Subtles Ghost Visible" + key = "WHISUBTLE_VIS" + enabled_description = "Visible" + disabled_description = "Hidden" + enabled_by_default = FALSE //VOREStation Add End /datum/client_preference/weather_sounds description ="Weather sounds" diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm b/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm index ca65595688..2eb3d1fcd6 100644 --- a/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm @@ -1,5 +1,15 @@ // Collars +/datum/gear/choker //A colorable choker + display_name = "choker (colorable, tagless)" + path = /obj/item/clothing/accessory/choker + slot = slot_tie + sort_category = "Accessories" + +/datum/gear/choker/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) + /datum/gear/collar display_name = "collar, silver" path = /obj/item/clothing/accessory/collar/silver 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 27f553827c..452b721e6d 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -1,6 +1,7 @@ // Note for newly added fluff items: Ckeys should not contain any spaces, underscores or capitalizations, // or else the item will not be usable. // Example: Someone whose username is "Master Pred_Man" should be written as "masterpredman" instead +// Note: Do not use characters such as # in the display_name. It will cause the item to be unable to be selected. /datum/gear/fluff path = /obj/item @@ -88,6 +89,13 @@ ckeywhitelist = list("azurachitin") character_name = list("Azura Chitin") +/datum/gear/fluff/aurora + path = /obj/item/clothing/accessory/solgov/department/security/aurora + display_name = "Aurora's keepsake" + description = "An old solgov sec insignia given to Aurora" + ckeywhitelist = list("storesund97") + character_name = list("Aurora") + // B CKEYS /datum/gear/fluff/yuuko_kimono path = /obj/item/clothing/under/fluff/sakura_hokkaido_kimono @@ -674,6 +682,12 @@ ckeywhitelist = list("nickcrazy") character_name = list("Damon Bones Xrim") +/datum/gear/fluff/damon_jacket + path = /obj/item/clothing/suit/storage/toggle/bomber/bombersec + display_name = "Damon's Bomber Jacket" + ckeywhitelist = list("nickcrazy") + character_name = list("Damon Bones Xrim") + /datum/gear/fluff/kt_fishing_rod path = /obj/item/weapon/material/fishing_rod/modern/strong display_name = "K't's fishing rod" @@ -731,6 +745,13 @@ ckeywhitelist = list("phoenixgamma7") character_name = list("Jamie Findlay") +/datum/gear/fluff/scylla_shades + path = /obj/item/clothing/glasses/fluff/scylla + display_name = "Scylla's Shades" + description = "These cherry-red cat-eye shades give you an inclination to eat chalk." + ckeywhitelist = list("pimientopyro") + character_name = list("Scylla Casmus") + // Q CKEYS // R CKEYS @@ -804,11 +825,18 @@ /datum/gear/fluff/nthasd_modkit //Converts a Security suit's sprite path = /obj/item/device/modkit_conversion/hasd - display_name = "NT-HASD #556's Modkit" + display_name = "NT-HASD 556's Modkit" ckeywhitelist = list("silencedmp5a5") character_name = list("NT-HASD #556") allowed_roles = list("Colony Director", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective") +/datum/gear/fluff/serdykov_modkit //Also converts a Security suit's sprite + path = /obj/item/device/modkit_conversion/fluff/serdykit + display_name = "Serdykov Antoz's Modkit" + ckeywhitelist = list("silencedmp5a5") + character_name = list("Serdykov Antoz") + allowed_roles = list("Colony Director", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective") + /datum/gear/fluff/tasy_clownuniform path = /obj/item/clothing/under/sexyclown display_name = "Tasy's Clown Uniform" diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm index 121378723f..4b4f979ef5 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general.dm @@ -81,7 +81,7 @@ var/toytype = list() toytype["Blink toy"] = /obj/item/toy/blink toytype["Gravitational singularity"] = /obj/item/toy/spinningtoy - toytype["Water flower"] = /obj/item/toy/waterflower + 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 diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index 103e0c7cc3..d61ac58bb0 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -6,6 +6,14 @@ sort_category = "Suits and Overwear" cost = 2 +/datum/gear/suit/apron_white + display_name = "apron, colorable" + path = /obj/item/clothing/suit/storage/apron/white + +/datum/gear/suit/apron_white/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) + /datum/gear/suit/greatcoat display_name = "greatcoat" path = /obj/item/clothing/suit/greatcoat diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm index 5869d2b468..dee35edaa3 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm @@ -179,3 +179,18 @@ Swimsuits display_name = "sleek modern coat, detective" path = /obj/item/clothing/under/detective_alt allowed_roles = list("Head of Security", "Detective") + +/* +Qipao +*/ +/datum/gear/uniform/qipao + display_name = "qipao, black" + path = /obj/item/clothing/under/dress/qipao + +/datum/gear/uniform/qipao_red + display_name = "qipao, red" + path = /obj/item/clothing/under/dress/qipao/red + +/datum/gear/uniform/qipao_white + display_name = "qipao, white" + path = /obj/item/clothing/under/dress/qipao/white diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno.dm b/code/modules/client/preference_setup/loadout/loadout_xeno.dm index d411c5d56d..f7656b13b0 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno.dm @@ -150,6 +150,10 @@ sort_category = "Xenowear" cost = 1 +/datum/gear/shoes/footwraps/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) + /datum/gear/uniform/cohesionsuits display_name = "cohesion suit selection (Promethean)" path = /obj/item/clothing/under/cohesion @@ -350,3 +354,42 @@ display_name = "internal affairs cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/iaa allowed_roles = list("Internal Affairs Agent") + +/datum/gear/uniform/smockcolor + display_name = "smock, recolorable (Teshari)" + path = /obj/item/clothing/under/seromi/smock/white + whitelisted = SPECIES_TESHARI + sort_category = "Xenowear" + +/datum/gear/uniform/smockcolor/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) + +/datum/gear/uniform/undercoatcolor + display_name = "undercoat, recolorable (Teshari)" + path = /obj/item/clothing/under/seromi/undercoat/standard/white_grey + whitelisted = SPECIES_TESHARI + sort_category = "Xenowear" + +/datum/gear/uniform/undercoatcolor/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) + +/datum/gear/suit/cloakcolor + display_name = "cloak, recolorable (Teshari)" + path = /obj/item/clothing/suit/storage/seromi/cloak/standard/white_grey + whitelisted = SPECIES_TESHARI + sort_category = "Xenowear" + +/datum/gear/suit/cloakcolor/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) +/datum/gear/suit/labcoat_tesh + display_name = "labcoat, colorable (Teshari)" + path = /obj/item/clothing/suit/storage/toggle/labcoat/teshari + whitelisted = SPECIES_TESHARI + sort_category = "Xenowear" + +/datum/gear/suit/labcoat_tesh/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm b/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm index c4909ac269..2f5734030d 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm @@ -1,7 +1,3 @@ -/datum/gear/shoes/footwraps/New() //Give color pick option for footwraps - ..() - gear_tweaks = list(gear_tweak_free_color_choice) - /datum/gear/uniform/voxcasual display_name = "casual wear (Vox)" path = /obj/item/clothing/under/vox/vox_casual @@ -88,4 +84,4 @@ /datum/gear/suit/taur/white_dress display_name = "white wedding dress (Wolf/Horse-taur)" path = /obj/item/clothing/suit/taur_dress/white - sort_category = "Xenowear" \ No newline at end of file + sort_category = "Xenowear" diff --git a/code/modules/client/preferences_vr.dm b/code/modules/client/preferences_vr.dm index d1109a240a..5d45a88608 100644 --- a/code/modules/client/preferences_vr.dm +++ b/code/modules/client/preferences_vr.dm @@ -1,5 +1,4 @@ -//TFF 5/8/19 - minor refactoring of this thing from 09_misc.dm to call this for preferences. -datum/preferences +/datum/preferences var/show_in_directory = 1 //Show in Character Directory var/sensorpref = 5 //Set character's suit sensor level var/job_talon_high = 0 @@ -53,3 +52,18 @@ datum/preferences SScharacter_setup.queue_preferences_save(prefs) feedback_add_details("admin_verb","TEmoteNoise") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/verb/toggle_ghost_quiets() + set name = "Whisper/Subtle Vis" + set category = "Preferences" + set desc = "Toggle ghosts viewing your subtles/whispers." + + var/pref_path = /datum/client_preference/whisubtle_vis + + toggle_preference(pref_path) + + to_chat(src, "Ghosts will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear subtles/whispers made by you.") + + SScharacter_setup.queue_preferences_save(prefs) + + feedback_add_details("admin_verb","TWhisubtleVis") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 90617f8426..4b92cdd149 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -96,6 +96,42 @@ . = check break +// For now, these two temp procs only return TRUE or FALSE if they can provide resistance to a given temperature. +/obj/item/clothing/proc/handle_low_temperature(var/tempcheck = T20C) + . = FALSE + if(LAZYLEN(accessories)) + for(var/obj/item/clothing/C in accessories) + if(C.handle_low_temperature(tempcheck)) + . = TRUE + + if(min_cold_protection_temperature && min_cold_protection_temperature <= tempcheck) + . = TRUE + +/obj/item/clothing/proc/handle_high_temperature(var/tempcheck = T20C) + . = FALSE + if(LAZYLEN(accessories)) + for(var/obj/item/clothing/C in accessories) + if(C.handle_low_temperature(tempcheck)) + . = TRUE + + if(max_heat_protection_temperature && max_heat_protection_temperature >= tempcheck) + . = TRUE + +// Returns the relative flag-vars for covered protection. +/obj/item/clothing/proc/get_cold_protection_flags() + . = cold_protection + + if(LAZYLEN(accessories)) + for(var/obj/item/clothing/C in accessories) + . |= C.get_cold_protection_flags() + +/obj/item/clothing/proc/get_heat_protection_flags() + . = heat_protection + + if(LAZYLEN(accessories)) + for(var/obj/item/clothing/C in accessories) + . |= C.get_heat_protection_flags() + /obj/item/clothing/proc/refit_for_species(var/target_species) if(!species_restricted) return //this item doesn't use the species_restricted system @@ -854,16 +890,16 @@ /obj/item/clothing/under/examine(mob/user) - ..(user) + . = ..() switch(src.sensor_mode) if(0) - to_chat(user, "Its sensors appear to be disabled.") + . += "Its sensors appear to be disabled." if(1) - to_chat(user, "Its binary life sensors appear to be enabled.") + . += "Its binary life sensors appear to be enabled." if(2) - to_chat(user, "Its vital tracker appears to be enabled.") + . += "Its vital tracker appears to be enabled." if(3) - to_chat(user, "Its vital tracker and tracking beacon appear to be enabled.") + . += "Its vital tracker and tracking beacon appear to be enabled." /obj/item/clothing/under/proc/set_sensors(mob/usr as mob) var/mob/M = usr diff --git a/code/modules/clothing/clothing_accessories.dm b/code/modules/clothing/clothing_accessories.dm index 4dda07aecc..3cc1b9408f 100644 --- a/code/modules/clothing/clothing_accessories.dm +++ b/code/modules/clothing/clothing_accessories.dm @@ -67,10 +67,9 @@ src.add_fingerprint(usr) /obj/item/clothing/examine(var/mob/user) - ..(user) + . = ..(user) if(LAZYLEN(accessories)) - for(var/obj/item/clothing/accessory/A in accessories) - to_chat(user, "\A [A] is attached to it.") + . += "It has the following attached: [counting_english_list(accessories)]" /** * Attach accessory A to src diff --git a/code/modules/clothing/head/helmet_vr.dm b/code/modules/clothing/head/helmet_vr.dm index edb2d9482a..00d51f2f47 100644 --- a/code/modules/clothing/head/helmet_vr.dm +++ b/code/modules/clothing/head/helmet_vr.dm @@ -1,10 +1,10 @@ /obj/item/clothing/head/helmet/solgov - name = "\improper Solar Central Government helmet" + name = "peacekeeper helmet" desc = "A helmet painted in Peacekeeper blue. Stands out like a sore thumb." /obj/item/clothing/head/helmet/solgov/command - name = "\improper Solar Central commander helmet" - desc = "A helmet with 'Solar Central Government' printed on the back in gold lettering." + name = "peacekeeper commander helmet" + desc = "A more sophisticated helmet painted in Peacekeeper blue. Stands out like a sore thumb." /obj/item/clothing/head/helmet/combat/USDF name = "marine helmet" diff --git a/code/modules/clothing/head/misc_vr.dm b/code/modules/clothing/head/misc_vr.dm index 82cae35465..4e68655a9b 100644 --- a/code/modules/clothing/head/misc_vr.dm +++ b/code/modules/clothing/head/misc_vr.dm @@ -1,3 +1,6 @@ +/obj/item/clothing/head/centhat/customs + desc = "A formal hat for SolCom Customs Officers." + /obj/item/clothing/head/fish name = "fish skull" desc = "You... you're not actually going to wear that, right?" @@ -5,3 +8,17 @@ icon = 'icons/obj/clothing/hats_vr.dmi' icon_override = 'icons/mob/head_vr.dmi' flags_inv = HIDEEARS|BLOCKHAIR + +/obj/item/clothing/head/crown + name = "crown" + desc = "How regal!" + icon_state = "crown" + icon = 'icons/obj/clothing/hats_vr.dmi' + icon_override = 'icons/mob/head_vr.dmi' + +/obj/item/clothing/head/fancy_crown + name = "fancy crown" + desc = "How extraordinarily regal!" + icon_state = "fancycrown" + icon = 'icons/obj/clothing/hats_vr.dmi' + icon_override = 'icons/mob/head_vr.dmi' diff --git a/code/modules/clothing/head/solgov_vr.dm b/code/modules/clothing/head/solgov_vr.dm index f3da977af1..3861ecebe1 100644 --- a/code/modules/clothing/head/solgov_vr.dm +++ b/code/modules/clothing/head/solgov_vr.dm @@ -2,16 +2,16 @@ //Utility /obj/item/clothing/head/soft/sol - name = "\improper SolGov cap" - desc = "It's a blue ballcap in Solar Central Government colors." + name = "\improper SolCom cap" + desc = "It's a blue ballcap in Terran Commonwealth Government colors." /obj/item/clothing/head/soft/sol/expedition - name = "explorer's cap" - desc = "It's a black ballcap bearing a Society of Universal Cartographers crest." + name = "\improper Explorer corps cap" + desc = "It's a black ballcap bearing a Terran Commonwealth Explorer Corps crest." /obj/item/clothing/head/soft/sol/fleet name = "fleet cap" - desc = "It's a navy blue ballcap with a USDF Fleet crest." + desc = "It's a navy blue ballcap with a TCG Fleet crest." /obj/item/clothing/head/utility name = "utility cover" @@ -19,23 +19,23 @@ /obj/item/clothing/head/utility/fleet name = "fleet utility cover" - desc = "A navy blue utility cover bearing the crest of a USDF Fleet." + desc = "A navy blue utility cover bearing the crest of a TCG Fleet." /obj/item/clothing/head/utility/marine name = "marine utility cover" - desc = "A grey utility cover bearing the crest of the USDF Marine Corps." + desc = "A grey utility cover bearing the crest of the TCG Marine Corps." /obj/item/clothing/head/utility/marine/tan name = "tan utility cover" - desc = "A tan utility cover bearing the crest of the USDF Marine Corps." + desc = "A tan utility cover bearing the crest of the TCG Marine Corps." /obj/item/clothing/head/utility/marine/green name = "green utility cover" - desc = "A green utility cover bearing the crest of the USDF Marine Corps." + desc = "A green utility cover bearing the crest of the TCG Marine Corps." /obj/item/clothing/head/utility/marine/green/officer // "And YOU told me you were gonna wear something nice!" name = "\improper officer's cap" - desc = "A green utility cover bearing the crest of the USDF Marine Corps. This one has an officer's emblem." + desc = "A green utility cover bearing the crest of the TCG Marine Corps. This one has an officer's emblem." icon_state = "UNSCsoft" icon = 'icons/obj/clothing/hats_vr.dmi' icon_override = 'icons/mob/head_vr.dmi' @@ -48,60 +48,60 @@ /obj/item/clothing/head/service/marine name = "marine wheel cover" - desc = "A green service uniform cover with an USDF Marine Corps crest." + desc = "A green service uniform cover with an TCG Marine Corps crest." /obj/item/clothing/head/service/marine/command name = "marine officer's wheel cover" - desc = "A green service uniform cover with an USDF Marine Corps crest and gold stripe." + desc = "A green service uniform cover with an TCG Marine Corps crest and gold stripe." /obj/item/clothing/head/service/marine/garrison name = "marine garrison cap" - desc = "A green garrison cap belonging to the USDF Marine Corps." + desc = "A green garrison cap belonging to the TCG Marine Corps." /obj/item/clothing/head/service/marine/garrison/command name = "marine officer's garrison cap" - desc = "A green garrison cap belonging to the USDF Marine Corps. This one has a gold pin." + desc = "A green garrison cap belonging to the TCG Marine Corps. This one has a gold pin." /obj/item/clothing/head/service/marine/campaign name = "campaign cover" - desc = "A green campaign cover with an USDF Marine Corps crest. Only found on the heads of Drill Instructors." + desc = "A green campaign cover with an TCG Marine Corps crest. Only found on the heads of Drill Instructors." icon_state = "greendrill" //Dress /obj/item/clothing/head/dress/expedition name = "explorer's dress cap" - desc = "A peaked grey dress uniform cap belonging to the Society of Universal Cartographers." + desc = "A peaked grey dress uniform cap belonging to the Terran Commonwealth Explorer Corps." /obj/item/clothing/head/dress/expedition/command name = "explorer's command dress cap" - desc = "A peaked grey dress uniform cap belonging to the Society of Universal Cartographers. This one is trimmed in gold." + desc = "A peaked grey dress uniform cap belonging to the Terran Commonwealth Explorer Corps. This one is trimmed in gold." /obj/item/clothing/head/dress/fleet name = "fleet dress wheel cover" - desc = "A white dress uniform cover. This one has an USDF Fleet crest." + desc = "A white dress uniform cover. This one has an TCG Fleet crest." /obj/item/clothing/head/dress/fleet/command name = "fleet command dress wheel cover" - desc = "A white dress uniform cover. This one has a gold stripe and an USDF Fleet crest." + desc = "A white dress uniform cover. This one has a gold stripe and an TCG Fleet crest." /obj/item/clothing/head/dress/marine name = "marine dress wheel cover" - desc = "A white dress uniform cover with an USDF Marine Corps crest." + desc = "A white dress uniform cover with an TCG Marine Corps crest." /obj/item/clothing/head/dress/marine/command name = "marine officer's dress wheel cover" - desc = "A white dress uniform cover with an USDF Marine Corps crest and gold stripe." + desc = "A white dress uniform cover with an TCG Marine Corps crest and gold stripe." /obj/item/clothing/head/dress/marine/command/admiral name = "admiral's dress wheel cover" - desc = "A white dress uniform cover with an USDF Navy crest and gold stripe." + desc = "A white dress uniform cover with an TCG Navy crest and gold stripe." //Berets /obj/item/clothing/head/beret/sol name = "peacekeeper beret" - desc = "A beret in Solar Central Government colors. For peacekeepers that are more inclined towards style than safety." + desc = "A beret in Terran Commonwealth colors. For peacekeepers that are more inclined towards style than safety." /obj/item/clothing/head/beret/sol/gateway name = "gateway administration beret" @@ -125,48 +125,48 @@ /obj/item/clothing/head/beret/sol/expedition name = "explorer's beret" - desc = "A black beret belonging to the Society of Universal Cartographers. For personnel that are more inclined towards style than safety." + desc = "A black beret belonging to the Terran Commonwealth explorer corps. For personnel that are more inclined towards style than safety." /obj/item/clothing/head/beret/sol/expedition/security name = "explorer's security beret" - desc = "A Society of Universal Cartographers beret with a security crest. For personnel that are more inclined towards style than safety." + desc = "A Terran Commonwealth Explorer Corps beret with a security crest. For personnel that are more inclined towards style than safety." /obj/item/clothing/head/beret/sol/expedition/medical name = "explorer's medical beret" - desc = "A Society of Universal Cartographers beret with a medical crest. For personnel that are more inclined towards style than safety." + desc = "A Terran Commonwealth Explorer Corps beret with a medical crest. For personnel that are more inclined towards style than safety." /obj/item/clothing/head/beret/sol/expedition/engineering name = "explorer's engineering beret" - desc = "A Society of Universal Cartographers beret with an engineering crest. For personnel that are more inclined towards style than safety." + desc = "A Terran Commonwealth Explorer Corps beret with an engineering crest. For personnel that are more inclined towards style than safety." /obj/item/clothing/head/beret/sol/expedition/supply name = "explorer's supply beret" - desc = "A Society of Universal Cartographers beret with a supply crest. For personnel that are more inclined towards style than safety." + desc = "A Terran Commonwealth Explorer Corps beret with a supply crest. For personnel that are more inclined towards style than safety." /obj/item/clothing/head/beret/sol/expedition/command name = "explorer's command beret" - desc = "A Society of Universal Cartographers beret with a command crest. For personnel that are more inclined towards style than safety." + desc = "A Terran Commonwealth Explorer Corps beret with a command crest. For personnel that are more inclined towards style than safety." /obj/item/clothing/head/beret/sol/fleet name = "fleet beret" - desc = "A navy blue beret belonging to the USDF Fleet. For personnel that are more inclined towards style than safety." + desc = "A navy blue beret belonging to the TCG Fleet. For personnel that are more inclined towards style than safety." /obj/item/clothing/head/beret/sol/fleet/security name = "fleet security beret" - desc = "An USDF Fleet beret with a security crest. For personnel that are more inclined towards style than safety." + desc = "An TCG Fleet beret with a security crest. For personnel that are more inclined towards style than safety." /obj/item/clothing/head/beret/sol/fleet/medical name = "fleet medical beret" - desc = "An USDF Fleet beret with a medical crest. For personnel that are more inclined towards style than safety." + desc = "An TCG Fleet beret with a medical crest. For personnel that are more inclined towards style than safety." /obj/item/clothing/head/beret/sol/fleet/engineering name = "fleet engineering beret" - desc = "An USDF Fleet with an engineering crest. For personnel that are more inclined towards style than safety." + desc = "An TCG Fleet with an engineering crest. For personnel that are more inclined towards style than safety." /obj/item/clothing/head/beret/sol/fleet/supply name = "fleet supply beret" - desc = "An USDF Fleet beret with a supply crest. For personnel that are more inclined towards style than safety." + desc = "An TCG Fleet beret with a supply crest. For personnel that are more inclined towards style than safety." /obj/item/clothing/head/beret/sol/fleet/command name = "fleet command beret" - desc = "An USDF Fleet beret with a command crest. For personnel that are more inclined towards style than safety." \ No newline at end of file + desc = "An TCG Fleet beret with a command crest. For personnel that are more inclined towards style than safety." \ No newline at end of file diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 4f10a56f9d..57b8a0911a 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -78,11 +78,8 @@ wearer = null /obj/item/clothing/shoes/magboots/examine(mob/user) - ..(user) - var/state = "disabled" - if(item_flags & NOSLIP) - state = "enabled" - to_chat(user, "Its mag-pulse traction system appears to be [state].") + . = ..() + . += "Its mag-pulse traction system appears to be [item_flags & NOSLIP ? "enabled" : "disabled"]." /obj/item/clothing/shoes/magboots/vox @@ -126,6 +123,6 @@ canremove = 1 /obj/item/clothing/shoes/magboots/vox/examine(mob/user) - ..(user) - if (magpulse) - to_chat(user, "It would be hard to take these off without relaxing your grip first.")//theoretically this message should only be seen by the wearer when the claws are equipped. \ No newline at end of file + . = ..() + if(magpulse) + . += "It would be hard to take these off without relaxing your grip first." // Theoretically this message should only be seen by the wearer when the claws are equipped. \ No newline at end of file diff --git a/code/modules/clothing/shoes/miscellaneous_vr.dm b/code/modules/clothing/shoes/miscellaneous_vr.dm index 13ac1af3f4..aca7857438 100644 --- a/code/modules/clothing/shoes/miscellaneous_vr.dm +++ b/code/modules/clothing/shoes/miscellaneous_vr.dm @@ -4,7 +4,7 @@ icon_state = "griffinboots" item_state = "griffinboots" icon = 'icons/obj/clothing/shoes_vr.dmi' - icon_override = 'icons/mob/feet_vr.dmi' // This appends "_r" "_l" to icon state + icon_override = 'icons/mob/feet_vr.dmi' /obj/item/clothing/shoes/bhop name = "jump boots" @@ -12,7 +12,7 @@ icon_state = "jetboots" item_state = "jetboots" icon = 'icons/obj/clothing/shoes_vr.dmi' - icon_override = 'icons/mob/feet_vr.dmi' // This appends "_r" "_l" to icon state + icon_override = 'icons/mob/feet_vr.dmi' // resistance_flags = FIRE_PROOF action_button_name = "Activate Jump Boots" permeability_coefficient = 0.05 @@ -40,3 +40,22 @@ user.visible_message("[user] dashes forward into the air!") user.throw_at(target, jumpdistance, jumpspeed) recharging_time = world.time + recharging_rate + +/obj/item/clothing/shoes/magboots/adv + name = "advanced magboots" + desc = "Advanced magnetic boots for a trained user. They have a lower magnetic force, allowing the user to move more quickly." + icon = 'icons/obj/clothing/shoes_vr.dmi' + icon_override = 'icons/mob/feet_vr.dmi' + + icon_state = "advmag0" + item_flags = PHORONGUARD + item_state_slots = list(slot_r_hand_str = "magboots", slot_l_hand_str = "magboots") + icon_base = "advmag" + +/obj/item/clothing/shoes/magboots/adv/set_slowdown() + if(magpulse) + slowdown = shoes ? max(SHOES_SLOWDOWN, shoes.slowdown) : SHOES_SLOWDOWN //So you can't put on magboots to make you walk faster. + else if(shoes) + slowdown = shoes.slowdown + else + slowdown = SHOES_SLOWDOWN \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/breaches.dm b/code/modules/clothing/spacesuits/breaches.dm index 8af972ec73..12bd3e7f0b 100644 --- a/code/modules/clothing/spacesuits/breaches.dm +++ b/code/modules/clothing/spacesuits/breaches.dm @@ -224,7 +224,7 @@ var/global/list/breach_burn_descriptors = list( ..() /obj/item/clothing/suit/space/examine(mob/user) - ..(user) - if(can_breach && breaches && breaches.len) + . = ..() + if(can_breach && breaches?.len) for(var/datum/breach/B in breaches) - to_chat(user, "It has \a [B.descriptor].") + . += "It has \a [B.descriptor]." diff --git a/code/modules/clothing/spacesuits/rig/modules/modules.dm b/code/modules/clothing/spacesuits/rig/modules/modules.dm index eece796510..dfd9abb9c2 100644 --- a/code/modules/clothing/spacesuits/rig/modules/modules.dm +++ b/code/modules/clothing/spacesuits/rig/modules/modules.dm @@ -55,14 +55,14 @@ var/list/stat_rig_module/stat_modules = new() /obj/item/rig_module/examine() - ..() + . = ..() switch(damage) if(0) - to_chat(usr, "It is undamaged.") + . += "It is undamaged." if(1) - to_chat(usr, "It is badly damaged.") + . += "It is badly damaged." if(2) - to_chat(usr, "It is almost completely destroyed.") + . += "It is almost completely destroyed." /obj/item/rig_module/attackby(obj/item/W as obj, mob/user as mob) diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 7000801506..898a1fe826 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -95,22 +95,21 @@ var/datum/effect/effect/system/spark_spread/spark_system /obj/item/weapon/rig/examine() - to_chat(usr, "This is [bicon(src)][src.name].") - to_chat(usr, "[src.desc]") + . = ..() if(wearer) for(var/obj/item/piece in list(helmet,gloves,chest,boots)) if(!piece || piece.loc != wearer) continue - to_chat(usr, "[bicon(piece)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed.") + . += "[bicon(piece)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed." if(src.loc == usr) - to_chat(usr, "The access panel is [locked? "locked" : "unlocked"].") - to_chat(usr, "The maintenance panel is [open ? "open" : "closed"].") - to_chat(usr, "Hardsuit systems are [offline ? "offline" : "online"].") - to_chat(usr, "The cooling stystem is [cooling_on ? "active" : "inactive"].") + . += "The access panel is [locked? "locked" : "unlocked"]." + . += "The maintenance panel is [open ? "open" : "closed"]." + . += "Hardsuit systems are [offline ? "offline" : "online"]." + . += "The cooling stystem is [cooling_on ? "active" : "inactive"]." if(open) - to_chat(usr, "It's equipped with [english_list(installed_modules)].") + . += "It's equipped with [english_list(installed_modules)]." /obj/item/weapon/rig/New() ..() @@ -997,14 +996,6 @@ if(wearer.transforming || !wearer.canmove) return - if(locate(/obj/effect/stop/, wearer.loc)) - for(var/obj/effect/stop/S in wearer.loc) - if(S.victim == wearer) - return - - if(!wearer.lastarea) - wearer.lastarea = get_area(wearer.loc) - if((istype(wearer.loc, /turf/space)) || (wearer.lastarea.has_gravity == 0)) if(!wearer.Process_Spacemove(0)) return 0 diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm index b5d710d9a4..d8828fcda0 100644 --- a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm +++ b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm @@ -46,5 +46,14 @@ flags = PHORONGUARD //YAWN Edit /obj/item/clothing/suit/space/rig - species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_ALRAUNE, SPECIES_GREY_YW/*ywedit*/) - flags = PHORONGUARD //YAWN Edit + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_ALRAUNE, SPECIES_FENNEC, SPECIES_XENOHYBRID SPECIES_GREY_YW/*ywedit*/) + +/obj/item/clothing/shoes/magboots/rig/ce + name = "advanced boots" +/obj/item/clothing/shoes/magboots/rig/ce/set_slowdown() + if(magpulse) + slowdown = shoes ? max(SHOES_SLOWDOWN, shoes.slowdown) : SHOES_SLOWDOWN //So you can't put on magboots to make you walk faster. + else if(shoes) + slowdown = shoes.slowdown + else + slowdown = SHOES_SLOWDOWN diff --git a/code/modules/clothing/spacesuits/rig/suits/alien.dm b/code/modules/clothing/spacesuits/rig/suits/alien.dm index 331dafbf03..3b014808d8 100644 --- a/code/modules/clothing/spacesuits/rig/suits/alien.dm +++ b/code/modules/clothing/spacesuits/rig/suits/alien.dm @@ -51,7 +51,13 @@ item_flags = THICKMATERIAL siemens_coefficient = 0.2 offline_slowdown = 5 - allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit) + allowed = list( + /obj/item/weapon/gun, + /obj/item/device/flashlight, + /obj/item/weapon/tank, + /obj/item/device/suit_cooling_unit, + /obj/item/weapon/storage + ) air_type = /obj/item/weapon/tank/vox diff --git a/code/modules/clothing/spacesuits/rig/suits/combat.dm b/code/modules/clothing/spacesuits/rig/suits/combat.dm index f88f057907..57e5f6601a 100644 --- a/code/modules/clothing/spacesuits/rig/suits/combat.dm +++ b/code/modules/clothing/spacesuits/rig/suits/combat.dm @@ -12,7 +12,14 @@ offline_vision_restriction = 1 helm_type = /obj/item/clothing/head/helmet/space/rig/combat - allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton) + allowed = list( + /obj/item/weapon/gun, + /obj/item/device/flashlight, + /obj/item/weapon/tank, + /obj/item/device/suit_cooling_unit, + /obj/item/weapon/melee/baton, + /obj/item/weapon/storage + ) /obj/item/weapon/rig/combat/equipped @@ -42,10 +49,26 @@ slowdown = 1 offline_slowdown = 3 offline_vision_restriction = 1 - allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/handcuffs, \ - /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/weldingtool, /obj/item/weapon/tool, /obj/item/device/multitool, \ - /obj/item/device/radio, /obj/item/device/analyzer,/obj/item/weapon/storage/briefcase/inflatable, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, \ - /obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/device/suit_cooling_unit) + allowed = list( + /obj/item/device/flashlight, + /obj/item/weapon/tank, + /obj/item/ammo_magazine, + /obj/item/ammo_casing, + /obj/item/weapon/handcuffs, + /obj/item/device/t_scanner, + /obj/item/weapon/rcd, + /obj/item/weapon/weldingtool, + /obj/item/weapon/tool, + /obj/item/device/multitool, + /obj/item/device/radio, + /obj/item/device/analyzer, + /obj/item/weapon/melee/baton, + /obj/item/weapon/gun, + /obj/item/weapon/storage, + /obj/item/weapon/reagent_containers/hypospray, + /obj/item/roller, + /obj/item/device/suit_cooling_unit + ) chest_type = /obj/item/clothing/suit/space/rig/military helm_type = /obj/item/clothing/head/helmet/space/rig/military diff --git a/code/modules/clothing/spacesuits/rig/suits/ert.dm b/code/modules/clothing/spacesuits/rig/suits/ert.dm index 33b4e07351..0edd36c1d2 100644 --- a/code/modules/clothing/spacesuits/rig/suits/ert.dm +++ b/code/modules/clothing/spacesuits/rig/suits/ert.dm @@ -14,10 +14,25 @@ siemens_coefficient= 0.5 armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100) - allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/tool/crowbar, \ - /obj/item/weapon/tool/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/tool/wirecutters, /obj/item/weapon/tool/wrench, /obj/item/device/multitool, \ - /obj/item/device/radio, /obj/item/device/analyzer,/obj/item/weapon/storage/briefcase/inflatable, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, \ - /obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller) + allowed = list( + /obj/item/device/flashlight, + /obj/item/weapon/tank, + /obj/item/device/t_scanner, + /obj/item/weapon/rcd, + /obj/item/weapon/tool/crowbar, + /obj/item/weapon/tool/screwdriver, + /obj/item/weapon/weldingtool, + /obj/item/weapon/tool/wirecutters, + /obj/item/weapon/tool/wrench, + /obj/item/device/multitool, + /obj/item/device/radio, + /obj/item/device/analyzer, + /obj/item/weapon/storage, + /obj/item/weapon/melee/baton, + /obj/item/weapon/gun, + /obj/item/weapon/reagent_containers/hypospray, + /obj/item/roller + ) initial_modules = list( /obj/item/rig_module/ai_container, diff --git a/code/modules/clothing/spacesuits/rig/suits/light.dm b/code/modules/clothing/spacesuits/rig/suits/light.dm index edf982464d..b2a525f24d 100644 --- a/code/modules/clothing/spacesuits/rig/suits/light.dm +++ b/code/modules/clothing/spacesuits/rig/suits/light.dm @@ -4,7 +4,17 @@ desc = "A lighter, less armoured rig suit." icon_state = "ninja_rig" suit_type = "light suit" - allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/cell) + allowed = list( + /obj/item/weapon/gun, + /obj/item/ammo_magazine, + /obj/item/ammo_casing, + /obj/item/weapon/melee/baton, + /obj/item/weapon/handcuffs, + /obj/item/weapon/tank, + /obj/item/device/suit_cooling_unit, + /obj/item/weapon/cell, + /obj/item/weapon/storage + ) armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) emp_protection = 10 slowdown = 0 diff --git a/code/modules/clothing/spacesuits/rig/suits/merc.dm b/code/modules/clothing/spacesuits/rig/suits/merc.dm index 4724e2c733..56435ff7f5 100644 --- a/code/modules/clothing/spacesuits/rig/suits/merc.dm +++ b/code/modules/clothing/spacesuits/rig/suits/merc.dm @@ -14,7 +14,18 @@ siemens_coefficient = 0.3 glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva helm_type = /obj/item/clothing/head/helmet/space/rig/merc - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs) + allowed = list( + /obj/item/device/flashlight, + /obj/item/weapon/tank, + /obj/item/device/suit_cooling_unit, + /obj/item/weapon/gun, + /obj/item/ammo_magazine, + /obj/item/ammo_casing, + /obj/item/weapon/melee/baton, + /obj/item/weapon/melee/energy/sword, + /obj/item/weapon/handcuffs, + /obj/item/weapon/storage + ) initial_modules = list( /obj/item/rig_module/mounted, diff --git a/code/modules/clothing/spacesuits/rig/suits/pmc.dm b/code/modules/clothing/spacesuits/rig/suits/pmc.dm index b10e559977..e312ee826a 100644 --- a/code/modules/clothing/spacesuits/rig/suits/pmc.dm +++ b/code/modules/clothing/spacesuits/rig/suits/pmc.dm @@ -12,10 +12,25 @@ req_access = list(access_cent_specops) armor = list(melee = 60, bullet = 50, laser = 35,energy = 15, bomb = 30, bio = 100, rad = 95) - allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/tool/crowbar, \ - /obj/item/weapon/tool/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/tool/wirecutters, /obj/item/weapon/tool/wrench, /obj/item/device/multitool, \ - /obj/item/device/radio, /obj/item/device/analyzer,/obj/item/weapon/storage/briefcase/inflatable, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, \ - /obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller) + allowed = list( + /obj/item/device/flashlight, + /obj/item/weapon/tank, + /obj/item/device/t_scanner, + /obj/item/weapon/rcd, + /obj/item/weapon/tool/crowbar, + /obj/item/weapon/tool/screwdriver, + /obj/item/weapon/weldingtool, + /obj/item/weapon/tool/wirecutters, + /obj/item/weapon/tool/wrench, + /obj/item/device/multitool, + /obj/item/device/radio, + /obj/item/device/analyzer, + /obj/item/weapon/melee/baton, + /obj/item/weapon/gun, + /obj/item/weapon/storage, + /obj/item/weapon/reagent_containers/hypospray, + /obj/item/roller + ) /obj/item/weapon/rig/pmc/commander name = "PMC-C hardsuit control module" diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm index 513bc48d8a..f823241be3 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station.dm @@ -35,8 +35,7 @@ /obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/suit_cooling_unit, - /obj/item/weapon/storage/briefcase, - /obj/item/weapon/storage/secure/briefcase + /obj/item/weapon/storage, ) req_access = list() @@ -83,7 +82,7 @@ /obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/suit_cooling_unit, - /obj/item/weapon/storage/bag/ore, + /obj/item/weapon/storage, /obj/item/device/t_scanner, /obj/item/weapon/pickaxe, /obj/item/weapon/rcd @@ -121,7 +120,7 @@ /obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/suit_cooling_unit, - /obj/item/weapon/storage/briefcase/inflatable, + /obj/item/weapon/storage, /obj/item/device/t_scanner, /obj/item/weapon/rcd ) @@ -162,12 +161,13 @@ helm_type = /obj/item/clothing/head/helmet/space/rig/ce glove_type = /obj/item/clothing/gloves/gauntlets/rig/ce + boot_type = /obj/item/clothing/shoes/magboots/rig/ce //VOREStation Add allowed = list( /obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/suit_cooling_unit, - /obj/item/weapon/storage/briefcase/inflatable, + /obj/item/weapon/storage, /obj/item/device/t_scanner, /obj/item/weapon/rcd ) @@ -215,7 +215,7 @@ /obj/item/weapon/tank, /obj/item/device/suit_cooling_unit, /obj/item/stack/flag, - /obj/item/weapon/storage/excavation, + /obj/item/weapon/storage, /obj/item/weapon/pickaxe, /obj/item/device/healthanalyzer, /obj/item/device/measuring_tape, @@ -225,8 +225,8 @@ /obj/item/device/gps, /obj/item/device/beacon_locator, /obj/item/device/radio/beacon, - /obj/item/weapon/pickaxe/hand, - /obj/item/weapon/storage/bag/fossils) + /obj/item/weapon/pickaxe/hand + ) req_access = list() req_one_access = list() @@ -268,7 +268,7 @@ /obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/suit_cooling_unit, - /obj/item/weapon/storage/firstaid, + /obj/item/weapon/storage, /obj/item/device/healthanalyzer, /obj/item/stack/medical, /obj/item/roller @@ -308,7 +308,8 @@ /obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/suit_cooling_unit, - /obj/item/weapon/melee/baton + /obj/item/weapon/melee/baton, + /obj/item/weapon/storage ) req_access = list() diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm index c811cdaee9..280e0a9c98 100644 --- a/code/modules/clothing/spacesuits/spacesuits.dm +++ b/code/modules/clothing/spacesuits/spacesuits.dm @@ -58,10 +58,10 @@ camera.c_tag = usr.name to_chat(usr, "User scanned as [camera.c_tag]. Camera activated.") -/obj/item/clothing/head/helmet/space/examine() - ..() - if(camera_networks && get_dist(usr,src) <= 1) - to_chat(usr, "This helmet has a built-in camera. It's [camera ? "" : "in"]active.") +/obj/item/clothing/head/helmet/space/examine(mob/user) + . = ..() + if(camera_networks && Adjacent(user)) + . += "This helmet has a built-in camera. It's [camera ? "" : "in"]active." /obj/item/clothing/suit/space name = "Space suit" diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm index 9e353dbe19..a51646945a 100644 --- a/code/modules/clothing/spacesuits/void/station.dm +++ b/code/modules/clothing/spacesuits/void/station.dm @@ -212,7 +212,6 @@ armor = list(melee = 30, bullet = 40, laser = 40, energy = 25, bomb = 60, bio = 100, rad = 50) icon_state = "rig0-secalt" item_state_slots = list(slot_r_hand_str = "syndicate-helm-black", slot_l_hand_str = "syndicate-helm-black") - /obj/item/clothing/suit/space/void/security/alt name = "security EVA voidsuit" desc = "A grey-black voidsuit with red highlights. A little tacky, but it offers better protection against modern firearms and radiation than standard-issue security voidsuits." diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index 83dbdfd345..1fddf1116b 100644 --- a/code/modules/clothing/spacesuits/void/void.dm +++ b/code/modules/clothing/spacesuits/void/void.dm @@ -68,13 +68,11 @@ var/obj/item/device/suit_cooling_unit/cooler = null// Cooling unit, for FBPs. Cannot be installed alongside a tank. /obj/item/clothing/suit/space/void/examine(user) - ..(user) - var/list/part_list = new + . = ..() for(var/obj/item/I in list(helmet,boots,tank,cooler)) - part_list += "\a [I]" - to_chat(user, "\The [src] has [english_list(part_list)] installed.") + . += "It has \a [I] installed." if(tank && in_range(src,user)) - to_chat(user, "The wrist-mounted pressure gauge reads [max(round(tank.air_contents.return_pressure()),0)] kPa remaining in \the [tank].") + . += "The wrist-mounted pressure gauge reads [max(round(tank.air_contents.return_pressure()),0)] kPa remaining in \the [tank]." /obj/item/clothing/suit/space/void/refit_for_species(var/target_species) ..() diff --git a/code/modules/clothing/spacesuits/void/void_vr.dm b/code/modules/clothing/spacesuits/void/void_vr.dm index 5d6cf0ae2f..04dc49e18e 100644 --- a/code/modules/clothing/spacesuits/void/void_vr.dm +++ b/code/modules/clothing/spacesuits/void/void_vr.dm @@ -65,3 +65,72 @@ // This variable is normally used to set the icon_override when the suit is refitted, // however the species spritesheet now means we no longer need that anyway! sprite_sheets_refit = list() + +/obj/item/clothing/head/helmet/space/void/heck + name = "\improper H.E.C.K. helmet" + desc = "Hostile Environiment Cross-Kinetic Helmet: A helmet designed to withstand the wide variety of hazards from \[REDACTED\]. It wasn't enough for its last owner." + icon_state = "hostile_env" + item_state = "hostile_env" + icon = 'icons/obj/clothing/hats_vr.dmi' + icon_override = 'icons/mob/head_vr.dmi' + armor = list(melee = 60, bullet = 35, laser = 35, energy = 15, bomb = 55, bio = 100, rad = 20) + +/obj/item/clothing/head/helmet/space/void/heck/Initialize() + . = ..() + var/mutable_appearance/glass_overlay = mutable_appearance(icon, "hostile_env_glass") + glass_overlay.appearance_flags = RESET_COLOR + add_overlay(glass_overlay) + +/obj/item/clothing/head/helmet/space/void/heck/apply_accessories(var/image/standing) + . = ..() + var/mutable_appearance/glass_overlay = mutable_appearance(icon_override, "hostile_env_glass") + glass_overlay.appearance_flags = KEEP_APART|RESET_COLOR + standing.add_overlay(glass_overlay) + return standing + +/obj/item/clothing/suit/space/void/heck + name = "\improper H.E.C.K. suit" + desc = "Hostile Environment Cross-Kinetic Suit: A suit designed to withstand the wide variety of hazards from \[REDACTED\]. It wasn't enough for its last owner." + icon_state = "hostile_env" + item_state = "hostile_env" + icon = 'icons/obj/clothing/suits_vr.dmi' + icon_override = 'icons/mob/suit_vr.dmi' + slowdown = 1.5 + armor = list(melee = 60, bullet = 35, laser = 35, energy = 15, bomb = 55, bio = 100, rad = 20) + +/obj/item/clothing/head/helmet/space/void/syndicate_contract + name = "syndicate contract helmet" + desc = "A free helmet, gifted you by your new not-quite-corporate master!" + icon_state = "syndicate-contract" + item_state = "syndicate-contract" + icon = 'icons/obj/clothing/hats_vr.dmi' + icon_override = 'icons/mob/head_vr.dmi' + armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60) + siemens_coefficient = 0.6 + camera_networks = list(NETWORK_MERCENARY) + +/obj/item/clothing/suit/space/void/syndicate_contract + name = "syndicate contract suit" + desc = "A free suit, gifted you by your new not-quite-corporate master!" + icon_state = "syndicate-contract" + item_state = "syndicate-contract" + icon = 'icons/obj/clothing/suits_vr.dmi' + icon_override = 'icons/mob/suit_vr.dmi' + armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60) + siemens_coefficient = 0.6 + +/obj/item/clothing/head/helmet/space/void/chrono + name = "chrono-helmet" + desc = "From out of space and time, this helmet will protect you while you perform your duties." + icon_state = "chronohelmet" + item_state = "chronohelmet" + icon = 'icons/obj/clothing/hats_vr.dmi' + icon_override = 'icons/mob/head_vr.dmi' + +/obj/item/clothing/suit/space/void/chrono + name = "chrono-suit" + desc = "From out of space and time, this helmet will protect you while you perform your duties." + icon_state = "chronosuit" + item_state = "chronosuit" + icon = 'icons/obj/clothing/suits_vr.dmi' + icon_override = 'icons/mob/suit_vr.dmi' \ No newline at end of file diff --git a/code/modules/clothing/suits/aliens/seromi.dm b/code/modules/clothing/suits/aliens/seromi.dm index 2240c70ac8..f27ec3e8a7 100644 --- a/code/modules/clothing/suits/aliens/seromi.dm +++ b/code/modules/clothing/suits/aliens/seromi.dm @@ -237,4 +237,12 @@ name = "internal affairs cloak" desc = "A soft Teshari cloak made for the Internal Affairs Agent" icon_state = "tesh_cloak_iaa" - item_state = "tesh_cloak_iaa" \ No newline at end of file + item_state = "tesh_cloak_iaa" + +/obj/item/clothing/suit/storage/toggle/labcoat/teshari + name = "Teshari labcoat" + desc = "A small suit that protects against minor chemical spills. This one is a good fit on Teshari." + icon = 'icons/mob/species/seromi/suit.dmi' + icon_override = 'icons/mob/species/seromi/suit.dmi' + icon_state = "tesh_labcoat" + species_restricted = list(SPECIES_TESHARI) diff --git a/code/modules/clothing/suits/armor_vr.dm b/code/modules/clothing/suits/armor_vr.dm index 76d55dcc82..dd5517ac5a 100644 --- a/code/modules/clothing/suits/armor_vr.dm +++ b/code/modules/clothing/suits/armor_vr.dm @@ -42,20 +42,20 @@ // Override Polaris's "confederate" naming convention. I hate it. /obj/item/clothing/suit/storage/vest/solgov - name = "\improper Solar Central Government armored vest" - desc = "A synthetic armor vest. This one is marked with the crest of the Solar Central Government." + name = "peacekeeper armored vest" + desc = "A synthetic armor vest. This one is marked with the crest of the Terran Commonwealth Government." /obj/item/clothing/suit/storage/vest/solgov/heavy - name = "\improper Solar Central Government heavy armored vest" - desc = "A synthetic armor vest with SECURITY printed in distinctive blue lettering on the chest. This one has added webbing and ballistic plates." // USDF does peacekeeping, not these guys. + name = "peacekeeper heavy armored vest" + desc = "A synthetic armor vest with PEACEKEEPER printed in distinctive blue lettering on the chest. This one has added webbing and ballistic plates." /obj/item/clothing/suit/storage/vest/solgov/security name = "master at arms heavy armored vest" desc = "A synthetic armor vest with MASTER AT ARMS printed in silver lettering on the chest. This one has added webbing and ballistic plates." /obj/item/clothing/suit/storage/vest/solgov/command - name = "command heavy armored vest" - desc = "A synthetic armor vest with Solar Central Government printed in detailed gold lettering on the chest. This one has added webbing and ballistic plates." + name = "commander heavy armored vest" + desc = "A synthetic armor vest with COMMANDER printed in detailed gold lettering on the chest. This one has added webbing and ballistic plates." /obj/item/clothing/suit/armor/combat/USDF name = "marine body armor" diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 223fdbce8b..49f5562835 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -13,6 +13,12 @@ allowed = list (/obj/item/weapon/reagent_containers/spray/plantbgone, /obj/item/device/analyzer/plant_analyzer, /obj/item/seeds, /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/material/minihoe) +/obj/item/clothing/suit/storage/apron/white + name = "white apron" + desc = "A basic white apron." + icon_state = "apron_white" + item_state_slots = list(slot_r_hand_str = "apronchef", slot_l_hand_str = "apronchef") + //Captain /obj/item/clothing/suit/captunic name = "colony director's parade tunic" diff --git a/code/modules/clothing/suits/miscellaneous_vr.dm b/code/modules/clothing/suits/miscellaneous_vr.dm index 8caf5a8e39..097407f0e8 100644 --- a/code/modules/clothing/suits/miscellaneous_vr.dm +++ b/code/modules/clothing/suits/miscellaneous_vr.dm @@ -1,3 +1,6 @@ +/obj/item/clothing/suit/customs + desc = "A standard SolCom Customs formal jacket." + //HERE BE TAUR RELATED CLOTHES /* diff --git a/code/modules/clothing/suits/solgov_vr.dm b/code/modules/clothing/suits/solgov_vr.dm index a4568489df..21c6851acf 100644 --- a/code/modules/clothing/suits/solgov_vr.dm +++ b/code/modules/clothing/suits/solgov_vr.dm @@ -2,99 +2,99 @@ //Service /obj/item/clothing/suit/storage/service/sifguard - name = "explorer's jacket" - desc = "A uniform service jacket belonging to the Society of Universal Cartographers. It has silver buttons." + name = "\improper SolCom jacket" + desc = "A uniform service jacket belonging to the Terran Commonwealth Explorer Corps. It has silver buttons." /obj/item/clothing/suit/storage/service/sifguard/medical - name = "explorer's medical jacket" - desc = "A uniform service jacket belonging to the Society of Universal Cartographers. It has silver buttons and blue trim." + name = "\improper SolCom medical jacket" + desc = "A uniform service jacket belonging to the Terran Commonwealth Explorer Corps. It has silver buttons and blue trim." /obj/item/clothing/suit/storage/service/sifguard/medical/command - name = "explorer's medical command jacket" - desc = "A uniform service jacket belonging to the Society of Universal Cartographers. It has gold buttons and blue trim." + name = "\improper SolCom medical command jacket" + desc = "A uniform service jacket belonging to the Terran Commonwealth Explorer Corps. It has gold buttons and blue trim." /obj/item/clothing/suit/storage/service/sifguard/engineering - name = "explorer's engineering jacket" - desc = "A uniform service jacket belonging to the Society of Universal Cartographers. It has silver buttons and orange trim." + name = "\improper SolCom engineering jacket" + desc = "A uniform service jacket belonging to the Terran Commonwealth Explorer Corps. It has silver buttons and orange trim." /obj/item/clothing/suit/storage/service/sifguard/engineering/command - name = "explorer's engineering command jacket" - desc = "A uniform service jacket belonging to the Society of Universal Cartographers. It has gold buttons and orange trim." + name = "\improper SolCom engineering command jacket" + desc = "A uniform service jacket belonging to the Terran Commonwealth Explorer Corps. It has gold buttons and orange trim." /obj/item/clothing/suit/storage/service/sifguard/supply - name = "explorer's supply jacket" - desc = "A uniform service jacket belonging to the Society of Universal Cartographers. It has silver buttons and brown trim." + name = "\improper SolCom supply jacket" + desc = "A uniform service jacket belonging to the Terran Commonwealth Explorer Corps. It has silver buttons and brown trim." /obj/item/clothing/suit/storage/service/sifguard/security - name = "explorer's security jacket" - desc = "A uniform service jacket belonging to the Society of Universal Cartographers. It has silver buttons and red trim." + name = "\improper SolCom security jacket" + desc = "A uniform service jacket belonging to the Terran Commonwealth Explorer Corps. It has silver buttons and red trim." /obj/item/clothing/suit/storage/service/sifguard/security/command - name = "explorer's security command jacket" - desc = "A uniform service jacket belonging to the Society of Universal Cartographers. It has gold buttons and red trim." + name = "\improper SolCom security command jacket" + desc = "A uniform service jacket belonging to the Terran Commonwealth Explorer Corps. It has gold buttons and red trim." /obj/item/clothing/suit/storage/service/sifguard/command - name = "explorer's command jacket" - desc = "A uniform service jacket belonging to the Society of Universal Cartographers. It has gold buttons and gold trim." + name = "\improper SolCom command jacket" + desc = "A uniform service jacket belonging to the Terran Commonwealth Explorer Corps. It has gold buttons and gold trim." /obj/item/clothing/suit/storage/service/marine name = "marine coat" - desc = "An USDF Marine Corps service coat. Green and undecorated." + desc = "An TCG Marine Corps service coat. Green and undecorated." /obj/item/clothing/suit/storage/service/marine/medical name = "marine medical jacket" - desc = "An USDF Marine Corps service coat. This one has blue markings." + desc = "An TCG Marine Corps service coat. This one has blue markings." /obj/item/clothing/suit/storage/service/marine/medical/command name = "marine medical command jacket" - desc = "An USDF Marine Corps service coat. This one has blue and gold markings." + desc = "An TCG Marine Corps service coat. This one has blue and gold markings." /obj/item/clothing/suit/storage/service/marine/engineering name = "marine engineering jacket" - desc = "An USDF Marine Corps service coat. This one has orange markings." + desc = "An TCG Marine Corps service coat. This one has orange markings." /obj/item/clothing/suit/storage/service/marine/engineering/command name = "marine engineering command jacket" - desc = "An USDF Marine Corps service coat. This one has orange and gold markings." + desc = "An TCG Marine Corps service coat. This one has orange and gold markings." /obj/item/clothing/suit/storage/service/marine/supply name = "marine supply jacket" - desc = "An USDF Marine Corps service coat. This one has brown markings." + desc = "An TCG Marine Corps service coat. This one has brown markings." /obj/item/clothing/suit/storage/service/marine/security name = "marine security jacket" - desc = "An USDF Marine Corps service coat. This one has red markings." + desc = "An TCG Marine Corps service coat. This one has red markings." /obj/item/clothing/suit/storage/service/marine/security/command name = "marine security command jacket" - desc = "An USDF Marine Corps service coat. This one has red and gold markings." + desc = "An TCG Marine Corps service coat. This one has red and gold markings." /obj/item/clothing/suit/storage/service/marine/command name = "marine command jacket" - desc = "An USDF Marine Corps service coat. This one has gold markings." + desc = "An TCG Marine Corps service coat. This one has gold markings." //Dress /obj/item/clothing/suit/dress/expedition - name = "explorer's dress jacket" - desc = "A silver and grey dress jacket belonging to the Society of Universal Cartographers. Fashionable, for the 25th century at least." + name = "SolCom dress jacket" + desc = "A silver and grey dress jacket belonging to the Terran Commonwealth Explorer Corps. Fashionable, for the 24th century at least." /obj/item/clothing/suit/dress/expedition/command name = "explorer's command dress jacket" - desc = "A gold and grey dress jacket belonging to the Society of Universal Cartographers. The height of fashion." + desc = "A gold and grey dress jacket belonging to the Terran Commonwealth Explorer Corps. The height of fashion." /obj/item/clothing/suit/storage/toggle/dress/fleet name = "fleet dress jacket" - desc = "A crisp white USDF Fleet dress jacket with blue and gold accents. Don't get near pasta sauce or vox." + desc = "A crisp white TCG Fleet dress jacket with blue and gold accents. Don't get near pasta sauce or vox." /obj/item/clothing/suit/storage/toggle/dress/fleet/command name = "fleet command dress jacket" - desc = "A crisp white USDF Fleet dress jacket dripping with gold accents. So bright it's blinding." + desc = "A crisp white TCG Fleet dress jacket dripping with gold accents. So bright it's blinding." /obj/item/clothing/suit/dress/marine name = "marine dress jacket" - desc = "A tailored black USDF Marine Corps dress jacket with red trim. So sexy it hurts." + desc = "A tailored black TCG Marine Corps dress jacket with red trim. So sexy it hurts." /obj/item/clothing/suit/dress/marine/command name = "marine command dress jacket" - desc = "A tailored black USDF Marine Corps dress jacket with gold trim. Smells like ceremony." \ No newline at end of file + desc = "A tailored black TCG Marine Corps dress jacket with gold trim. Smells like ceremony." \ No newline at end of file diff --git a/code/modules/clothing/suits/utility_vr.dm b/code/modules/clothing/suits/utility_vr.dm index c1982a58ce..0da22a69d9 100644 --- a/code/modules/clothing/suits/utility_vr.dm +++ b/code/modules/clothing/suits/utility_vr.dm @@ -1,3 +1,18 @@ /obj/item/clothing/head/bomb_hood/security icon_state = "bombsuitsec" body_parts_covered = HEAD + +/obj/item/clothing/suit/storage/toggle/paramedic + name = "paramedic vest" + desc = "A vest that protects against minor chemical spills." + icon = 'icons/obj/clothing/suits_vr.dmi' + icon_override = 'icons/mob/suit_vr.dmi' + icon_state = "paramedic-vest" + item_state = "paramedic-vest" + item_state_slots = list(slot_r_hand_str = "blue_labcoat", slot_l_hand_str = "blue_labcoat") + blood_overlay_type = "coat" + body_parts_covered = UPPER_TORSO + flags_inv = HIDEHOLSTER + allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) + index = 1 \ No newline at end of file diff --git a/code/modules/clothing/under/accessories/accessory_vr.dm b/code/modules/clothing/under/accessories/accessory_vr.dm index c1665792f8..e2b2f8cf05 100644 --- a/code/modules/clothing/under/accessories/accessory_vr.dm +++ b/code/modules/clothing/under/accessories/accessory_vr.dm @@ -2,6 +2,29 @@ // Collars and such like that // +/obj/item/clothing/accessory/choker //A colorable, tagless choker + name = "plain choker" + slot_flags = SLOT_TIE | SLOT_OCLOTHING + desc = "A simple, plain choker. Or maybe it's a collar? Use in-hand to customize it." + icon = 'icons/obj/clothing/ties_vr.dmi' + icon_override = 'icons/mob/ties_vr.dmi' + icon_state = "choker_cst" + item_state = "choker_cst" + overlay_state = "choker_cst" + var/customized = 0 + +/obj/item/clothing/accessory/choker/attack_self(mob/user as mob) + if(!customized) + var/design = input(user,"Descriptor?","Pick descriptor","") in list("plain","simple","ornate","elegant","opulent") + var/material = input(user,"Material?","Pick material","") in list("leather","velvet","lace","fabric","latex","plastic","metal","chain","silver","gold","platinum","steel","bead","ruby","sapphire","emerald","diamond") + var/type = input(user,"Type?","Pick type","") in list("choker","collar","necklace") + name = "[design] [material] [type]" + desc = "A [type], made of [material]. It's rather [design]." + customized = 1 + to_chat(usr,"[src] has now been customized.") + else + to_chat(usr,"[src] has already been customized!") + /obj/item/clothing/accessory/collar slot_flags = SLOT_TIE | SLOT_OCLOTHING icon = 'icons/obj/clothing/ties_vr.dmi' diff --git a/code/modules/clothing/under/accessories/armor.dm b/code/modules/clothing/under/accessories/armor.dm index b440c0b834..9ef80846ee 100644 --- a/code/modules/clothing/under/accessories/armor.dm +++ b/code/modules/clothing/under/accessories/armor.dm @@ -96,9 +96,16 @@ name = "mesh armor plate" desc = "A mesh armor plate made of steel-reinforced synthetic fibers, great for dealing with small blades. Attaches to a plate carrier." icon_state = "armor_stab" - armor = list(melee = 25, bullet = 5, laser = 20, energy = 10, bomb = 15, bio = 0, rad = 0) + armor = list(melee = 30, bullet = 5, laser = 20, energy = 10, bomb = 15, bio = 0, rad = 0) armorsoak = list(melee = 7, bullet = 5, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) +/obj/item/clothing/accessory/armor/armorplate/blast + name = "gel armor plate" + desc = "A gel armor plate made of high-grade polymers, great for dealing with localized blasts. Attaches to a plate carrier." + icon_state = "armor_blast" + armor = list(melee = 25, bullet = 25, laser = 10, energy = 0, bomb = 30, bio = 0, rad = 0) + armorsoak = list(melee = 5, bullet = 7, laser = 0, energy = 0, bomb = 40, bio = 0, rad = 0) + /obj/item/clothing/accessory/armor/armorplate/medium name = "medium armor plate" desc = "A plasteel-reinforced synthetic armor plate, providing good protection. Attaches to a plate carrier." diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm index e5c3935342..c241a7f701 100644 --- a/code/modules/clothing/under/accessories/holster.dm +++ b/code/modules/clothing/under/accessories/holster.dm @@ -88,11 +88,11 @@ ..() /obj/item/clothing/accessory/holster/examine(mob/user) - ..(user) - if (holstered) - to_chat(user, "A [holstered] is holstered here.") + . = ..(user) + if(holstered) + . += "A [holstered] is holstered here." else - to_chat(user, "It is empty.") + . += "It is empty." /obj/item/clothing/accessory/holster/on_attached(obj/item/clothing/under/S, mob/user as mob) ..() diff --git a/code/modules/clothing/under/accessories/permits_vr.dm b/code/modules/clothing/under/accessories/permits_vr.dm index 6b73b13bcd..8913040278 100644 --- a/code/modules/clothing/under/accessories/permits_vr.dm +++ b/code/modules/clothing/under/accessories/permits_vr.dm @@ -1,3 +1,6 @@ +/obj/item/clothing/accessory/permit/drone + desc = "A card issued by the EIO, indicating that the owner is a Drone Intelligence. Drones are mandated to carry this card within SolCom space, by law." + /obj/item/clothing/accessory/permit/gun/planetside name = "explorer gun permit" desc = "A card indicating that the owner is allowed to carry a firearm during active exploration missions." diff --git a/code/modules/clothing/under/accessories/temperature/poncho.dm b/code/modules/clothing/under/accessories/temperature/poncho.dm new file mode 100644 index 0000000000..f1815760b8 --- /dev/null +++ b/code/modules/clothing/under/accessories/temperature/poncho.dm @@ -0,0 +1,68 @@ + +/obj/item/clothing/accessory/poncho/thermal + name = "thermal poncho" + desc = "A simple, comfortable poncho with a thermal foil layer." + slot_flags = SLOT_OCLOTHING | SLOT_TIE + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS + + cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS + heat_protection = UPPER_TORSO|LOWER_TORSO|ARMS + + slowdown = 0.2 + + min_cold_protection_temperature = T0C - 40 + max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE + +/obj/item/clothing/accessory/poncho/thermal/green + name = "green thermal poncho" + desc = "A simple, comfortable poncho with a thermal foil layer. This one is green." + icon_state = "greenponcho" + item_state = "greenponcho" + +/obj/item/clothing/accessory/poncho/thermal/red + name = "red thermal poncho" + desc = "A simple, comfortable poncho with a thermal foil layer. This one is red." + icon_state = "redponcho" + item_state = "redponcho" + +/obj/item/clothing/accessory/poncho/thermal/purple + name = "purple thermal poncho" + desc = "A simple, comfortable poncho with a thermal foil layer. This one is purple." + icon_state = "purpleponcho" + item_state = "purpleponcho" + +/obj/item/clothing/accessory/poncho/thermal/blue + name = "blue thermal poncho" + desc = "A simple, comfortable poncho with a thermal foil layer. This one is blue." + icon_state = "blueponcho" + item_state = "blueponcho" + +/obj/item/clothing/accessory/poncho/thermal/security + name = "security thermal poncho" + desc = "A simple, comfortable poncho with a thermal foil layer. This one is black and red, standard NanoTrasen Security colors." + icon_state = "secponcho" + item_state = "secponcho" + +/obj/item/clothing/accessory/poncho/thermal/medical + name = "medical thermal poncho" + desc = "A simple, comfortable poncho with a thermal foil layer. This one is white with green and blue tint, standard Medical colors." + icon_state = "medponcho" + item_state = "medponcho" + +/obj/item/clothing/accessory/poncho/thermal/engineering + name = "engineering thermal poncho" + desc = "A simple, comfortable poncho with a thermal foil layer. This one is yellow and orange, standard Engineering colors." + icon_state = "engiponcho" + item_state = "engiponcho" + +/obj/item/clothing/accessory/poncho/thermal/science + name = "science thermal poncho" + desc = "A simple, comfortable poncho with a thermal foil layer. This one is white with purple trim, standard NanoTrasen Science colors." + icon_state = "sciponcho" + item_state = "sciponcho" + +/obj/item/clothing/accessory/poncho/thermal/cargo + name = "cargo thermal poncho" + desc = "A simple, comfortable poncho with a thermal foil layer. This one is tan and grey, the colors of Cargo." + icon_state = "cargoponcho" + item_state = "cargoponcho" diff --git a/code/modules/clothing/under/accessories/torch_vr.dm b/code/modules/clothing/under/accessories/torch_vr.dm index 71ce5fb45d..caba931c6f 100644 --- a/code/modules/clothing/under/accessories/torch_vr.dm +++ b/code/modules/clothing/under/accessories/torch_vr.dm @@ -1,23 +1,194 @@ -/obj/item/clothing/accessory/solgov/department/command - desc = "Insignia denoting assignment to the command department. These fit Society of Universal Cartographers uniforms." +/***** +medals +*****/ +/obj/item/clothing/accessory/medal/solgov/iron/star + name = "iron star medal" + desc = "An iron star awarded to members of the TCG for meritorious achievement or service in a combat zone." -/obj/item/clothing/accessory/solgov/department/engineering - desc = "Insignia denoting assignment to the engineering department. These fit Society of Universal Cartographers uniforms." +/obj/item/clothing/accessory/medal/solgov/iron/sol + name = "\improper Terran expeditionary medal" + desc = "An iron medal awarded to members of the TCG for service outside of the borders of the Terran Commonwealth Government." -/obj/item/clothing/accessory/solgov/department/security - desc = "Insignia denoting assignment to the security department. These fit Society of Universal Cartographers uniforms." +/obj/item/clothing/accessory/medal/solgov/bronze/heart + name = "bronze heart medal" + desc = "A bronze heart awarded to members of the TCG for injury or death in the line of duty." -/obj/item/clothing/accessory/solgov/department/medical - desc = "Insignia denoting assignment to the medical department. These fit Society of Universal Cartographers uniforms." +/obj/item/clothing/accessory/medal/solgov/bronze/sol + name = "\improper Terran defensive operations medal" + desc = "A bronze medal awarded for members of the TCG for service defending the border regions." -/obj/item/clothing/accessory/solgov/department/supply - desc = "Insignia denoting assignment to the supply department. These fit Society of Universal Cartographers uniforms." +/obj/item/clothing/accessory/medal/solgov/silver/sword + name = "combat action medal" + desc = "A silver medal awarded to members of the TCG for honorable service while under enemy fire." -/obj/item/clothing/accessory/solgov/department/exploration - desc = "Insignia denoting assignment to the exploration department. These fit Society of Universal Cartographers uniforms." +/obj/item/clothing/accessory/medal/solgov/silver/sol + name = "\improper Terran valor medal" + desc = "A silver medal awarded for members of the TCG for acts of exceptional valor." -/obj/item/clothing/accessory/solgov/department/research - desc = "Insignia denoting assignment to the research department. These fit Society of Universal Cartographers uniforms." +/obj/item/clothing/accessory/medal/solgov/gold/star + name = "gold star medal" + desc = "A gold star awarded to members of the TCG for acts of heroism in a combat zone." -/obj/item/clothing/accessory/solgov/department/service - desc = "Insignia denoting assignment to the service department. These fit Society of Universal Cartographers uniforms." \ No newline at end of file +/obj/item/clothing/accessory/medal/solgov/gold/sun + name = "solar service medal" + desc = "A gold medal awarded to members of the TCG by the Secretary General for significant contributions to the Sol Central Government." + +/obj/item/clothing/accessory/medal/solgov/gold/crest + name = "solar honor medal" + desc = "A gold medal awarded to members of the Defense Forces by the Secretary General for personal acts of valor and heroism above and beyond the call of duty." + +/obj/item/clothing/accessory/medal/solgov/gold/sol + name = "\improper Terran sapientarian medal" + desc = "A gold medal awarded for members of the TCG for significant contributions to sapient rights." + +/obj/item/clothing/accessory/medal/solgov/heart + name = "medical medal" + desc = "A white heart emblazoned with a red cross awarded to members of the SCG for service as a medical professional in a combat zone." + +/obj/item/clothing/accessory/solgov/torch_patch + name = "\improper Torch mission patch" + desc = "A fire resistant shoulder patch, worn by the personnel involved in the Torch Project." + +/obj/item/clothing/accessory/solgov/ec_patch + name = "\improper Observatory patch" + desc = "A laminated shoulder patch, carrying the symbol of the Terran Commonwealth Expeditionary Corps Observatory, or TCGEO for short, the eyes and ears of the Expeditionary Corps' missions." + +/obj/item/clothing/accessory/solgov/ec_patch/fieldops + name = "\improper Field Operations patch" + desc = "A radiation-shielded shoulder patch, carrying the symbol of the Terran Commonwealth Expeditionary Corps Field Operations, or TCGECFO for short, the hands-on workers of every Expeditionary Corps mission." + +/obj/item/clothing/accessory/solgov/cultex_patch + name = "\improper Cultural Exchange patch" + desc = "A radiation-shielded shoulder patch, denoting service in the the Terran Commonwealth Expeditionary Corps Cultural Exchange program." + +/obj/item/clothing/accessory/solgov/fleet_patch + name = "\improper First Fleet patch" + desc = "A fancy shoulder patch carrying insignia of First Fleet, the Sol Guard, stationed in Sol." + +/obj/item/clothing/accessory/solgov/fleet_patch/second + name = "\improper Second Fleet patch" + desc = "A well-worn shoulder patch carrying insignia of Second Fleet, the Home Guard, tasked with defense of Terran territories." + +/obj/item/clothing/accessory/solgov/fleet_patch/third + name = "\improper Third Fleet patch" + desc = "A scuffed shoulder patch carrying insignia of Third Fleet, the Border Guard, guarding borders of Terran territory against Vox and pirates." + +/obj/item/clothing/accessory/solgov/fleet_patch/fourth + name = "\improper Fourth Fleet patch" + desc = "A pristine shoulder patch carrying insignia of Fourth Fleet, stationed on Skrell border." + +/obj/item/clothing/accessory/solgov/fleet_patch/fifth + name = "\improper Fifth Fleet patch" + desc = "A tactical shoulder patch carrying insignia of Fifth Fleet, the Quick Reaction Force, recently formed and outfited with last tech." + +/****** +ribbons +******/ +/obj/item/clothing/accessory/ribbon/solgov/marksman + name = "marksmanship ribbon" + desc = "A military decoration awarded to members of the TCG for good marksmanship scores in training. Common in the days of energy weapons." + +/obj/item/clothing/accessory/ribbon/solgov/peace + name = "peacekeeping ribbon" + desc = "A military decoration awarded to members of the TCG for service during a peacekeeping operation." + +/obj/item/clothing/accessory/ribbon/solgov/frontier + name = "frontier ribbon" + desc = "A military decoration awarded to members of the TCG for service along the frontier." + +/obj/item/clothing/accessory/ribbon/solgov/instructor + name = "instructor ribbon" + desc = "A military decoration awarded to members of the TCG for service as an instructor." + +/************* +specialty pins +*************/ +/obj/item/clothing/accessory/solgov/specialty/janitor + name = "custodial blazes" + desc = "Purple blazes denoting a custodial technician." + +/obj/item/clothing/accessory/solgov/specialty/brig + name = "brig blazes" + desc = "Red blazes denoting a brig officer." + +/obj/item/clothing/accessory/solgov/specialty/forensic + name = "forensics blazes" + desc = "Steel blazes denoting a forensic technician." + +/obj/item/clothing/accessory/solgov/specialty/atmos + name = "atmospherics blazes" + desc = "Turquoise blazes denoting an atmospheric technician." + +/obj/item/clothing/accessory/solgov/specialty/counselor + name = "counselor blazes" + desc = "Blue blazes denoting a counselor." + +/obj/item/clothing/accessory/solgov/specialty/chemist + name = "chemistry blazes" + desc = "Orange blazes denoting a chemist." + +/obj/item/clothing/accessory/solgov/specialty/enlisted + name = "enlisted qualification pin" + desc = "An iron pin denoting some special qualification." + +/obj/item/clothing/accessory/solgov/specialty/officer + name = "officer's qualification pin" + desc = "A golden pin denoting some special qualification." + +/obj/item/clothing/accessory/solgov/specialty/pilot + name = "pilot's qualification pin" + desc = "An iron pin denoting the qualification to fly TCG spacecraft." + +/***** +badges +*****/ +/obj/item/clothing/accessory/badge/solgov/representative + name = "representative's badge" + desc = "A leather-backed plastic badge with a variety of information printed on it. Belongs to a representative of the Terran Commonwealth." + badge_string = "Terran Commonwealth" + +/******* +armbands +*******/ +/obj/item/clothing/accessory/armband/solgov/mp + name = "military police brassard" + desc = "An armlet, worn by the crew to display which department they're assigned to. This one is black with 'MP' in white." + +/obj/item/clothing/accessory/armband/solgov/ma + name = "master at arms brassard" + desc = "An armlet, worn by the crew to display which department they're assigned to. This one is white with 'MA' in navy blue." + +/***************** +armour attachments +*****************/ +/obj/item/clothing/accessory/armor/tag/solgov + name = "\improper TCG Flag" + desc = "An emblem depicting the Terran Commonwealth's flag." + +/obj/item/clothing/accessory/armor/tag/solgov/ec + name = "\improper Expeditionary Corps crest" + desc = "An emblem depicting the crest of the TCG Expeditionary Corps." + +/obj/item/clothing/accessory/armor/tag/solgov/sec + name = "\improper POLICE tag" + desc = "An armor tag with the word POLICE printed in silver lettering on it." + +/obj/item/clothing/accessory/armor/tag/solgov/medic + name = "\improper MEDIC tag" + desc = "An armor tag with the word MEDIC printed in red lettering on it." + +/obj/item/clothing/accessory/armor/tag/solgov/agent + name = "\improper OCIE AGENT tag" + desc = "An armor tag with the word OCIE AGENT printed in gold lettering on it." + +/obj/item/clothing/accessory/armor/tag/solgov/com + name = "\improper TCG tag" + desc = "An armor tag with the words COMMONWEALTH OF SOL-PROCYON printed in gold lettering on it." + +/obj/item/clothing/accessory/armor/tag/solgov/com/sec + name = "\improper POLICE tag" + desc = "An armor tag with the words POLICE printed in gold lettering on it." + +/obj/item/clothing/accessory/armor/helmcover/blue/sol + name = "peacekeeper helmet cover" + desc = "A fabric cover for armored helmets. This one is in TCG peacekeeper colors." diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index a0e794929f..800ba8e3ec 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -938,6 +938,11 @@ Uniforms and such name = "explorer's jumpsuit" icon_state = "explorer" +/obj/item/clothing/under/explorer/armored + desc = "A green uniform for operating in hazardous environments. This one looks like it's been modified." + armor = list(melee = 10, bullet = 10, laser = 10,energy = 10, bomb = 10, bio = 10, rad = 30) + armorsoak = list(melee = 5, bullet = 5, laser = 5,energy = 5, bomb = 5, bio = 5, rad = 0) + /obj/item/clothing/under/cohesion name = "black cohesion suit" desc = "A plain black cohesion suit intended to assist Prometheans in maintaining their form and prevent direct skin exposure." diff --git a/code/modules/clothing/under/miscellaneous_vr.dm b/code/modules/clothing/under/miscellaneous_vr.dm index 2c48b859a2..fb96aaff12 100644 --- a/code/modules/clothing/under/miscellaneous_vr.dm +++ b/code/modules/clothing/under/miscellaneous_vr.dm @@ -1,3 +1,6 @@ +/obj/item/clothing/under/customs + desc = "A standard SolCom customs uniform. Complete with epaulettes." + /obj/item/clothing/var/hides_bulges = FALSE // OwO wats this? /obj/item/clothing/under/permit @@ -108,4 +111,21 @@ //Same as Nanotrasen Security Uniforms /obj/item/clothing/under/ert - armor = list(melee = 5, bullet = 10, laser = 10, energy = 5, bomb = 5, bio = 0, rad = 0) \ No newline at end of file + armor = list(melee = 5, bullet = 10, laser = 10, energy = 5, bomb = 5, bio = 0, rad = 0) + +/obj/item/clothing/under/dress/qipao + name = "qipao" + icon = 'icons/obj/clothing/uniforms_vr.dmi' + icon_override = 'icons/mob/uniform_vr.dmi' + icon_state = "qipao" + item_state = "qipao" + +/obj/item/clothing/under/dress/qipao/white + name = "white qipao" + icon_state = "qipao_white" + item_state = "qipao_white" + +/obj/item/clothing/under/dress/qipao/red + name = "red qipao" + icon_state = "qipao_red" + item_state = "qipao_red" diff --git a/code/modules/clothing/under/solgov_vr.dm b/code/modules/clothing/under/solgov_vr.dm index eb6e793685..e663db1344 100644 --- a/code/modules/clothing/under/solgov_vr.dm +++ b/code/modules/clothing/under/solgov_vr.dm @@ -2,8 +2,8 @@ //PT /obj/item/clothing/under/solgov/pt/sifguard - name = "explorer's pt uniform" - desc = "A baggy shirt bearing the seal of the Society of Universal Cartographers and some dorky looking blue shorts." + name = "\improper SolCom pt uniform" + desc = "A baggy shirt bearing the seal of the Terran Commonwealth Explorer Corps and some dorky looking blue shorts." /obj/item/clothing/under/solgov/pt/fleet name = "fleet pt uniform" @@ -21,33 +21,33 @@ desc = "A comfortable turtleneck and black utility trousers." /obj/item/clothing/under/solgov/utility/sifguard - name = "explorer's uniform" - desc = "The utility uniform of the Society of Universal Cartographers, made from biohazard resistant material. This one has silver trim." + name = "\improper SolCom uniform" + desc = "The utility uniform of the Terran Commonwealth Explorer Corps, made from biohazard resistant material. This one has silver trim." /obj/item/clothing/under/solgov/utility/sifguard/officer - name = "explorer's officer uniform" - desc = "The utility uniform of the Society of Universal Cartographers, made from biohazard resistant material. This one has gold trim." + name = "\improper SolCom officer uniform" + desc = "The utility uniform of the Terran Commonwealth Explorer Corps, made from biohazard resistant material. This one has gold trim." /obj/item/clothing/under/solgov/utility/fleet name = "fleet coveralls" - desc = "The utility uniform of the USDF Fleet, made from an insulated material." + desc = "The utility uniform of the TCG Fleet, made from an insulated material." /obj/item/clothing/under/solgov/utility/marine name = "marine fatigues" - desc = "The utility uniform of the USDF Marine Corps, made from durable material." + desc = "The utility uniform of the TCG Marine Corps, made from durable material." /obj/item/clothing/under/solgov/utility/marine/green name = "green fatigues" - desc = "A green version of the USDF marine utility uniform, made from durable material." + desc = "A green version of the TCG marine utility uniform, made from durable material." /obj/item/clothing/under/solgov/utility/marine/tan name = "tan fatigues" - desc = "A tan version of the USDF marine utility uniform, made from durable material." + desc = "A tan version of the TCG marine utility uniform, made from durable material." /obj/item/clothing/under/solgov/utility/marine/olive name = "olive fatigues" - desc = "An olive version of the USDF marine utility uniform, made from durable material." + desc = "An olive version of the TCG marine utility uniform, made from durable material." icon = 'icons/obj/clothing/uniforms_vr.dmi' icon_override = 'icons/mob/uniform_vr.dmi' icon_state = "bdu_olive" @@ -55,7 +55,7 @@ /obj/item/clothing/under/solgov/utility/marine/desert name = "desert fatigues" - desc = "A desert version of the USDF marine utility uniform, made from durable material." + desc = "A desert version of the TCG marine utility uniform, made from durable material." icon = 'icons/obj/clothing/uniforms_vr.dmi' icon_override = 'icons/mob/uniform_vr.dmi' icon_state = "bdu_olive" @@ -65,29 +65,29 @@ /obj/item/clothing/under/solgov/service/fleet name = "fleet service uniform" - desc = "The service uniform of the USDF Fleet, made from immaculate white fabric." + desc = "The service uniform of the TCG Fleet, made from immaculate white fabric." /obj/item/clothing/under/solgov/service/marine name = "marine service uniform" - desc = "The service uniform of the USDF Marine Corps. Slimming." + desc = "The service uniform of the TCG Marine Corps. Slimming." worn_state = "greenservice" /obj/item/clothing/under/solgov/service/marine/command name = "marine command service uniform" - desc = "The service uniform of the USDF Marine Corps. Slimming and stylish." + desc = "The service uniform of the TCG Marine Corps. Slimming and stylish." /obj/item/clothing/under/solgov/mildress/expeditionary - name = "explorer's dress uniform" - desc = "The dress uniform of the Society of Universal Cartographers in silver trim." + name = "\improper SolCom dress uniform" + desc = "The dress uniform of the Terran Commonwealth Explorer Corps in silver trim." /obj/item/clothing/under/solgov/mildress/expeditionary/command - name = "explorer's command dress uniform" - desc = "The dress uniform of the Society of Universal Cartographers in gold trim." + name = "\improper SolCom command dress uniform" + desc = "The dress uniform of the Terran Commonwealth Explorer Corps in gold trim." /obj/item/clothing/under/solgov/mildress/marine name = "marine dress uniform" - desc = "The dress uniform of the USDF Marine Corps, class given form." + desc = "The dress uniform of the TCG Marine Corps, class given form." /obj/item/clothing/under/solgov/mildress/marine/command name = "marine command dress uniform" - desc = "The dress uniform of the USDF Marine Corps, even classier in gold." \ No newline at end of file + desc = "The dress uniform of the TCG Marine Corps, even classier in gold." \ No newline at end of file diff --git a/code/modules/detectivework/tools/evidencebag.dm b/code/modules/detectivework/tools/evidencebag.dm index cf1deea0c7..3a651d8669 100644 --- a/code/modules/detectivework/tools/evidencebag.dm +++ b/code/modules/detectivework/tools/evidencebag.dm @@ -91,5 +91,6 @@ return /obj/item/weapon/evidencebag/examine(mob/user) - ..(user) - if (stored_item) user.examinate(stored_item) + . = ..() + if(stored_item) + user.examinate(stored_item) diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm index b5e4abd488..88858f7a70 100644 --- a/code/modules/economy/cash.dm +++ b/code/modules/economy/cash.dm @@ -158,6 +158,6 @@ proc/spawn_money(var/sum, spawnloc, mob/living/carbon/human/human_user as mob) update_icon() return //space cash /obj/item/weapon/spacecash/ewallet/examine(mob/user) - ..(user) - if (!(user in view(2)) && user!=src.loc) return - to_chat(user, "Charge card's owner: [src.owner_name]. Thalers remaining: [src.worth].") + . = ..() + if(Adjacent(user)) + . += "Charge card's owner: [src.owner_name]. Thalers remaining: [src.worth]." diff --git a/code/modules/economy/cash_register.dm b/code/modules/economy/cash_register.dm index 467846e3c1..1e065eb079 100644 --- a/code/modules/economy/cash_register.dm +++ b/code/modules/economy/cash_register.dm @@ -32,14 +32,14 @@ /obj/machinery/cash_register/examine(mob/user as mob) - ..(user) + . = ..(user) if(transaction_amount) - to_chat(user, "It has a purchase of [transaction_amount] pending[transaction_purpose ? " for [transaction_purpose]" : ""].") + . += "It has a purchase of [transaction_amount] pending[transaction_purpose ? " for [transaction_purpose]" : ""]." if(cash_open) if(cash_stored) - to_chat(user, "It holds [cash_stored] Thaler\s of money.") + . += "It holds [cash_stored] Thaler\s." else - to_chat(user, "It's completely empty.") + . += "It's completely empty." /obj/machinery/cash_register/attack_hand(mob/user as mob) diff --git a/code/modules/economy/retail_scanner.dm b/code/modules/economy/retail_scanner.dm index 9c2cff9dca..8d1057ae43 100644 --- a/code/modules/economy/retail_scanner.dm +++ b/code/modules/economy/retail_scanner.dm @@ -57,10 +57,9 @@ interact(user) /obj/item/device/retail_scanner/examine(mob/user as mob) - ..(user) + . = ..() if(transaction_amount) - to_chat(user, "It has a purchase of [transaction_amount] pending[transaction_purpose ? " for [transaction_purpose]" : ""].") - + . += "It has a purchase of [transaction_amount] pending[transaction_purpose ? " for [transaction_purpose]" : ""]." /obj/item/device/retail_scanner/interact(mob/user as mob) var/dat = "

Retail Scanner

" diff --git a/code/modules/events/gravity_vr.dm b/code/modules/events/gravity_vr.dm new file mode 100644 index 0000000000..314a23a3aa --- /dev/null +++ b/code/modules/events/gravity_vr.dm @@ -0,0 +1,38 @@ +/datum/event/gravity + announceWhen = 5 + var/list/zLevels + var/list/generators = list() + +/datum/event/gravity/setup() + endWhen = rand(5 MINUTES, 20 MINUTES) + // Setup which levels we will disrupt gravit on. + zLevels = using_map.station_levels.Copy() + for(var/datum/planet/P in SSplanets.planets) + zLevels -= P.expected_z_levels + +/datum/event/gravity/announce() + command_announcement.Announce("Feedback surge detected in mass-distributions systems. Artificial gravity has been disabled. Please wait for the system to reinitialize, or contact your engineering department.", "Gravity Failure") + +/datum/event/gravity/start() + gravity_is_on = 0 + + for(var/obj/machinery/gravity_generator/main/GG in machines) + if((GG.z in zLevels) && GG.on) + generators += GG + GG.breaker = FALSE + GG.set_power() + GG.charge_count = 10 + +/datum/event/gravity/end() + gravity_is_on = 1 + + var/did_anything = FALSE + for(var/obj/machinery/gravity_generator/main/GG in generators) + if(!GG.on) + GG.breaker = TRUE + GG.set_power() + GG.charge_count = 90 + did_anything = TRUE + + if(did_anything) + command_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.", "Gravity Restored") diff --git a/code/modules/events/ian_storm_vr.dm b/code/modules/events/ian_storm_vr.dm index 574df331bb..8e654cff43 100644 --- a/code/modules/events/ian_storm_vr.dm +++ b/code/modules/events/ian_storm_vr.dm @@ -4,8 +4,8 @@ endWhen = 3 /datum/event/ianstorm/announce() - command_announcement.Announce("It has come to our attention that the station passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert") - spawn(rand(50, 300)) + command_announcement.Announce("It has come to our attention that the station passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert", 'sound/AI/ian_storm.ogg') + spawn(7 SECONDS) command_announcement.Announce("Wait. No, thats wrong. The station passed through an IAN storm!.", "Ian Alert") /datum/event/ianstorm/start() diff --git a/code/modules/fishing/fishing_rod.dm b/code/modules/fishing/fishing_rod.dm index be7a6f6e79..52578a31c7 100644 --- a/code/modules/fishing/fishing_rod.dm +++ b/code/modules/fishing/fishing_rod.dm @@ -32,11 +32,11 @@ /obj/item/weapon/material/fishing_rod/built strung = FALSE -/obj/item/weapon/material/fishing_rod/examine(mob/M as mob) - ..() +/obj/item/weapon/material/fishing_rod/examine(mob/user) + . = ..() if(Bait) - to_chat(M, "\The [src] has \the [Bait] hanging on its hook.") - Bait.examine(M) + . += "It has [Bait] hanging on its hook: " + . += Bait.examine(user) /obj/item/weapon/material/fishing_rod/CtrlClick(mob/user) if((src.loc == user || Adjacent(user)) && Bait) diff --git a/code/modules/food/drinkingglass/drinkingglass.dm b/code/modules/food/drinkingglass/drinkingglass.dm index 6b49fcdb22..928c24954b 100644 --- a/code/modules/food/drinkingglass/drinkingglass.dm +++ b/code/modules/food/drinkingglass/drinkingglass.dm @@ -28,21 +28,21 @@ matter = list("glass" = 60) /obj/item/weapon/reagent_containers/food/drinks/glass2/examine(mob/M as mob) - ..() + . = ..() for(var/I in extras) if(istype(I, /obj/item/weapon/glass_extra)) - to_chat(M, "There is \a [I] in \the [src].") + . += "There is \a [I] in \the [src]." else if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/fruit_slice)) - to_chat(M, "There is \a [I] on the rim.") + . += "There is \a [I] on the rim." else - to_chat(M, "There is \a [I] somewhere on the glass. Somehow.") + . += "There is \a [I] somewhere on the glass. Somehow." if(has_ice()) - to_chat(M, "There is some ice floating in the drink.") + . += "There is some ice floating in the drink." if(has_fizz()) - to_chat(M, "It is fizzing slightly.") + . += "It is fizzing slightly." /obj/item/weapon/reagent_containers/food/drinks/glass2/proc/has_ice() if(reagents.reagent_list.len > 0) diff --git a/code/modules/food/drinkingglass/shaker.dm b/code/modules/food/drinkingglass/shaker.dm index 3b81c6bdec..2cde81d562 100644 --- a/code/modules/food/drinkingglass/shaker.dm +++ b/code/modules/food/drinkingglass/shaker.dm @@ -12,7 +12,7 @@ var/lid_color = "black" /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/Initialize() - ..() + . = ..() lid_color = pick("black", "red", "blue") update_icon() @@ -24,8 +24,14 @@ name = "protein shake" /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake/Initialize() - ..() + . = ..() reagents.add_reagent("nutriment", 30) reagents.add_reagent("iron", 10) reagents.add_reagent("protein", 35) reagents.add_reagent("water", 25) + +/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake/update_icon() + ..() + // And now set half the stuff back because our name shouldn't change + name = initial(name) + desc = initial(desc) \ No newline at end of file diff --git a/code/modules/food/food/condiment.dm b/code/modules/food/food/condiment.dm index 5ed00e00f6..1dd137ff32 100644 --- a/code/modules/food/food/condiment.dm +++ b/code/modules/food/food/condiment.dm @@ -26,6 +26,8 @@ return /obj/item/weapon/reagent_containers/food/condiment/afterattack(var/obj/target, var/mob/user, var/flag) + if(!user.Adjacent(target)) + return if(standard_dispenser_refill(user, target)) return if(standard_pour_into(user, target)) diff --git a/code/modules/food/food/drinks.dm b/code/modules/food/food/drinks.dm index d8023dbedc..546c47a7e2 100644 --- a/code/modules/food/food/drinks.dm +++ b/code/modules/food/food/drinks.dm @@ -72,18 +72,18 @@ playsound(user.loc, 'sound/items/drink.ogg', rand(10, 50), 1) /obj/item/weapon/reagent_containers/food/drinks/examine(mob/user) - if(!..(user, 1)) - return - if(!reagents || reagents.total_volume == 0) - to_chat(user, "\The [src] is empty!") - else if (reagents.total_volume <= volume * 0.25) - to_chat(user, "\The [src] is almost empty!") - else if (reagents.total_volume <= volume * 0.66) - to_chat(user, "\The [src] is half full!") - else if (reagents.total_volume <= volume * 0.90) - to_chat(user, "\The [src] is almost full!") - else - to_chat(user, "\The [src] is full!") + . = ..() + if(Adjacent(user)) + if(!reagents?.total_volume) + . += "It is empty!" + else if (reagents.total_volume <= volume * 0.25) + . += "It is almost empty!" + else if (reagents.total_volume <= volume * 0.66) + . += "It is half full!" + else if (reagents.total_volume <= volume * 0.90) + . += "It is almost full!" + else + . += "It is full!" //////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/food/food/sandwich.dm b/code/modules/food/food/sandwich.dm index 13663af81a..6929586c05 100644 --- a/code/modules/food/food/sandwich.dm +++ b/code/modules/food/food/sandwich.dm @@ -79,9 +79,10 @@ ..() /obj/item/weapon/reagent_containers/food/snacks/csandwich/examine(mob/user) - ..(user) - var/obj/item/O = pick(contents) - to_chat(user, "You think you can see [O.name] in there.") + . = ..() + if(contents.len) + var/obj/item/O = pick(contents) + . += "You think you can see [O.name] in there." /obj/item/weapon/reagent_containers/food/snacks/csandwich/attack(mob/M as mob, mob/user as mob, def_zone) diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index ada6870827..a3f16a3563 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -43,7 +43,7 @@ /obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user as mob) return -/obj/item/weapon/reagent_containers/food/snacks/attack(mob/M as mob, mob/user as mob, def_zone) +/obj/item/weapon/reagent_containers/food/snacks/attack(mob/living/M as mob, mob/user as mob, def_zone) if(reagents && !reagents.total_volume) to_chat(user, "None of [src] left!") user.drop_from_inventory(src) @@ -92,9 +92,6 @@ if (fullness > 6000) // There has to be a limit eventually. to_chat(M, "Your stomach blorts and aches, prompting you to stop. You literally cannot force any more of [src] to go down your throat.") return 0 - /*if (fullness > (550 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat - to_chat(M, "You cannot force any more of [src] to go down your throat.") - return 0*/ //VOREStation Edit End else if(user.a_intent == I_HURT) @@ -123,11 +120,7 @@ to_chat(user, "\The [blocked] is in the way!") return - if (fullness <= (550 * (1 + M.overeatduration / 1000))) - user.visible_message("[user] attempts to feed [M] [src].") - else - user.visible_message("[user] cannot force anymore of [src] down [M]'s throat.") - return 0 + user.visible_message("[user] attempts to feed [M] [src].") user.setClickCooldown(user.get_attack_speed(src)) if(!do_mob(user, M)) return @@ -155,16 +148,16 @@ return 0 /obj/item/weapon/reagent_containers/food/snacks/examine(mob/user) - if(!..(user, 1)) - return - if (bitecount==0) - return - else if (bitecount==1) - to_chat(user, "\The [src] was bitten by someone!") - else if (bitecount<=3) - to_chat(user, "\The [src] was bitten [bitecount] times!") - else - to_chat(user, "\The [src] was bitten multiple times!") + . = ..() + if(Adjacent(user)) + if(bitecount==0) + return . + else if (bitecount==1) + . += "It was bitten by someone!" + else if (bitecount<=3) + . += "It was bitten [bitecount] times!" + else + . += "It was bitten multiple times!" /obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/storage)) diff --git a/code/modules/food/food/snacks_vr.dm b/code/modules/food/food/snacks_vr.dm index 31d0134e7c..0d768ad240 100644 --- a/code/modules/food/food/snacks_vr.dm +++ b/code/modules/food/food/snacks_vr.dm @@ -761,3 +761,14 @@ /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish toxin_type = null toxin_amount = null + +/obj/item/weapon/reagent_containers/food/snacks/honeybun + name = "Honeybun" + desc = "A delicious and sweet treat made with honey instead of sugar. On the sticky side." + icon_state = "honeybun" + bitesize = 2 + nutriment_amt = 4 + nutriment_desc = list("honey" = 2, "pastry" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/bun/Initialize() + . = ..() diff --git a/code/modules/food/kitchen/cooking_machines/_cooker.dm b/code/modules/food/kitchen/cooking_machines/_cooker.dm index 008910c253..70d7a9ad9c 100644 --- a/code/modules/food/kitchen/cooking_machines/_cooker.dm +++ b/code/modules/food/kitchen/cooking_machines/_cooker.dm @@ -39,10 +39,10 @@ cooking = new_setting icon_state = new_setting ? on_icon : off_icon -/obj/machinery/cooker/examine() - ..() - if(cooking_obj && Adjacent(usr)) - to_chat(usr, "You can see \a [cooking_obj] inside.") +/obj/machinery/cooker/examine(mob/user) + . = ..() + if(cooking_obj && Adjacent(user)) + . += "You can see \a [cooking_obj] inside." /obj/machinery/cooker/attackby(var/obj/item/I, var/mob/user) diff --git a/code/modules/food/kitchen/gibber.dm b/code/modules/food/kitchen/gibber.dm index e44c484c54..ab70028bd6 100644 --- a/code/modules/food/kitchen/gibber.dm +++ b/code/modules/food/kitchen/gibber.dm @@ -87,8 +87,8 @@ src.startgibbing(user) /obj/machinery/gibber/examine() - ..() - to_chat(usr, "The safety guard is [emagged ? "disabled" : "enabled"].") + . = ..() + . += "The safety guard is [emagged ? "disabled" : "enabled"]." /obj/machinery/gibber/emag_act(var/remaining_charges, var/mob/user) emagged = !emagged diff --git a/code/modules/food/recipes_microwave_vr.dm b/code/modules/food/recipes_microwave_vr.dm index b4feb63488..74511cac5b 100644 --- a/code/modules/food/recipes_microwave_vr.dm +++ b/code/modules/food/recipes_microwave_vr.dm @@ -231,4 +231,11 @@ /datum/recipe/microwave/foodcubes reagents = list("enzyme" = 20, "virusfood" = 5, "nutriment" = 15, "protein" = 15) // labor intensive items = list() - result = /obj/item/weapon/storage/box/wings/tray \ No newline at end of file + result = /obj/item/weapon/storage/box/wings/tray + +/datum/recipe/microwave/honeybun + reagents = list("milk" = 5, "egg" = 3,"honey" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/honeybun \ No newline at end of file diff --git a/code/modules/gamemaster/event2/event.dm b/code/modules/gamemaster/event2/event.dm index 7c69f23c96..4432be40ab 100644 --- a/code/modules/gamemaster/event2/event.dm +++ b/code/modules/gamemaster/event2/event.dm @@ -67,8 +67,19 @@ This allows for events that have their announcement happen after the end itself. // Returns the z-levels that are involved with the event. // In the future this might be handy for off-station events. -/datum/event2/event/proc/get_location_z_levels() - return using_map.station_levels +/datum/event2/event/proc/get_location_z_levels(space_only = FALSE) + . = using_map.station_levels.Copy() + if(space_only) + for(var/z_level in .) + if(is_planet_z_level(z_level)) + . -= z_level + + +/datum/event2/event/proc/is_planet_z_level(z_level) + var/datum/planet/P = LAZYACCESS(SSplanets.z_to_planet, z_level) + if(!istype(P)) + return FALSE + return TRUE // Returns a list of empty turfs in the same area. /datum/event2/event/proc/find_random_turfs(minimum_free_space = 5, list/specific_areas = list(), ignore_occupancy = FALSE) @@ -106,6 +117,7 @@ This allows for events that have their announcement happen after the end itself. continue // Occupied. . += A + // Starts the event. /datum/event2/event/proc/execute() time_started = world.time diff --git a/code/modules/gamemaster/event2/events/engineering/airlock_failure.dm b/code/modules/gamemaster/event2/events/engineering/airlock_failure.dm index 69b596d799..54548a88dd 100644 --- a/code/modules/gamemaster/event2/events/engineering/airlock_failure.dm +++ b/code/modules/gamemaster/event2/events/engineering/airlock_failure.dm @@ -4,6 +4,7 @@ chaos = 15 chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT event_type = /datum/event2/event/airlock_failure + var/needs_medical = FALSE /datum/event2/meta/airlock_failure/emag name = "airlock failure - emag" @@ -12,11 +13,13 @@ /datum/event2/meta/airlock_failure/door_crush name = "airlock failure - crushing" event_type = /datum/event2/event/airlock_failure/door_crush + needs_medical = TRUE /datum/event2/meta/airlock_failure/shock name = "airlock failure - shock" chaos = 30 event_type = /datum/event2/event/airlock_failure/shock + needs_medical = TRUE /datum/event2/meta/airlock_failure/get_weight() @@ -29,6 +32,8 @@ // Medical might be needed for some of the more violent airlock failures. var/medical = metric.count_people_in_department(DEPARTMENT_MEDICAL) + if(!medical && needs_medical) + return 0 return (engineering * 20) + (medical * 20) + (synths * 20) diff --git a/code/modules/gamemaster/event2/events/engineering/brand_intelligence.dm b/code/modules/gamemaster/event2/events/engineering/brand_intelligence.dm index bf1a8dfed6..85f51df192 100644 --- a/code/modules/gamemaster/event2/events/engineering/brand_intelligence.dm +++ b/code/modules/gamemaster/event2/events/engineering/brand_intelligence.dm @@ -1,6 +1,6 @@ /datum/event2/meta/brand_intelligence name = "vending machine malware" - departments = list(DEPARTMENT_EVERYONE, DEPARTMENT_EVERYONE) + departments = list(DEPARTMENT_ENGINEERING, DEPARTMENT_EVERYONE) chaos = 10 chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT event_type = /datum/event2/event/brand_intelligence diff --git a/code/modules/gamemaster/event2/events/engineering/spacevine.dm b/code/modules/gamemaster/event2/events/engineering/spacevine.dm index 5dd5d6b3a1..6620e67a0c 100644 --- a/code/modules/gamemaster/event2/events/engineering/spacevine.dm +++ b/code/modules/gamemaster/event2/events/engineering/spacevine.dm @@ -6,7 +6,7 @@ event_type = /datum/event2/event/spacevine /datum/event2/meta/spacevine/get_weight() - return 20 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 20) + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 10) + return 20 + (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 10) + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 5) diff --git a/code/modules/gamemaster/event2/events/engineering/window_break.dm b/code/modules/gamemaster/event2/events/engineering/window_break.dm index 0b02e78b3d..7aea410d45 100644 --- a/code/modules/gamemaster/event2/events/engineering/window_break.dm +++ b/code/modules/gamemaster/event2/events/engineering/window_break.dm @@ -11,7 +11,7 @@ event_type = /datum/event2/event/window_break /datum/event2/meta/window_break/get_weight() - return metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 20 + return (metric.count_people_in_department(DEPARTMENT_ENGINEERING) * 20) / (times_ran + 1) diff --git a/code/modules/gamemaster/event2/events/everyone/gravity.dm b/code/modules/gamemaster/event2/events/everyone/gravity.dm index c57f3bd919..5426698a22 100644 --- a/code/modules/gamemaster/event2/events/everyone/gravity.dm +++ b/code/modules/gamemaster/event2/events/everyone/gravity.dm @@ -7,14 +7,14 @@ event_type = /datum/event2/event/gravity /datum/event2/meta/gravity/get_weight() - return (20 + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 20)) / (times_ran + 1) + return (20 + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 5)) / (times_ran + 1) /datum/event2/event/gravity - length_lower_bound = 5 MINUTES - length_upper_bound = 10 MINUTES + length_lower_bound = 4 MINUTES + length_upper_bound = 8 MINUTES /datum/event2/event/gravity/announce() command_announcement.Announce("Feedback surge detected in mass-distributions systems. \ @@ -23,12 +23,12 @@ /datum/event2/event/gravity/start() for(var/area/A in world) - if(A.z in get_location_z_levels()) + if(A.z in get_location_z_levels(space_only = TRUE)) A.gravitychange(FALSE) /datum/event2/event/gravity/end() for(var/area/A in world) - if(A.z in get_location_z_levels()) + if(A.z in get_location_z_levels(space_only = TRUE)) A.gravitychange(TRUE) command_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.", "Gravity Restored") \ No newline at end of file diff --git a/code/modules/gamemaster/event2/events/everyone/gravity_vr.dm b/code/modules/gamemaster/event2/events/everyone/gravity_vr.dm new file mode 100644 index 0000000000..bb3b824d98 --- /dev/null +++ b/code/modules/gamemaster/event2/events/everyone/gravity_vr.dm @@ -0,0 +1,45 @@ +/datum/event2/meta/gravity + name = "gravity failure" + departments = list(DEPARTMENT_EVERYONE) + chaos = 20 + chaotic_threshold = EVENT_CHAOS_THRESHOLD_LOW_IMPACT + reusable = TRUE + event_type = /datum/event2/event/gravity + +/datum/event2/meta/gravity/get_weight() + return (20 + (metric.count_people_in_department(DEPARTMENT_EVERYONE) * 20)) / (times_ran + 1) + + + + +/datum/event2/event/gravity + length_lower_bound = 5 MINUTES + length_upper_bound = 20 MINUTES + var/list/generators = list() + +/datum/event2/event/gravity/announce() + command_announcement.Announce("Feedback surge detected in mass-distributions systems. Artificial gravity has been disabled. Please wait for the system to reinitialize, or contact your engineering department.", "Gravity Failure") + +/datum/event2/event/gravity/start() + gravity_is_on = 0 + + for(var/obj/machinery/gravity_generator/main/GG in machines) + if((GG.z in get_location_z_levels()) && GG.on) + generators += GG + GG.breaker = FALSE + GG.set_power() + GG.charge_count = 10 + +/datum/event2/event/gravity/end() + gravity_is_on = 1 + + var/did_anything = FALSE + for(var/obj/machinery/gravity_generator/main/GG in generators) + if(!GG.on) + GG.breaker = TRUE + GG.set_power() + GG.charge_count = 90 + did_anything = TRUE + + if(did_anything) + command_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.", "Gravity Restored") \ No newline at end of file diff --git a/code/modules/gamemaster/event2/events/security/prison_break.dm b/code/modules/gamemaster/event2/events/security/prison_break.dm index c178d1f990..ec07302f13 100644 --- a/code/modules/gamemaster/event2/events/security/prison_break.dm +++ b/code/modules/gamemaster/event2/events/security/prison_break.dm @@ -126,6 +126,7 @@ var/list/areas_to_break = list() var/list/area_types_to_break = null // Area types to include. var/list/area_types_to_ignore = null // Area types to exclude, usually due to undesired inclusion from inheritence. + var/ignore_blast_doors = FALSE /datum/event2/event/prison_break/brig area_display_name = "Brig" @@ -217,7 +218,7 @@ /datum/event2/event/prison_break/start() for(var/area/A in areas_to_break) spawn(0) // So we don't block the ticker. - A.prison_break() + A.prison_break(open_blast_doors = !ignore_blast_doors) // There's between 40 seconds and one minute before the whole station knows. // If there's a baddie engineer, they can choose to keep their early announcement to themselves and get a minute to exploit it. @@ -225,3 +226,9 @@ command_announcement.Announce("[pick("Gr3y.T1d3 virus","Malignant trojan")] was detected \ in \the [location_name()] [area_display_name] [containment_display_desc] subroutines. Secure any compromised \ areas immediately. AI involvement is recommended.", "[capitalize(containment_display_desc)] Alert") + + global_announcer.autosay( + "It is now safe to reactivate the APCs' main breakers inside [area_display_name].", + "[location_name()] Firewall Subroutines", + DEPARTMENT_ENGINEERING + ) diff --git a/code/modules/gamemaster/event2/events/synthetic/ion_storm.dm b/code/modules/gamemaster/event2/events/synthetic/ion_storm.dm index afcf20ebc8..e4c89aa691 100644 --- a/code/modules/gamemaster/event2/events/synthetic/ion_storm.dm +++ b/code/modules/gamemaster/event2/events/synthetic/ion_storm.dm @@ -6,9 +6,12 @@ event_type = /datum/event2/event/ion_storm /datum/event2/meta/ion_storm/get_weight() - var/bots = metric.count_people_in_department(DEPARTMENT_SYNTHETIC) - var/weight = 5 + (bots * 40) // A small chance even if no synths are on, since it can still emag beepsky. - return weight + var/list/bots = metric.get_people_in_department(DEPARTMENT_SYNTHETIC) + . = 5 // A small chance even if no synths are on, since it can still emag beepsky. + for(var/mob/living/silicon/S in bots) + if(istype(S, /mob/living/silicon/robot/drone)) // Drones don't get their laws screwed with, so don't count them. + continue + . += 40 /datum/event2/event/ion_storm diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index fbe703868f..d4eb606aa2 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -348,11 +348,11 @@ user.visible_message("\The [user] [concealed ? "conceals" : "reveals"] their hand.") /obj/item/weapon/hand/examine(mob/user) - ..(user) + . = ..() if((!concealed) && cards.len) - to_chat(user,"It contains: ") + . += "It contains: " for(var/datum/playingcard/P in cards) - to_chat(user,"\The [P.name].") + . += "\The [P.name]." /obj/item/weapon/hand/verb/Removecard() diff --git a/code/modules/games/spaceball_cards.dm b/code/modules/games/spaceball_cards.dm index 146317a720..d9c932908c 100644 --- a/code/modules/games/spaceball_cards.dm +++ b/code/modules/games/spaceball_cards.dm @@ -8,7 +8,7 @@ ..() var/datum/playingcard/P var/i - var/year = 554 + text2num(time2text(world.timeofday, "YYYY")) + var/year = 300 + text2num(time2text(world.timeofday, "YYYY")) //VOREStation Edit for(i=0;i<5;i++) P = new() if(prob(1)) diff --git a/code/modules/holodeck/HolodeckControl.dm b/code/modules/holodeck/HolodeckControl.dm index 5783bfc398..2d02146315 100644 --- a/code/modules/holodeck/HolodeckControl.dm +++ b/code/modules/holodeck/HolodeckControl.dm @@ -301,7 +301,7 @@ last_change = world.time active = 1 - use_power = USE_POWER_ACTIVE + update_use_power(USE_POWER_ACTIVE) for(var/item in holographic_objs) derez(item) @@ -362,7 +362,7 @@ last_gravity_change = world.time active = 1 - use_power = USE_POWER_IDLE + update_use_power(USE_POWER_IDLE) if(A.has_gravity) A.gravitychange(0) @@ -377,4 +377,4 @@ linkedholodeck.gravitychange(1) active = 0 - use_power = USE_POWER_IDLE + update_use_power(USE_POWER_IDLE) diff --git a/code/modules/hydroponics/beekeeping/beehive.dm b/code/modules/hydroponics/beekeeping/beehive.dm index d215ab3dac..a170bc9c0d 100644 --- a/code/modules/hydroponics/beekeeping/beehive.dm +++ b/code/modules/hydroponics/beekeeping/beehive.dm @@ -31,9 +31,9 @@ overlays += "bees3" /obj/machinery/beehive/examine(var/mob/user) - ..() + . = ..() if(!closed) - to_chat(user, "The lid is open.") + . += "The lid is open." /obj/machinery/beehive/attackby(var/obj/item/I, var/mob/user) if(I.is_crowbar()) @@ -158,7 +158,7 @@ /obj/machinery/honey_extractor name = "honey extractor" desc = "A machine used to turn honeycombs on the frame into honey and wax." - icon = 'icons/obj/virology.dmi' + icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "centrifuge" var/processing = 0 diff --git a/code/modules/hydroponics/grown_predefined.dm b/code/modules/hydroponics/grown_predefined.dm index e44025de7b..d8187fb24e 100644 --- a/code/modules/hydroponics/grown_predefined.dm +++ b/code/modules/hydroponics/grown_predefined.dm @@ -2,4 +2,7 @@ plantname = "ambrosia" /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus - plantname = "ambrosiadeus" \ No newline at end of file + plantname = "ambrosiadeus" + +/obj/item/weapon/reagent_containers/food/snacks/grown/sifpod + plantname = "sifbulb" diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 4c18c2aac3..cbdeaca55c 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -292,6 +292,26 @@ set_trait(TRAIT_PRODUCT_COLOUR,"#FFDD00") set_trait(TRAIT_PLANT_COLOUR,"#D6B44D") +/datum/seed/apple/sif + name = "sifbulb" + seed_name = "sivian tree" + display_name = "sivian tree" + kitchen_tag = "apple" + chems = list("nutriment" = list(1,5),"sifsap" = list(10,20)) + +/datum/seed/apple/sif/New() + ..() + set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_MATURATION,3) + set_trait(TRAIT_PRODUCTION,10) + set_trait(TRAIT_YIELD,3) + set_trait(TRAIT_POTENCY,12) + set_trait(TRAIT_PRODUCT_ICON,"alien3") + set_trait(TRAIT_PRODUCT_COLOUR,"#0720c3") + set_trait(TRAIT_PLANT_ICON,"tree5") + set_trait(TRAIT_FLESH_COLOUR,"#05157d") + set_trait(TRAIT_IDEAL_LIGHT, 1) + //Ambrosia/varieties. /datum/seed/ambrosia name = "ambrosia" diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm index affddf1168..442fb7da2e 100644 --- a/code/modules/hydroponics/seed_machines.dm +++ b/code/modules/hydroponics/seed_machines.dm @@ -33,7 +33,7 @@ new /obj/item/weapon/disk/botany(src) /obj/machinery/botany - icon = 'icons/obj/hydroponics_machines.dmi' + icon = 'icons/obj/hydroponics_machines_vr.dmi' //VOREStation Edit icon_state = "hydrotray3" density = 1 anchored = 1 diff --git a/code/modules/hydroponics/seed_packets.dm b/code/modules/hydroponics/seed_packets.dm index 74440c518c..848b5a10e7 100644 --- a/code/modules/hydroponics/seed_packets.dm +++ b/code/modules/hydroponics/seed_packets.dm @@ -60,9 +60,9 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds) src.desc = "It's labelled as coming from [seed.display_name]." /obj/item/seeds/examine(mob/user) - ..(user) + . = ..() if(seed && !seed.roundstart) - to_chat(user, "It's tagged as variety #[seed.uid].") + . += "It's tagged as variety #[seed.uid]." /obj/item/seeds/cutting name = "cuttings" @@ -334,3 +334,6 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds) /obj/item/seeds/gnomes seed_type = "gnomes" + +/obj/item/seeds/sifbulb + seed_type = "sifbulb" diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index d5bab16482..63b6466ac6 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -1,6 +1,7 @@ /obj/machinery/portable_atmospherics/hydroponics name = "hydroponics tray" - icon = 'icons/obj/hydroponics_machines.dmi' + desc = "A tray usually full of fluid for growing plants." + icon = 'icons/obj/hydroponics_machines_vr.dmi' //VOREStation Edit icon_state = "hydrotray3" density = 1 anchored = 1 @@ -125,9 +126,11 @@ "mutagen" = 15 ) -/obj/machinery/portable_atmospherics/hydroponics/AltClick() - if(mechanical && !usr.incapacitated() && Adjacent(usr)) - close_lid(usr) +/obj/machinery/portable_atmospherics/hydroponics/AltClick(var/mob/living/user) + if(!istype(user)) + return + if(mechanical && !user.incapacitated() && Adjacent(user)) + close_lid(user) return 1 return ..() @@ -607,32 +610,31 @@ else if(dead) remove_dead(user) -/obj/machinery/portable_atmospherics/hydroponics/examine() - - ..() +/obj/machinery/portable_atmospherics/hydroponics/examine(mob/user) + . = ..() if(seed) - to_chat(usr, "[seed.display_name] are growing here.") + . += "[seed.display_name] are growing here." else - to_chat(usr, "[src] is empty.") + . += "It is empty." - if(!Adjacent(usr)) - return + if(!Adjacent(user)) + return . - to_chat(usr, "Water: [round(waterlevel,0.1)]/100") - to_chat(usr, "Nutrient: [round(nutrilevel,0.1)]/10") + . += "Water: [round(waterlevel,0.1)]/100" + . += "Nutrient: [round(nutrilevel,0.1)]/10" if(seed) if(weedlevel >= 5) - to_chat(usr, "\The [src] is infested with weeds!") + . += "It is infested with weeds!" if(pestlevel >= 5) - to_chat(usr, "\The [src] is infested with tiny worms!") + . += "It is infested with tiny worms!" if(dead) - to_chat(usr, "The plant is dead.") + . += "It has a dead plant!" else if(health <= (seed.get_trait(TRAIT_ENDURANCE)/ 2)) - to_chat(usr, "The plant looks unhealthy.") + . += "It has an unhealthy plant!" if(frozen == 1) - to_chat(usr, "It is cryogenically frozen.") + . += "It is cryogenically frozen." if(mechanical) var/turf/T = loc var/datum/gas_mixture/environment @@ -655,7 +657,7 @@ var/light_available = T.get_lumcount() * 5 light_string = "a light level of [light_available] lumens" - to_chat(usr, "The tray's sensor suite is reporting [light_string] and a temperature of [environment.temperature]K at [environment.return_pressure()] kPa in the [environment_type] environment") + . += "The tray's sensor suite is reporting [light_string] and a temperature of [environment.temperature]K at [environment.return_pressure()] kPa in the [environment_type] environment." /obj/machinery/portable_atmospherics/hydroponics/verb/close_lid_verb() set name = "Toggle Tray Lid" diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 896deca111..6218783b6e 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -172,13 +172,10 @@ return id_card /obj/item/device/electronic_assembly/examine(mob/user) - . = ..(user, 1) - if(.) + . = ..() + if(Adjacent(user)) for(var/obj/item/integrated_circuit/IC in contents) - IC.external_examine(user) - // for(var/obj/item/integrated_circuit/output/screen/S in contents) - // if(S.stuff_to_display) - // to_chat(user, "There's a little screen labeled '[S.name]', which displays '[S.stuff_to_display]'.") + . += IC.external_examine(user) if(opened) interact(user) diff --git a/code/modules/integrated_electronics/core/assemblies/clothing.dm b/code/modules/integrated_electronics/core/assemblies/clothing.dm index 2b0b75f69f..d00057e411 100644 --- a/code/modules/integrated_electronics/core/assemblies/clothing.dm +++ b/code/modules/integrated_electronics/core/assemblies/clothing.dm @@ -47,9 +47,9 @@ ..() /obj/item/clothing/examine(mob/user) + . = ..() if(IC) - IC.examine(user) - ..() + . += IC.examine(user) /obj/item/clothing/CtrlShiftClick(mob/user) var/turf/T = get_turf(src) diff --git a/code/modules/integrated_electronics/core/assemblies/device.dm b/code/modules/integrated_electronics/core/assemblies/device.dm index bcdd0e9bea..de92fe6638 100644 --- a/code/modules/integrated_electronics/core/assemblies/device.dm +++ b/code/modules/integrated_electronics/core/assemblies/device.dm @@ -46,10 +46,10 @@ return /obj/item/device/assembly/electronic_assembly/examine(mob/user) - .=..(user, 1) + . = ..() if(EA) for(var/obj/item/integrated_circuit/IC in EA.contents) - IC.external_examine(user) + . += IC.external_examine(user) /obj/item/device/assembly/electronic_assembly/verb/toggle() set src in usr diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm index 5c83c1c399..297ab72654 100644 --- a/code/modules/integrated_electronics/core/integrated_circuit.dm +++ b/code/modules/integrated_electronics/core/integrated_circuit.dm @@ -4,28 +4,29 @@ a creative player the means to solve many problems. Circuits are held inside an */ /obj/item/integrated_circuit/examine(mob/user) - interact(user) - external_examine(user) . = ..() + . += external_examine(user) + interact(user) // This should be used when someone is examining while the case is opened. /obj/item/integrated_circuit/proc/internal_examine(mob/user) - to_chat(user, "This board has [inputs.len] input pin\s, [outputs.len] output pin\s and [activators.len] activation pin\s.") + . = list() + . += "This board has [inputs.len] input pin\s, [outputs.len] output pin\s and [activators.len] activation pin\s." for(var/datum/integrated_io/I in inputs) if(I.linked.len) - to_chat(user, "The '[I]' is connected to [I.get_linked_to_desc()].") + . += "The '[I]' is connected to [I.get_linked_to_desc()]." for(var/datum/integrated_io/O in outputs) if(O.linked.len) - to_chat(user, "The '[O]' is connected to [O.get_linked_to_desc()].") + . += "The '[O]' is connected to [O.get_linked_to_desc()]." for(var/datum/integrated_io/activate/A in activators) if(A.linked.len) - to_chat(user, "The '[A]' is connected to [A.get_linked_to_desc()].") - any_examine(user) + . += "The '[A]' is connected to [A.get_linked_to_desc()]." + . += any_examine(user) interact(user) // This should be used when someone is examining from an 'outside' perspective, e.g. reading a screen or LED. /obj/item/integrated_circuit/proc/external_examine(mob/user) - any_examine(user) + return any_examine(user) /obj/item/integrated_circuit/proc/any_examine(mob/user) return diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm index f26bc693bc..631365c5e9 100644 --- a/code/modules/integrated_electronics/passive/power.dm +++ b/code/modules/integrated_electronics/passive/power.dm @@ -160,7 +160,7 @@ var/area/A = get_area(src) if(A) if(A.powered(EQUIP) && assembly.give_power(power_amount)) - A.use_power(power_amount, EQUIP) + A.use_power_oneoff(power_amount, EQUIP) // give_power() handles CELLRATE on its own. // Interacts with the powernet. diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 37504035c0..a084633642 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -527,13 +527,15 @@ listening_objects -= src return ..() -/obj/item/integrated_circuit/input/microphone/hear_talk(mob/living/M, msg, var/verb="says", datum/language/speaking=null) +/obj/item/integrated_circuit/input/microphone/hear_talk(mob/M, list/message_pieces, verb) + var/msg = multilingual_to_message(message_pieces, requires_machine_understands = TRUE) + var/translated = FALSE if(M && msg) - if(speaking) - if(!speaking.machine_understands) - msg = speaking.scramble(msg) - if(!istype(speaking, /datum/language/common)) + for(var/datum/multilingual_say_piece/S in message_pieces) + // S.speaking && here is not redundant, it's preventing `S.speaking = null` from flagging + // as a translation, when it is not. + if(S.speaking && !istype(S.speaking, /datum/language/common)) translated = TRUE set_pin_data(IC_OUTPUT, 1, M.GetVoice()) set_pin_data(IC_OUTPUT, 2, msg) @@ -577,25 +579,41 @@ var/datum/language/newlang = GLOB.all_languages[lang] my_langs |= newlang -/obj/item/integrated_circuit/input/microphone/sign/hear_talk(mob/living/M, msg, var/verb="says", datum/language/speaking=null) +/obj/item/integrated_circuit/input/microphone/sign/hear_talk(mob/M, list/message_pieces, verb) + var/msg = multilingual_to_message(message_pieces) + var/translated = FALSE if(M && msg) - if(speaking) - if(!((speaking.flags & NONVERBAL) || (speaking.flags & SIGNLANG))) - translated = TRUE - msg = speaking.scramble(msg, my_langs) + for(var/datum/multilingual_say_piece/S in message_pieces) + if(S.speaking) + if(!((S.speaking.flags & NONVERBAL) || (S.speaking.flags & SIGNLANG))) + translated = TRUE + msg = stars(msg) + break set_pin_data(IC_OUTPUT, 1, M.GetVoice()) set_pin_data(IC_OUTPUT, 2, msg) push_data() if(!translated) activate_pin(1) - if(translated) + else activate_pin(2) /obj/item/integrated_circuit/input/microphone/sign/hear_signlang(text, verb, datum/language/speaking, mob/M as mob) - hear_talk(M, text, verb, speaking) - return + var/translated = FALSE + if(M && text) + if(speaking) + if(!((speaking.flags & NONVERBAL) || (speaking.flags & SIGNLANG))) + translated = TRUE + text = speaking.scramble(text, my_langs) + set_pin_data(IC_OUTPUT, 1, M.GetVoice()) + set_pin_data(IC_OUTPUT, 2, text) + + push_data() + if(!translated) + activate_pin(1) + else + activate_pin(2) /obj/item/integrated_circuit/input/sensor name = "sensor" diff --git a/code/modules/integrated_electronics/subtypes/memory.dm b/code/modules/integrated_electronics/subtypes/memory.dm index 24dd18c80b..630136e7d0 100644 --- a/code/modules/integrated_electronics/subtypes/memory.dm +++ b/code/modules/integrated_electronics/subtypes/memory.dm @@ -19,7 +19,7 @@ ..() /obj/item/integrated_circuit/memory/examine(mob/user) - ..() + . = ..() var/i for(i = 1, i <= outputs.len, i++) var/datum/integrated_io/O = outputs[i] @@ -30,7 +30,7 @@ data = "[d]" else if(!isnull(O.data)) data = O.data - to_chat(user, "\The [src] has [data] saved to address [i].") + . += "\The [src] has [data] saved to address [i]." /obj/item/integrated_circuit/memory/do_work() for(var/i = 1 to inputs.len) diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 0f991aac23..8745591d7f 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -20,7 +20,7 @@ stuff_to_display = null /obj/item/integrated_circuit/output/screen/any_examine(mob/user) - to_chat(user, "There is a little screen labeled '[name]', which displays [!isnull(stuff_to_display) ? "'[stuff_to_display]'" : "nothing"].") + return "There is a little screen labeled '[name]', which displays [!isnull(stuff_to_display) ? "'[stuff_to_display]'" : "nothing"]." /obj/item/integrated_circuit/output/screen/do_work() var/datum/integrated_io/I = inputs[1] @@ -333,7 +333,7 @@ else text_output += "\an ["\improper[initial_name]"] labeled '[name]'" text_output += " which is currently [get_pin_data(IC_INPUT, 1) ? "lit ¤" : "unlit."]" - to_chat(user,jointext(text_output,null)) + return jointext(text_output,null) /obj/item/integrated_circuit/output/led/red name = "red LED" diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 508c044673..ff549fc29d 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -471,6 +471,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f */ /obj/machinery/libraryscanner name = "scanner" + desc = "A scanner for scanning in books and papers." icon = 'icons/obj/library.dmi' icon_state = "bigscanner" anchored = 1 diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm index 8700a65c6e..39894b1394 100644 --- a/code/modules/lighting/lighting_atom.dm +++ b/code/modules/lighting/lighting_atom.dm @@ -65,20 +65,19 @@ T.reconsider_lights() return ..() -/atom/movable/Move() - var/turf/old_loc = loc +/atom/movable/Moved(atom/old_loc, direction, forced = FALSE) . = ..() - if(loc != old_loc) - for(var/datum/light_source/L in light_sources) - L.source_atom.update_light() + for(var/datum/light_source/L in light_sources) + L.source_atom.update_light() - var/turf/new_loc = loc - if(istype(old_loc) && opacity) - old_loc.reconsider_lights() + var/turf/new_turf = loc + var/turf/old_turf = old_loc + if(istype(old_turf) && opacity) + old_turf.reconsider_lights() - if(istype(new_loc) && opacity) - new_loc.reconsider_lights() + if(istype(new_turf) && opacity) + new_turf.reconsider_lights() /atom/proc/set_opacity(new_opacity) if(new_opacity == opacity) diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm index 5eec02f06e..8b1c9dc5da 100644 --- a/code/modules/materials/material_recipes.dm +++ b/code/modules/materials/material_recipes.dm @@ -153,6 +153,7 @@ 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) recipes += new/datum/stack_recipe("coilgun stock", /obj/item/weapon/coilgun_assembly, 5, pass_stack_color = TRUE) recipes += new/datum/stack_recipe("crude fishing rod", /obj/item/weapon/material/fishing_rod/built, 8, time = 10 SECONDS, pass_stack_color = TRUE) + recipes += new/datum/stack_recipe("wooden standup figure", /obj/structure/barricade/cutout, 5, time = 10 SECONDS, pass_stack_color = TRUE) //VOREStation Add /material/wood/log/generate_recipes() recipes = list() diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm index 67fc816298..01cfd9bc62 100644 --- a/code/modules/materials/material_sheets.dm +++ b/code/modules/materials/material_sheets.dm @@ -386,6 +386,9 @@ strict_color_stacking = TRUE drop_sound = 'sound/items/drop/clothing.ogg' +/obj/item/stack/material/cloth/diyaab + color = "#c6ccf0" + /obj/item/stack/material/resin name = "resin" icon_state = "sheet-resin" diff --git a/code/modules/materials/material_sheets_vr.dm b/code/modules/materials/material_sheets_vr.dm new file mode 100644 index 0000000000..38eba49263 --- /dev/null +++ b/code/modules/materials/material_sheets_vr.dm @@ -0,0 +1,46 @@ +/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 = "plas-tanium 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/glass/plastitanium + name = "plas-tanium 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_PLASTANIUMGLASS + +/obj/fiftyspawner/plastitanium_glass + name = "stack of plastitanium glass" + type_to_spawn = /obj/item/stack/material/glass/plastitanium \ No newline at end of file diff --git a/code/modules/materials/materials_vr.dm b/code/modules/materials/materials_vr.dm index 16e5fa3ae6..ec06e880e9 100644 --- a/code/modules/materials/materials_vr.dm +++ b/code/modules/materials/materials_vr.dm @@ -24,3 +24,59 @@ display_name = "darkglass" icon_base = "darkglass" icon_colour = "#FFFFFF" + +/material/fancyblack + name = "fancyblack" + display_name = "fancyblack" + icon_base = "fancyblack" + icon_colour = "#FFFFFF" + +/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) + +/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) + +/material/glass/plastaniumglass + name = MAT_PLASTANIUMGLASS + 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) \ No newline at end of file diff --git a/code/modules/media/media_machinery.dm b/code/modules/media/media_machinery.dm index 02d4d9698d..728cffd234 100644 --- a/code/modules/media/media_machinery.dm +++ b/code/modules/media/media_machinery.dm @@ -54,13 +54,14 @@ master_area = null /obj/machinery/media/Move() - ..() + disconnect_media_source() + . = ..() if(anchored) update_music() /obj/machinery/media/forceMove(var/atom/destination) disconnect_media_source() - ..() + . = ..() if(anchored) update_music() diff --git a/code/modules/media/mediamanager.dm b/code/modules/media/mediamanager.dm index 56a5ce2336..96b9ab36cb 100644 --- a/code/modules/media/mediamanager.dm +++ b/code/modules/media/mediamanager.dm @@ -40,7 +40,7 @@ if(!istype(M)) return ..() // Optimization, no need to call update_music() if both are null (or same instance, strange as that would be) - if(M.lastarea && M.lastarea.media_source == src.media_source) + if(M.lastarea?.media_source == src.media_source) return ..() if(M.client && M.client.media && !M.client.media.forced) M.update_music() diff --git a/code/modules/metric/department.dm b/code/modules/metric/department.dm index 89a0f78ed9..0705d7ae0c 100644 --- a/code/modules/metric/department.dm +++ b/code/modules/metric/department.dm @@ -70,6 +70,11 @@ if(!department) return for(var/mob/M in player_list) + // Do not count AI's shells + if(isrobot(M)) + var/mob/living/silicon/robot/R = M + if(R.shell) + continue if(department != DEPARTMENT_EVERYONE && guess_department(M) != department) // Ignore people outside the department we're counting. continue if(assess_player_activity(M) < cutoff) diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index 7a7ee7ee95..6f8fc7a8f9 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -122,7 +122,7 @@ new/obj/item/weapon/bikehorn(src) //new/obj/item/weapon/stamp/clown(src) I'd add it, but only clowns can use it new/obj/item/weapon/pen/crayon/rainbow(src) - new/obj/item/toy/waterflower(src) + new/obj/item/weapon/reagent_containers/spray/waterflower(src) if(95) new/obj/item/clothing/under/mime(src) new/obj/item/clothing/shoes/black(src) diff --git a/code/modules/mining/alloys_vr.dm b/code/modules/mining/alloys_vr.dm new file mode 100644 index 0000000000..516beee88f --- /dev/null +++ b/code/modules/mining/alloys_vr.dm @@ -0,0 +1,29 @@ +/datum/alloy/plastitanium + metaltag = MAT_PLASTITANIUM + requires = list( + "rutile" = 1, + "platinum" = 1, + "carbon" = 2, + ) + product_mod = 0.3 + product = /obj/item/stack/material/plastitanium + +/datum/alloy/tiglass + metaltag = MAT_TITANIUMGLASS + requires = list( + "rutile" = 1, + "sand" = 2 + ) + product_mod = 1 + product = /obj/item/stack/material/glass/titanium + +/datum/alloy/plastiglass + metaltag = MAT_PLASTANIUMGLASS + requires = list( + "rutile" = 1, + "sand" = 2, + "platinum" = 1, + "carbon" = 2, + ) + product_mod = 1 + product = /obj/item/stack/material/glass/plastitanium \ No newline at end of file diff --git a/code/modules/mining/drilling/scanner.dm b/code/modules/mining/drilling/scanner.dm index 79ae5f1573..1bd784bdb9 100644 --- a/code/modules/mining/drilling/scanner.dm +++ b/code/modules/mining/drilling/scanner.dm @@ -21,6 +21,7 @@ var/list/metals = list( "surface minerals" = 0, "precious metals" = 0, + "precious gems" = 0, "nuclear fuel" = 0, "exotic matter" = 0, "anomalous matter" = 0 @@ -38,7 +39,8 @@ switch(metal) if("silicates", "carbon", "hematite", "marble") ore_type = "surface minerals" - if("gold", "silver", "diamond", "lead") ore_type = "precious metals" + if("gold", "silver", "lead") ore_type = "precious metals" + if("diamond") ore_type = "precious gems" if("uranium") ore_type = "nuclear fuel" if("phoron", "osmium", "hydrogen") ore_type = "exotic matter" if("verdantium") ore_type = "anomalous matter" diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index fa5fcc7397..c6f7cc4a9f 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -14,7 +14,7 @@ var/global/list/total_extraction_beacons = list() /obj/item/extraction_pack/examine() . = ..() - usr.show_message("It has [uses_left] use\s remaining.", 1) + . += "It has [uses_left] use\s remaining." /obj/item/extraction_pack/attack_self(mob/user) var/list/possible_beacons = list() diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index d515f42925..03b23b15a6 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -177,7 +177,8 @@ "platinum" = 40, "lead" = 40, "mhydrogen" = 40, - "verdantium" = 60) + "verdantium" = 60, + "rutile" = 40) //VOREStation Add /obj/machinery/mineral/processing_unit/New() ..() diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index b420122f3e..e1a3e01690 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -62,7 +62,8 @@ var/list/mining_overlay_cache = list() "carbon" = /obj/item/weapon/ore/coal, "verdantium" = /obj/item/weapon/ore/verdantium, "marble" = /obj/item/weapon/ore/marble, - "lead" = /obj/item/weapon/ore/lead + "lead" = /obj/item/weapon/ore/lead, + "rutile" = /obj/item/weapon/ore/rutile //VOREStation Add ) has_resources = 1 @@ -647,10 +648,10 @@ turf/simulated/mineral/floor/light_corner var/mineral_name if(rare_ore) - mineral_name = pickweight(list("marble" = 5, "uranium" = 10, "platinum" = 10, "hematite" = 20, "carbon" = 20, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 5, "verdantium" = 1)) + mineral_name = pickweight(list("marble" = 5, "uranium" = 10, "platinum" = 10, "hematite" = 20, "carbon" = 20, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 5, "verdantium" = 1, "rutile" = 4)) //VOREStation Edit else - mineral_name = pickweight(list("marble" = 3, "uranium" = 10, "platinum" = 10, "hematite" = 70, "carbon" = 70, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 2, "verdantium" = 1)) + mineral_name = pickweight(list("marble" = 3, "uranium" = 10, "platinum" = 10, "hematite" = 70, "carbon" = 70, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 2, "verdantium" = 1, "rutile" = 4)) //VOREStation Edit if(mineral_name && (mineral_name in ore_data)) mineral = ore_data[mineral_name] diff --git a/code/modules/mining/mineral_effect.dm b/code/modules/mining/mineral_effect.dm index 5f8daed8d1..b5b3d1a192 100644 --- a/code/modules/mining/mineral_effect.dm +++ b/code/modules/mining/mineral_effect.dm @@ -1,6 +1,6 @@ /obj/effect/mineral name = "mineral vein" - icon = 'icons/obj/mining.dmi' + icon = 'icons/obj/mining_vr.dmi' //VOREStation Edit desc = "Shiny." mouse_opacity = 0 density = 0 diff --git a/code/modules/mining/ore_box.dm b/code/modules/mining/ore_box.dm index 0d00e7552f..a7016caf09 100644 --- a/code/modules/mining/ore_box.dm +++ b/code/modules/mining/ore_box.dm @@ -44,26 +44,24 @@ stored_ore[O.name] = 1 /obj/structure/ore_box/examine(mob/user) - to_chat(user, "That's an [src].") - to_chat(user, desc) + . = ..() if(!Adjacent(user)) //Can only check the contents of ore boxes if you can physically reach them. - return + return . add_fingerprint(user) if(!contents.len) - to_chat(user, "It is empty.") - return + . += "It is empty." + return . if(world.time > last_update + 10) update_ore_count() last_update = world.time - to_chat(user, "It holds:") + . += "It holds:" for(var/ore in stored_ore) - to_chat(user, "- [stored_ore[ore]] [ore]") - return + . += "- [stored_ore[ore]] [ore]" /obj/structure/ore_box/verb/empty_box() set name = "Empty Ore Box" diff --git a/code/modules/mining/ore_datum_vr.dm b/code/modules/mining/ore_datum_vr.dm new file mode 100644 index 0000000000..91171367f4 --- /dev/null +++ b/code/modules/mining/ore_datum_vr.dm @@ -0,0 +1,9 @@ +/ore/rutile + name = "rutile" + display_name = "rutile" + smelts_to = "titanium" + alloy = 1 + result_amount = 5 + spread_chance = 10 + ore = /obj/item/weapon/ore/rutile + scan_icon = "mineral_rare" \ No newline at end of file diff --git a/code/modules/mining/ore_redemption_machine/equipment_vendor.dm b/code/modules/mining/ore_redemption_machine/equipment_vendor.dm index 5886b08af0..822dccaf57 100644 --- a/code/modules/mining/ore_redemption_machine/equipment_vendor.dm +++ b/code/modules/mining/ore_redemption_machine/equipment_vendor.dm @@ -30,7 +30,10 @@ // TODO new /datum/data/mining_equipment("Explorer's Webbing", /obj/item/storage/belt/mining, 500), new /datum/data/mining_equipment("Umbrella", /obj/item/weapon/melee/umbrella/random, 200), new /datum/data/mining_equipment("Point Transfer Card", /obj/item/weapon/card/mining_point_card, 500), - new /datum/data/mining_equipment("Survival Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/miner, 500), + new /datum/data/mining_equipment("Trauma Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/trauma, 250), + new /datum/data/mining_equipment("Burn Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/burn, 250), + new /datum/data/mining_equipment("Oxy Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/oxy, 250), + new /datum/data/mining_equipment("Detox Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/detox, 250), new /datum/data/mining_equipment("Mini-Translocator", /obj/item/device/perfect_tele/one_beacon, 1200), // new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/twohanded/required/kinetic_crusher, 750), new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 900), @@ -38,7 +41,7 @@ new /datum/data/mining_equipment("Fulton Pack", /obj/item/extraction_pack, 1200), new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/weapon/pickaxe/silver, 1200), // new /datum/data/mining_equipment("Mining Conscription Kit", /obj/item/storage/backpack/duffelbag/mining_conscript, 1000), - new /datum/data/mining_equipment("Space Cash", /obj/item/weapon/spacecash/c100, 1000), + new /datum/data/mining_equipment("Thalers - 100", /obj/item/weapon/spacecash/c100, 1000), new /datum/data/mining_equipment("Hardsuit - Control Module", /obj/item/weapon/rig/industrial/vendor, 2000), new /datum/data/mining_equipment("Hardsuit - Plasma Cutter", /obj/item/rig_module/device/plasmacutter, 800), new /datum/data/mining_equipment("Hardsuit - Drill", /obj/item/rig_module/device/drill, 5000), @@ -55,6 +58,7 @@ new /datum/data/mining_equipment("Super Resonator", /obj/item/resonator/upgraded, 2500), new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500), new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/device/survivalcapsule/luxury, 3100), + new /datum/data/mining_equipment("Bar Shelter Capsule", /obj/item/device/survivalcapsule/luxurybar, 10000), new /datum/data/mining_equipment("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 125), new /datum/data/mining_equipment("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 175), new /datum/data/mining_equipment("KA Super Chassis", /obj/item/borg/upgrade/modkit/chassis_mod, 250), @@ -79,7 +83,7 @@ new /datum/data/mining_equipment("Fishing Net", /obj/item/weapon/material/fishing_net, 500), new /datum/data/mining_equipment("Titanium Fishing Rod", /obj/item/weapon/material/fishing_rod/modern, 1000), new /datum/data/mining_equipment("Durasteel Fishing Rod", /obj/item/weapon/material/fishing_rod/modern/strong, 7500), - new /datum/data/mining_equipment("Bar Shelter Capsule", /obj/item/device/survivalcapsule/luxurybar, 10000) + new /datum/data/mining_equipment("Survival Equipment - Insulated Poncho", /obj/random/thermalponcho, 750) ) //VOREStation Edit End diff --git a/code/modules/mining/ore_redemption_machine/mine_point_items.dm b/code/modules/mining/ore_redemption_machine/mine_point_items.dm index a6a90a3bd6..0e47e89b2e 100644 --- a/code/modules/mining/ore_redemption_machine/mine_point_items.dm +++ b/code/modules/mining/ore_redemption_machine/mine_point_items.dm @@ -38,9 +38,9 @@ ..() /obj/item/weapon/card/mining_point_card/examine(mob/user) - ..(user) - to_chat(user, "There's [mine_points] excavation points on the card.") - to_chat(user, "There's [survey_points] survey points on the card.") + . = ..() + . += "There's [mine_points] excavation points on the card." + . += "There's [survey_points] survey points on the card." /obj/item/weapon/card/mining_point_card/survey mine_points = 0 diff --git a/code/modules/mining/ore_redemption_machine/survey_vendor.dm b/code/modules/mining/ore_redemption_machine/survey_vendor.dm index a5afad7fab..65b7ccc76d 100644 --- a/code/modules/mining/ore_redemption_machine/survey_vendor.dm +++ b/code/modules/mining/ore_redemption_machine/survey_vendor.dm @@ -10,34 +10,39 @@ icon_vend = "exploration-vend" //VOREStation Add //VOREStation Edit Start - Heavily modified list prize_list = list( - new /datum/data/mining_equipment("1 Marker Beacon", /obj/item/stack/marker_beacon, 1), + new /datum/data/mining_equipment("1 Marker Beacon", /obj/item/stack/marker_beacon, 1), new /datum/data/mining_equipment("10 Marker Beacons", /obj/item/stack/marker_beacon/ten, 10), new /datum/data/mining_equipment("30 Marker Beacons", /obj/item/stack/marker_beacon/thirty, 30), new /datum/data/mining_equipment("GPS Device", /obj/item/device/gps/explorer, 10), - new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 10), + new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 10), new /datum/data/mining_equipment("Absinthe", /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe, 10), new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/smokable/cigarette/cigar/havana, 15), new /datum/data/mining_equipment("Soap", /obj/item/weapon/soap/nanotrasen, 20), new /datum/data/mining_equipment("Laser Pointer", /obj/item/device/laser_pointer, 90), new /datum/data/mining_equipment("Geiger Counter", /obj/item/device/geiger, 75), new /datum/data/mining_equipment("Plush Toy", /obj/random/plushie, 30), - new /datum/data/mining_equipment("Extraction Equipment - Fulton Beacon", /obj/item/fulton_core, 300), - new /datum/data/mining_equipment("Extraction Equipment - Fulton Pack", /obj/item/extraction_pack, 125), + new /datum/data/mining_equipment("Extraction Equipment - Fulton Beacon",/obj/item/fulton_core, 300), + new /datum/data/mining_equipment("Extraction Equipment - Fulton Pack",/obj/item/extraction_pack, 125), new /datum/data/mining_equipment("Umbrella", /obj/item/weapon/melee/umbrella/random, 20), - new /datum/data/mining_equipment("Shelter Capsule", /obj/item/device/survivalcapsule, 50), + new /datum/data/mining_equipment("Shelter Capsule", /obj/item/device/survivalcapsule, 50), new /datum/data/mining_equipment("Point Transfer Card", /obj/item/weapon/card/mining_point_card/survey, 50), - new /datum/data/mining_equipment("Survival Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/miner, 50), - new /datum/data/mining_equipment("Injector (L) - Glucose",/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose, 50), - new /datum/data/mining_equipment("Injector (L) - Panacea",/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity, 50), - new /datum/data/mining_equipment("Injector (L) - Trauma",/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute, 50), + new /datum/data/mining_equipment("Trauma Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/trauma, 25), + new /datum/data/mining_equipment("Burn Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/burn, 25), + new /datum/data/mining_equipment("Oxy Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/oxy, 25), + new /datum/data/mining_equipment("Detox Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/detox, 25), + new /datum/data/mining_equipment("Injector (L) - Glucose", /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose,50), + new /datum/data/mining_equipment("Injector (L) - Panacea", /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity,50), + new /datum/data/mining_equipment("Injector (L) - Trauma", /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute,50), new /datum/data/mining_equipment("Digital Tablet - Standard", /obj/item/modular_computer/tablet/preset/custom_loadout/standard, 50), new /datum/data/mining_equipment("Digital Tablet - Advanced", /obj/item/modular_computer/tablet/preset/custom_loadout/advanced, 100), new /datum/data/mining_equipment("Nanopaste Tube", /obj/item/stack/nanopaste, 100), new /datum/data/mining_equipment("Mini-Translocator", /obj/item/device/perfect_tele/one_beacon, 120), - new /datum/data/mining_equipment("Space Cash", /obj/item/weapon/spacecash/c100, 100), + new /datum/data/mining_equipment("UAV - Recon Skimmer", /obj/item/device/uav, 400), + new /datum/data/mining_equipment("Thalers - 100", /obj/item/weapon/spacecash/c100, 100), new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 250), new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/device/survivalcapsule/luxury, 310), - new /datum/data/mining_equipment("Industrial Equipment - Phoron Bore", /obj/item/weapon/gun/magnetic/matfed, 300), + new /datum/data/mining_equipment("Bar Shelter Capsule", /obj/item/device/survivalcapsule/luxurybar, 1000), + new /datum/data/mining_equipment("Industrial Equipment - Phoron Bore",/obj/item/weapon/gun/magnetic/matfed, 300), new /datum/data/mining_equipment("Survey Tools - Shovel", /obj/item/weapon/shovel, 40), new /datum/data/mining_equipment("Survey Tools - Mechanical Trap", /obj/item/weapon/beartrap, 50), new /datum/data/mining_equipment("Defense Equipment - Smoke Bomb",/obj/item/weapon/grenade/smokebomb, 10), @@ -47,7 +52,7 @@ new /datum/data/mining_equipment("Fishing Net", /obj/item/weapon/material/fishing_net, 50), new /datum/data/mining_equipment("Titanium Fishing Rod", /obj/item/weapon/material/fishing_rod/modern, 100), new /datum/data/mining_equipment("Durasteel Fishing Rod", /obj/item/weapon/material/fishing_rod/modern/strong, 750), - new /datum/data/mining_equipment("Bar Shelter Capsule", /obj/item/device/survivalcapsule/luxurybar, 1000) + new /datum/data/mining_equipment("Survival Equipment - Insulated Poncho", /obj/random/thermalponcho, 75) ) //VOREStation Edit End diff --git a/code/modules/mining/ore_vr.dm b/code/modules/mining/ore_vr.dm new file mode 100644 index 0000000000..fe7d23a579 --- /dev/null +++ b/code/modules/mining/ore_vr.dm @@ -0,0 +1,6 @@ +/obj/item/weapon/ore/rutile + name = "rutile" + icon = 'icons/obj/mining_vr.dmi' + icon_state = "ore_rutile" + origin_tech = list(TECH_MATERIAL = 2) + material = "rutile" \ No newline at end of file diff --git a/code/modules/mining/shelter_atoms.dm b/code/modules/mining/shelter_atoms.dm deleted file mode 100644 index 90403853a9..0000000000 --- a/code/modules/mining/shelter_atoms.dm +++ /dev/null @@ -1,302 +0,0 @@ -/*****************************Survival Pod********************************/ -/area/survivalpod - name = "\improper Emergency Shelter" - icon_state = "away" - dynamic_lighting = TRUE - requires_power = FALSE - has_gravity = TRUE - -//Survival Capsule -/obj/item/device/survivalcapsule - name = "surfluid shelter capsule" - desc = "An emergency shelter programmed into construction nanomachines. It has a license for use printed on the bottom." - icon_state = "houseball" - icon = 'icons/obj/device_alt.dmi' - w_class = ITEMSIZE_TINY - var/template_id = "shelter_alpha" - var/datum/map_template/shelter/template - var/used = FALSE - -/obj/item/device/survivalcapsule/proc/get_template() - if(template) - return - template = SSmapping.shelter_templates[template_id] - if(!template) - throw EXCEPTION("Shelter template ([template_id]) not found!") - qdel(src) - -/obj/item/device/survivalcapsule/Destroy() - template = null // without this, capsules would be one use. per round. - . = ..() - -/obj/item/device/survivalcapsule/examine(mob/user) - . = ..() - get_template() - to_chat(user, "This capsule has the [template.name] stored.") - to_chat(user, template.description) - -/obj/item/device/survivalcapsule/attack_self() - //Can't grab when capsule is New() because templates aren't loaded then - get_template() - if(!used) - loc.visible_message("\The [src] begins to shake. Stand back!") - used = TRUE - - sleep(5 SECONDS) - - var/turf/deploy_location = get_turf(src) - var/status = template.check_deploy(deploy_location) - var/turf/above_location = GetAbove(deploy_location) - - switch(status) - //Not allowed due to /area technical reasons - if(SHELTER_DEPLOY_BAD_AREA) - src.loc.visible_message("\The [src] will not function in this area.") - - //Anchored objects or no space - if(SHELTER_DEPLOY_BAD_TURFS, SHELTER_DEPLOY_ANCHORED_OBJECTS) - var/width = template.width - var/height = template.height - src.loc.visible_message("\The [src] doesn't have room to deploy! You need to clear a [width]x[height] area!") - - if(status != SHELTER_DEPLOY_ALLOWED) - used = FALSE - return - - var/turf/T = deploy_location - var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() - smoke.attach(T) - smoke.set_up(10, 0, T) - smoke.start() - sleep(4 SECONDS) - - playsound(get_turf(src), 'sound/effects/phasein.ogg', 100, 1) - - log_and_message_admins("[key_name_admin(usr)] activated a bluespace capsule at [get_area(T)]!") - if(above_location) - template.add_roof(above_location) - template.annihilate_plants(deploy_location) - template.load(deploy_location, centered = TRUE) - template.update_lighting(deploy_location) - qdel(src) - -/obj/item/device/survivalcapsule/luxury - name = "luxury surfluid shelter capsule" - desc = "An exorbitantly expensive luxury suite programmed into construction nanomachines. There's a license for use printed on the bottom." - template_id = "shelter_beta" - -/obj/item/device/survivalcapsule/luxurybar - name = "luxury surfluid bar capsule" - desc = "A luxury bar in a capsule. Bartender required and not included. There's a license for use printed on the bottom." - template_id = "shelter_gamma" - -/obj/item/device/survivalcapsule/military - name = "military surfluid shelter capsule" - desc = "A prefabricated firebase in a capsule. Contains basic weapons, building materials, and combat suits. There's a license for use printed on the bottom." - template_id = "shelter_delta" - -//Custom Shelter Capsules -/obj/item/device/survivalcapsule/tabiranth - name = "silver-trimmed surfluid shelter capsule" - desc = "An exorbitantly expensive luxury suite programmed into construction nanomachines. This one is a particularly rare and expensive model. There's a license for use printed on the bottom." - template_id = "shelter_phi" - -//Pod objects -//Walls -/turf/simulated/shuttle/wall/voidcraft/survival - name = "survival shelter" - stripe_color = "#efbc3b" - -/turf/simulated/shuttle/wall/voidcraft/survival/hard_corner - hard_corner = 1 - -//Doors -/obj/machinery/door/airlock/voidcraft/survival_pod - name = "survival airlock" - block_air_zones = 1 - -//Door access setter button -/obj/machinery/button/remote/airlock/survival_pod - name = "shelter privacy control" - desc = "You can secure yourself inside the shelter here." - specialfunctions = 4 // 4 is bolts - id = "placeholder_id_do_not_use" //This has to be this way, otherwise it will control ALL doors if left blank. - var/obj/machinery/door/airlock/voidcraft/survival_pod/door - -/obj/machinery/button/remote/airlock/survival_pod/attack_hand(obj/item/weapon/W, mob/user as mob) - if(..()) return 1 //1 is failure on machines (for whatever reason) - if(!door) - var/turf/dT = get_step(src,dir) - door = locate() in dT - if(door) - door.glass = !door.glass - door.opacity = !door.opacity - -//Windows -/obj/structure/window/reinforced/survival_pod - name = "pod window" - icon = 'icons/obj/survival_pod.dmi' - icon_state = "pwindow" - basestate = "pwindow" - -//The windows have diagonal versions, and will never be a full window -/obj/structure/window/reinforced/survival_pod/is_fulltile() - return FALSE - -/obj/structure/window/reinforced/survival_pod/update_icon() - icon_state = basestate - -//Windoor -/obj/machinery/door/window/survival_pod - icon = 'icons/obj/survival_pod.dmi' - icon_state = "windoor" - base_state = "windoor" - -//Table -/obj/structure/table/survival_pod - name = "table" - icon = 'icons/obj/survival_pod.dmi' - icon_state = "table" - can_reinforce = FALSE - can_plate = FALSE - -/obj/structure/table/survival_pod/update_icon() - icon_state = "table" - -/obj/structure/table/survival_pod/New() - material = get_material_by_name(DEFAULT_WALL_MATERIAL) - verbs -= /obj/structure/table/verb/do_flip - verbs -= /obj/structure/table/proc/do_put - ..() - -/obj/structure/table/survival_pod/dismantle(obj/item/weapon/wrench/W, mob/user) - to_chat(user, "You cannot dismantle \the [src].") - return - -//Sleeper -/obj/machinery/sleeper/survival_pod - desc = "A limited functionality sleeper, all it can do is put patients into stasis. It lacks the medication and configuration of the larger units." - icon = 'icons/obj/survival_pod.dmi' - icon_state = "sleeper" - stasis_level = 100 //Just one setting - -/obj/machinery/sleeper/survival_pod/update_icon() - if(occupant) - add_overlay("sleeper_cover") - else - cut_overlays() - -//Computer -/obj/item/device/gps/computer - name = "pod computer" - icon_state = "pod_computer" - icon = 'icons/obj/survival_pod_comp.dmi' - anchored = TRUE - density = TRUE - pixel_y = -32 - -/obj/item/device/gps/computer/attackby(obj/item/I, mob/living/user) - if(I.is_wrench()) - user.visible_message("[user] disassembles [src].", - "You start to disassemble [src]...", "You hear clanking and banging noises.") - if(do_after(user,4 SECONDS,src)) - new /obj/item/device/gps(loc) - qdel(src) - return TRUE - - return FALSE - -/obj/item/device/gps/computer/attack_hand(mob/user) - attack_self(user) - -//Bed -/obj/structure/bed/pod - icon = 'icons/obj/survival_pod.dmi' - icon_state = "bed" - -/obj/structure/bed/pod/New(var/newloc) - ..(newloc,DEFAULT_WALL_MATERIAL,"cotton") - -//Survival Storage Unit -/obj/machinery/smartfridge/survival_pod - name = "survival pod storage" - desc = "A heated storage unit." - icon_state = "donkvendor" - icon_base = "donkvendor" - icon_contents = null - icon = 'icons/obj/survival_pod_vend.dmi' - light_range = 5 - light_power = 1.2 - light_color = "#DDFFD3" - pixel_y = -4 - max_n_of_items = 100 - -/obj/machinery/smartfridge/survival_pod/Initialize() - . = ..() - for(var/obj/item/O in loc) - if(accept_check(O)) - stock(O) - -/obj/machinery/smartfridge/survival_pod/accept_check(obj/item/O) - return isitem(O) - -/obj/machinery/smartfridge/survival_pod/empty - name = "dusty survival pod storage" - desc = "A heated storage unit. This one's seen better days." - -//Fans -/obj/structure/fans - icon = 'icons/obj/survival_pod.dmi' - icon_state = "fans" - name = "environmental regulation system" - desc = "A large machine releasing a constant gust of air." - anchored = TRUE - density = TRUE - can_atmos_pass = ATMOS_PASS_NO - var/buildstacktype = /obj/item/stack/material/steel - var/buildstackamount = 5 - -/obj/structure/fans/proc/deconstruct() - new buildstacktype(loc,buildstackamount) - qdel(src) - -/obj/structure/fans/attackby(obj/item/I, mob/living/user) - if(I.is_wrench()) - user.visible_message("[user] disassembles [src].", - "You start to disassemble [src]...", "You hear clanking and banging noises.") - if(do_after(user,4 SECONDS,src)) - deconstruct() - return TRUE - - return TRUE - -/obj/structure/fans/tiny - name = "tiny fan" - desc = "A tiny fan, releasing a thin gust of air." - plane = TURF_PLANE - layer = ABOVE_TURF_LAYER - density = FALSE - icon_state = "fan_tiny" - buildstackamount = 2 - -//Signs -/obj/structure/sign/mining - name = "nanotrasen mining corps sign" - desc = "A sign of relief for weary miners, and a warning for would-be competitors to Nanotrasen's mining claims." - icon = 'icons/obj/survival_pod.dmi' - icon_state = "ntpod" - -/obj/structure/sign/mining/survival - name = "shelter sign" - desc = "A high visibility sign designating a safe shelter." - icon = 'icons/obj/survival_pod.dmi' - icon_state = "survival" - -//Fluff -/obj/structure/tubes - icon_state = "tubes" - icon = 'icons/obj/survival_pod.dmi' - name = "tubes" - anchored = TRUE - layer = BELOW_MOB_LAYER - density = FALSE diff --git a/code/modules/mining/shelter_atoms_vr.dm b/code/modules/mining/shelter_atoms_vr.dm index 664b0cff51..d3be02cfd7 100644 --- a/code/modules/mining/shelter_atoms_vr.dm +++ b/code/modules/mining/shelter_atoms_vr.dm @@ -1,3 +1,317 @@ +GLOBAL_LIST_EMPTY(unique_deployable) +/*****************************Survival Pod********************************/ +/area/survivalpod + name = "\improper Emergency Shelter" + icon_state = "away" + dynamic_lighting = TRUE + requires_power = FALSE + has_gravity = TRUE + +//Survival Capsule +/obj/item/device/survivalcapsule + name = "surfluid shelter capsule" + desc = "An emergency shelter programmed into construction nanomachines. It has a license for use printed on the bottom." + icon_state = "houseball" + icon = 'icons/obj/device_alt.dmi' + w_class = ITEMSIZE_TINY + var/template_id = "shelter_alpha" + var/datum/map_template/shelter/template + var/used = FALSE + var/is_ship = FALSE + var/unique_id = null + +/obj/item/device/survivalcapsule/proc/get_template() + if(template) + return + template = SSmapping.shelter_templates[template_id] + if(!template) + throw EXCEPTION("Shelter template ([template_id]) not found!") + qdel(src) + +/obj/item/device/survivalcapsule/Destroy() + template = null // without this, capsules would be one use. per round. + . = ..() + +/obj/item/device/survivalcapsule/examine(mob/user) + . = ..() + if(!template) + get_template() + if(template) + . += "This capsule has the [template.name] stored:" + . += template.description + else + . += "This capsule has an unknown template stored." + +/obj/item/device/survivalcapsule/attack_self() + //Can't grab when capsule is New() because templates aren't loaded then + get_template() + if(!used) + loc.visible_message("\The [src] begins to shake. Stand back!") + used = TRUE + + sleep(5 SECONDS) + + var/turf/deploy_location = get_turf(src) + var/status = template.check_deploy(deploy_location, is_ship) + var/turf/above_location = GetAbove(deploy_location) + + switch(status) + //Not allowed due to /area technical reasons + if(SHELTER_DEPLOY_BAD_AREA) + src.loc.visible_message("\The [src] will not function in this area.") + + //Anchored objects or no space + if(SHELTER_DEPLOY_BAD_TURFS, SHELTER_DEPLOY_ANCHORED_OBJECTS) + var/width = template.width + var/height = template.height + src.loc.visible_message("\The [src] doesn't have room to deploy! You need to clear a [width]x[height] area!") + + if(SHELTER_DEPLOY_SHIP_SPACE) + src.loc.visible_message("\The [src] can only be deployed in space.") + + if(status != SHELTER_DEPLOY_ALLOWED) + used = FALSE + return + + if(unique_id) + if(unique_id in GLOB.unique_deployable) + loc.visible_message("There can only be one [src] deployed at a time.") + used = FALSE + return + GLOB.unique_deployable += unique_id + + var/turf/T = deploy_location + var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() + smoke.attach(T) + smoke.set_up(10, 0, T) + smoke.start() + sleep(4 SECONDS) + + playsound(get_turf(src), 'sound/effects/phasein.ogg', 100, 1) + + log_and_message_admins("[key_name_admin(usr)] activated a bluespace capsule at [get_area(T)]!") + if(above_location) + template.add_roof(above_location) + template.annihilate_plants(deploy_location) + template.load(deploy_location, centered = TRUE) + template.update_lighting(deploy_location) + qdel(src) + +/obj/item/device/survivalcapsule/luxury + name = "luxury surfluid shelter capsule" + desc = "An exorbitantly expensive luxury suite programmed into construction nanomachines. There's a license for use printed on the bottom." + template_id = "shelter_beta" + +/obj/item/device/survivalcapsule/luxurybar + name = "luxury surfluid bar capsule" + desc = "A luxury bar in a capsule. Bartender required and not included. There's a license for use printed on the bottom." + template_id = "shelter_gamma" + +/obj/item/device/survivalcapsule/military + name = "military surfluid shelter capsule" + desc = "A prefabricated firebase in a capsule. Contains basic weapons, building materials, and combat suits. There's a license for use printed on the bottom." + template_id = "shelter_delta" + +/obj/item/device/survivalcapsule/escapepod + name = "escape surfluid shelter capsule" + desc = "A prefabricated escape pod in a capsule. Contains a basic escape pod for survival purposes. There's a license for use printed on the bottom." + template_id = "shelter_epsilon" + unique_id = "shelter_5" + is_ship = TRUE + +/obj/item/device/survivalcapsule/dropship + name = "dropship surfluid shelter capsule" + desc = "A military dropship in a capsule. Contains everything an assault squad would need, minus the squad itself. This capsule is significantly larger than most. There's a license for use printed on the bottom." + template_id = "shelter_zeta" + unique_id = "shelter_6" + is_ship = TRUE + w_class = ITEMSIZE_SMALL + +//Custom Shelter Capsules +/obj/item/device/survivalcapsule/tabiranth + name = "silver-trimmed surfluid shelter capsule" + desc = "An exorbitantly expensive luxury suite programmed into construction nanomachines. This one is a particularly rare and expensive model. There's a license for use printed on the bottom." + template_id = "shelter_phi" + unique_id = "shelter_a" + +//Pod objects +//Walls +/turf/simulated/shuttle/wall/voidcraft/survival + name = "survival shelter" + stripe_color = "#efbc3b" + +/turf/simulated/shuttle/wall/voidcraft/survival/hard_corner + hard_corner = 1 + +//Doors +/obj/machinery/door/airlock/voidcraft/survival_pod + name = "survival airlock" + block_air_zones = 1 + +//Door access setter button +/obj/machinery/button/remote/airlock/survival_pod + name = "shelter privacy control" + desc = "You can secure yourself inside the shelter here." + specialfunctions = 4 // 4 is bolts + id = "placeholder_id_do_not_use" //This has to be this way, otherwise it will control ALL doors if left blank. + var/obj/machinery/door/airlock/voidcraft/survival_pod/door + +/obj/machinery/button/remote/airlock/survival_pod/attack_hand(obj/item/weapon/W, mob/user as mob) + if(..()) return 1 //1 is failure on machines (for whatever reason) + if(!door) + var/turf/dT = get_step(src,dir) + door = locate() in dT + if(door) + door.glass = !door.glass + door.opacity = !door.opacity + +//Windows +/obj/structure/window/reinforced/survival_pod + name = "pod window" + icon = 'icons/obj/survival_pod.dmi' + icon_state = "pwindow" + basestate = "pwindow" + +//The windows have diagonal versions, and will never be a full window +/obj/structure/window/reinforced/survival_pod/is_fulltile() + return FALSE + +/obj/structure/window/reinforced/survival_pod/update_icon() + icon_state = basestate + +//Windoor +/obj/machinery/door/window/survival_pod + icon = 'icons/obj/survival_pod.dmi' + icon_state = "windoor" + base_state = "windoor" + +//Table +/obj/structure/table/survival_pod + name = "table" + icon = 'icons/obj/survival_pod.dmi' + icon_state = "table" + can_reinforce = FALSE + can_plate = FALSE + +/obj/structure/table/survival_pod/update_icon() + icon_state = "table" + +/obj/structure/table/survival_pod/New() + material = get_material_by_name(DEFAULT_WALL_MATERIAL) + verbs -= /obj/structure/table/verb/do_flip + verbs -= /obj/structure/table/proc/do_put + ..() + +/obj/structure/table/survival_pod/dismantle(obj/item/weapon/wrench/W, mob/user) + to_chat(user, "You cannot dismantle \the [src].") + return + +//Sleeper +/obj/machinery/sleeper/survival_pod + desc = "A limited functionality sleeper, all it can do is put patients into stasis. It lacks the medication and configuration of the larger units." + icon = 'icons/obj/survival_pod.dmi' + icon_state = "sleeper" + stasis_level = 100 //Just one setting + +/obj/machinery/sleeper/survival_pod/update_icon() + if(occupant) + add_overlay("sleeper_cover") + else + cut_overlays() + +//Computer +/obj/item/device/gps/computer + name = "pod computer" + icon_state = "pod_computer" + icon = 'icons/obj/survival_pod_comp.dmi' + anchored = TRUE + density = TRUE + pixel_y = -32 + +/obj/item/device/gps/computer/attackby(obj/item/I, mob/living/user) + if(I.is_wrench()) + user.visible_message("[user] disassembles [src].", + "You start to disassemble [src]...", "You hear clanking and banging noises.") + if(do_after(user,4 SECONDS,src)) + new /obj/item/device/gps(loc) + qdel(src) + return TRUE + + return FALSE + +/obj/item/device/gps/computer/attack_hand(mob/user) + attack_self(user) + +//Bed +/obj/structure/bed/pod + icon = 'icons/obj/survival_pod.dmi' + icon_state = "bed" + +/obj/structure/bed/pod/New(var/newloc) + ..(newloc,DEFAULT_WALL_MATERIAL,"cotton") + +//Survival Storage Unit +/obj/machinery/smartfridge/survival_pod + name = "survival pod storage" + desc = "A heated storage unit." + icon_state = "donkvendor" + icon_base = "donkvendor" + icon_contents = null + icon = 'icons/obj/survival_pod_vend.dmi' + light_range = 5 + light_power = 1.2 + light_color = "#DDFFD3" + pixel_y = -4 + max_n_of_items = 100 + +/obj/machinery/smartfridge/survival_pod/Initialize() + . = ..() + for(var/obj/item/O in loc) + if(accept_check(O)) + stock(O) + +/obj/machinery/smartfridge/survival_pod/accept_check(obj/item/O) + return isitem(O) + +/obj/machinery/smartfridge/survival_pod/empty + name = "dusty survival pod storage" + desc = "A heated storage unit. This one's seen better days." + +//Fans +/obj/structure/fans + icon = 'icons/obj/survival_pod.dmi' + icon_state = "fans" + name = "environmental regulation system" + desc = "A large machine releasing a constant gust of air." + anchored = TRUE + density = TRUE + can_atmos_pass = ATMOS_PASS_NO + var/buildstacktype = /obj/item/stack/material/steel + var/buildstackamount = 5 + +/obj/structure/fans/proc/deconstruct() + new buildstacktype(loc,buildstackamount) + qdel(src) + +/obj/structure/fans/attackby(obj/item/I, mob/living/user) + if(I.is_wrench()) + user.visible_message("[user] disassembles [src].", + "You start to disassemble [src]...", "You hear clanking and banging noises.") + if(do_after(user,4 SECONDS,src)) + deconstruct() + return TRUE + + return TRUE + +/obj/structure/fans/tiny + name = "tiny fan" + desc = "A tiny fan, releasing a thin gust of air." + plane = TURF_PLANE + layer = ABOVE_TURF_LAYER + density = FALSE + icon_state = "fan_tiny" + buildstackamount = 2 + /obj/structure/fans/hardlight name = "hardlight shield" desc = "Retains air, allows passage." @@ -10,4 +324,26 @@ light_range = 3 light_power = 1 - light_color = "#FFFFFF" \ No newline at end of file + light_color = "#FFFFFF" + +//Signs +/obj/structure/sign/mining + name = "nanotrasen mining corps sign" + desc = "A sign of relief for weary miners, and a warning for would-be competitors to Nanotrasen's mining claims." + icon = 'icons/obj/survival_pod.dmi' + icon_state = "ntpod" + +/obj/structure/sign/mining/survival + name = "shelter sign" + desc = "A high visibility sign designating a safe shelter." + icon = 'icons/obj/survival_pod.dmi' + icon_state = "survival" + +//Fluff +/obj/structure/tubes + icon_state = "tubes" + icon = 'icons/obj/survival_pod.dmi' + name = "tubes" + anchored = TRUE + layer = BELOW_MOB_LAYER + density = FALSE diff --git a/code/modules/mining/shelters.dm b/code/modules/mining/shelters_vr.dm similarity index 79% rename from code/modules/mining/shelters.dm rename to code/modules/mining/shelters_vr.dm index e7f45e3bf6..e9839cafe7 100644 --- a/code/modules/mining/shelters.dm +++ b/code/modules/mining/shelters_vr.dm @@ -11,7 +11,7 @@ banned_areas = typecacheof(/area/shuttle) banned_objects = list() -/datum/map_template/shelter/proc/check_deploy(turf/deploy_location) +/datum/map_template/shelter/proc/check_deploy(turf/deploy_location, var/is_ship) var/affected = get_affected_turfs(deploy_location, centered=TRUE) for(var/turf/T in affected) var/area/A = get_area(T) @@ -21,6 +21,9 @@ var/banned = is_type_in_typecache(T, blacklisted_turfs) if(banned || T.density) return SHELTER_DEPLOY_BAD_TURFS + //Ships can only deploy in space (bacause their base turf is always turf/space) + if(is_ship && !is_type_in_typecache(T, typecacheof(/turf/space))) + return SHELTER_DEPLOY_SHIP_SPACE for(var/obj/O in T) if((O.density && O.anchored) || is_type_in_typecache(O, banned_objects)) @@ -86,6 +89,23 @@ possible." mappath = "maps/submaps/shelters/shelter_4.dmm" +/datum/map_template/shelter/epsilon + name = "Shelter Epsilon" + shelter_id = "shelter_epsilon" + description = "An escape pod, with a mediocre amount of supplies \ + for escaping a dying ship as soon as possible." + mappath = "maps/tether/submaps/om_ships/shelter_5.dmm" + +/datum/map_template/shelter/zeta + name = "Shelter Zeta" + shelter_id = "shelter_zeta" + description = "An small dropship with a massive number of equipment, \ + weapons, and supplies. Contains exterior weapons, point defense, \ + a shield generator, and extremely advanced technology. It is \ + unknown who manufactued a vessel like this, as it is beyond the \ + technology level of most contemporary powers." + mappath = "maps/tether/submaps/om_ships/shelter_6.dmm" + /datum/map_template/shelter/phi name = "Shelter Phi" shelter_id = "shelter_phi" diff --git a/code/modules/mob/_modifiers/changeling.dm b/code/modules/mob/_modifiers/changeling.dm new file mode 100644 index 0000000000..7e83c45461 --- /dev/null +++ b/code/modules/mob/_modifiers/changeling.dm @@ -0,0 +1,93 @@ +/datum/modifier/changeling + name = "changeling" + desc = "Changeling modifier." + + var/required_chems = 1 // Default is to require at least 1 chem unit. This does not consume it. + + var/chem_maintenance = 1 // How many chems are expended per cycle, if we are consuming chems. + + var/max_genetic_damage = 100 + + var/max_stat = 0 + + var/use_chems = FALSE // Do we have an upkeep cost on chems? + + var/exterior_modifier = FALSE // Should we be checking the origin mob for chems? + +/datum/modifier/changeling/check_if_valid() + var/mob/living/L = null + if(exterior_modifier) + if(origin) + L = origin.resolve() + else + expire() + return + + if((!exterior_modifier && !holder.changeling_power(required_chems, 0, max_genetic_damage, max_stat)) || (exterior_modifier && L && !L.changeling_power(required_chems, 0, max_genetic_damage, max_stat))) + expire() + else + ..() + +/datum/modifier/changeling/tick() + ..() + + if(use_chems) + var/mob/living/L = null + + if(exterior_modifier) + L = origin.resolve() + + else + L = holder + + L.mind.changeling.chem_charges = between(0, L.mind.changeling.chem_charges - chem_maintenance, L.mind.changeling.chem_storage) + +/datum/modifier/changeling/thermal_sight + name = "Thermal Adaptation" + desc = "Our eyes are capable of seeing into the infrared spectrum to accurately identify prey through walls." + vision_flags = SEE_MOBS + + on_expired_text = "Your sight returns to what it once was." + stacks = MODIFIER_STACK_EXTEND + +/datum/modifier/changeling/thermal_sight/check_if_valid() + var/mob/living/L = null + + if(exterior_modifier) + L = origin.resolve() + + else + L = holder + + if(!L) + expire() + return + + var/datum/changeling/changeling = L.changeling_power(0,0,100,CONSCIOUS) + + if(!changeling) + expire() + return + + if(!changeling.thermal_sight) + expire() + return + + ..() + +/datum/modifier/changeling/thermal_sight/expire() + var/mob/living/L = null + + if(exterior_modifier) + L = origin.resolve() + + else + L = holder + + if(L) + var/datum/changeling/changeling = L.changeling_power(0,0,100,CONSCIOUS) + + if(changeling) + changeling.thermal_sight = FALSE + + ..() diff --git a/code/modules/mob/_modifiers/modifiers.dm b/code/modules/mob/_modifiers/modifiers.dm index 5950d9e98d..72da563a22 100644 --- a/code/modules/mob/_modifiers/modifiers.dm +++ b/code/modules/mob/_modifiers/modifiers.dm @@ -51,6 +51,8 @@ var/emp_modifier // Added to the EMP strength, which is an inverse scale from 1 to 4, with 1 being the strongest EMP. 5 is a nullification. var/explosion_modifier // Added to the bomb strength, which is an inverse scale from 1 to 3, with 1 being gibstrength. 4 is a nullification. + var/vision_flags // Vision flags to add to the mob. SEE_MOB, SEE_OBJ, etc. + /datum/modifier/New(var/new_holder, var/new_origin) holder = new_holder if(new_origin) diff --git a/code/modules/mob/_modifiers/modifiers_misc.dm b/code/modules/mob/_modifiers/modifiers_misc.dm index 8e6a094910..e7af15895c 100644 --- a/code/modules/mob/_modifiers/modifiers_misc.dm +++ b/code/modules/mob/_modifiers/modifiers_misc.dm @@ -83,7 +83,7 @@ the artifact triggers the rage. /datum/modifier/berserk/on_applied() if(ishuman(holder)) // Most other mobs don't really use nutrition and can't get it back. - holder.nutrition = max(0, holder.nutrition - nutrition_cost) + holder.adjust_nutrition(-nutrition_cost) holder.visible_message("\The [holder] descends into an all consuming rage!") // End all stuns. diff --git a/code/modules/mob/_modifiers/unholy.dm b/code/modules/mob/_modifiers/unholy.dm index 730e57691c..64d7a99d38 100644 --- a/code/modules/mob/_modifiers/unholy.dm +++ b/code/modules/mob/_modifiers/unholy.dm @@ -184,7 +184,7 @@ if(ishuman(holder)) var/mob/living/carbon/human/H = holder var/starting_nutrition = H.nutrition - H.nutrition = max(0, H.nutrition - 10) + H.adjust_nutrition(-10) var/healing_amount = starting_nutrition - H.nutrition if(healing_amount < 0) // If you are eating enough to somehow outpace this, congratulations, you are gluttonous enough to gain a boon. healing_amount *= -2 diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index fb2af26527..e20d3740c9 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -377,10 +377,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp following = null return ..() -/mob/Move() +/mob/Moved(atom/old_loc, direction, forced = FALSE) . = ..() - if(.) - update_following() + update_following() /mob/Life() // to catch teleports etc which directly set loc diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm index dc44a55168..49ab8f2710 100644 --- a/code/modules/mob/dead/observer/say.dm +++ b/code/modules/mob/dead/observer/say.dm @@ -1,63 +1,42 @@ -/mob/observer/dead/say(var/message) +/mob/observer/dead/say(var/message, var/datum/language/speaking = null, var/whispering = 0) message = sanitize(message) - if (!message) - return - - log_ghostsay(message, src) - - if (src.client) - if(message) - client.handle_spam_prevention(MUTE_DEADCHAT) - if(src.client.prefs.muted & MUTE_DEADCHAT) - to_chat(src, "You cannot talk in deadchat (muted).") - return - - . = src.say_dead(message) - - -/mob/observer/dead/emote(var/act, var/type, var/message) - //message = sanitize(message) - already sanitized in verb/me_verb() - if(!message) return - if(act != "me") + log_ghostsay(message, src) + + if (client) + if(message) + client.handle_spam_prevention(MUTE_DEADCHAT) + if(client.prefs.muted & MUTE_DEADCHAT) + to_chat(src, "You cannot talk in deadchat (muted).") + return + + . = say_dead(message) + + +/mob/observer/dead/me_verb(message as text) + if(!message) return log_ghostemote(message, src) - if(src.client) + if(client) if(message) client.handle_spam_prevention(MUTE_DEADCHAT) - if(src.client.prefs.muted & MUTE_DEADCHAT) + if(client.prefs.muted & MUTE_DEADCHAT) to_chat(src, "You cannot emote in deadchat (muted).") return - . = src.emote_dead(message) + . = emote_dead(message) -/* - for (var/mob/M in hearers(null, null)) - if (!M.stat) - if(M.job == "Chaplain") - if (prob (49)) - M.show_message("You hear muffled speech... but nothing is there...", 2) - if(prob(20)) - playsound(src.loc, pick('sound/effects/ghost.ogg','sound/effects/ghost2.ogg'), 10, 1) - else - M.show_message("You hear muffled speech... you can almost make out some words...", 2) -// M.show_message("[stutter(message)]", 2) - if(prob(30)) - playsound(src.loc, pick('sound/effects/ghost.ogg','sound/effects/ghost2.ogg'), 10, 1) - else - if (prob(50)) - return - else if (prob (95)) - M.show_message("You hear muffled speech... but nothing is there...", 2) - if(prob(20)) - playsound(src.loc, pick('sound/effects/ghost.ogg','sound/effects/ghost2.ogg'), 10, 1) - else - M.show_message("You hear muffled speech... you can almost make out some words...", 2) -// M.show_message("[stutter(message)]", 2) - playsound(src.loc, pick('sound/effects/ghost.ogg','sound/effects/ghost2.ogg'), 10, 1) -*/ +/mob/observer/dead/handle_track(message, verb = "says", mob/speaker = null, speaker_name, hard_to_hear) + return "[speaker_name] ([ghost_follow_link(speaker, src)])" + +/mob/observer/dead/handle_speaker_name(mob/speaker = null, vname, hard_to_hear) + var/speaker_name = ..() + //Announce computer and various stuff that broadcasts doesn't use it's real name but AI's can't pretend to be other mobs. + if(speaker && (speaker_name != speaker.real_name) && !isAI(speaker)) + speaker_name = "[speaker.real_name] ([speaker_name])" + return speaker_name \ No newline at end of file diff --git a/code/modules/mob/freelook/ai/update_triggers.dm b/code/modules/mob/freelook/ai/update_triggers.dm index 5c21c6784d..c0b4adf0f6 100644 --- a/code/modules/mob/freelook/ai/update_triggers.dm +++ b/code/modules/mob/freelook/ai/update_triggers.dm @@ -6,30 +6,28 @@ // This might be laggy, comment it out if there are problems. /mob/living/silicon/var/updating = 0 -/mob/living/silicon/robot/Move() - var/oldLoc = src.loc +/mob/living/silicon/robot/Moved(atom/old_loc, direction, forced = FALSE) . = ..() - if(.) - if(provides_camera_vision()) - if(!updating) - updating = 1 - spawn(BORG_CAMERA_BUFFER) - if(oldLoc != src.loc) - cameranet.updatePortableCamera(src.camera) - updating = 0 + if(!provides_camera_vision()) + return + if(!updating) + updating = 1 + spawn(BORG_CAMERA_BUFFER) + if(old_loc != src.loc) + cameranet.updatePortableCamera(src.camera) + updating = 0 -/mob/living/silicon/AI/Move() - var/oldLoc = src.loc +/mob/living/silicon/ai/Moved(atom/old_loc, direction, forced = FALSE) . = ..() - if(.) - if(provides_camera_vision()) - if(!updating) - updating = 1 - spawn(BORG_CAMERA_BUFFER) - if(oldLoc != src.loc) - cameranet.updateVisibility(oldLoc, 0) - cameranet.updateVisibility(loc, 0) - updating = 0 + if(!provides_camera_vision()) + return + if(!updating) + updating = 1 + spawn(BORG_CAMERA_BUFFER) + if(old_loc != src.loc) + cameranet.updateVisibility(old_loc, 0) + cameranet.updateVisibility(loc, 0) + updating = 0 #undef BORG_CAMERA_BUFFER diff --git a/code/modules/mob/freelook/mask/update_triggers.dm b/code/modules/mob/freelook/mask/update_triggers.dm index 1dd520e7f1..8008916220 100644 --- a/code/modules/mob/freelook/mask/update_triggers.dm +++ b/code/modules/mob/freelook/mask/update_triggers.dm @@ -4,18 +4,17 @@ /mob/living/var/updating_cult_vision = 0 -/mob/living/Move() - var/oldLoc = src.loc +/mob/living/Moved(atom/old_loc, direction, forced = FALSE) . = ..() - if(.) - if(cultnet.provides_vision(src)) - if(!updating_cult_vision) - updating_cult_vision = 1 - spawn(CULT_UPDATE_BUFFER) - if(oldLoc != src.loc) - cultnet.updateVisibility(oldLoc, 0) - cultnet.updateVisibility(loc, 0) - updating_cult_vision = 0 + if(!cultnet.provides_vision(src)) + return + if(!updating_cult_vision) + updating_cult_vision = 1 + spawn(CULT_UPDATE_BUFFER) + if(old_loc != src.loc) + cultnet.updateVisibility(old_loc, 0) + cultnet.updateVisibility(loc, 0) + updating_cult_vision = 0 #undef CULT_UPDATE_BUFFER diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index fa2784116a..1a8c2df735 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -1,54 +1,96 @@ // At minimum every mob has a hear_say proc. +/mob/proc/combine_message(var/list/message_pieces, var/verb, var/mob/speaker, always_stars = FALSE, var/radio = FALSE) + var/iteration_count = 0 + var/msg = "" // This is to make sure that the pieces have actually added something + . = "[verb], \"" + for(var/datum/multilingual_say_piece/SP in message_pieces) + iteration_count++ + var/piece = SP.message + if(piece == "") + continue -/mob/proc/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) + if(SP.speaking && SP.speaking.flags & INNATE) // Snowflake for noise lang + if(radio) + return SP.speaking.format_message_radio(piece) + else + return SP.speaking.format_message(piece) + + if(iteration_count == 1) + piece = capitalize(piece) + + if(always_stars) + piece = stars(piece) + else if(!say_understands(speaker, SP.speaking)) + piece = saypiece_scramble(SP) + if(isliving(speaker)) + var/mob/living/S = speaker + if(istype(S.say_list) && length(S.say_list.speak)) + piece = pick(S.say_list.speak) + + if(!SP.speaking) // Catch the most generic case first + piece = "[piece]" + else if(radio) // SP.speaking == TRUE enforced by previous !SP.speaking + piece = SP.speaking.format_message_radio(piece) + else // SP.speaking == TRUE && radio == FALSE + piece = SP.speaking.format_message(piece) + + msg += (piece + " ") + + if(msg == "") + // There is literally no content left in this message, we need to shut this shit down + . = "" // hear_say will suppress it + else + . = trim(. + trim(msg)) + . += "\"" + +/mob/proc/saypiece_scramble(datum/multilingual_say_piece/SP) + if(SP.speaking) + return SP.speaking.scramble(SP.message) + else + return stars(SP.message) + +/mob/proc/hear_say(var/list/message_pieces, var/verb = "says", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) if(!client && !teleop) - return + return FALSE - if(speaker && !speaker.client && istype(src,/mob/observer/dead) && is_preference_enabled(/datum/client_preference/ghost_ears) && !(speaker in view(src))) + if(isobserver(src) && is_preference_enabled(/datum/client_preference/ghost_ears)) + if(speaker && !speaker.client && !(speaker in view(src))) //Does the speaker have a client? It's either random stuff that observers won't care about (Experiment 97B says, 'EHEHEHEHEHEHEHE') //Or someone snoring. So we make it where they won't hear it. - return + return FALSE //make sure the air can transmit speech - hearer's side var/turf/T = get_turf(src) - if ((T) && (!(istype(src, /mob/observer/dead)))) //Ghosts can hear even in vacuum. + if(T && !isobserver(src)) //Ghosts can hear even in vacuum. var/datum/gas_mixture/environment = T.return_air() - var/pressure = (environment)? environment.return_pressure() : 0 + var/pressure = environment ? environment.return_pressure() : 0 if(pressure < SOUND_MINIMUM_PRESSURE && get_dist(speaker, src) > 1) - return + return FALSE - if (pressure < ONE_ATMOSPHERE*0.4) //sound distortion pressure, to help clue people in that the air is thin, even if it isn't a vacuum yet + if(pressure < ONE_ATMOSPHERE * 0.4) //sound distortion pressure, to help clue people in that the air is thin, even if it isn't a vacuum yet italics = 1 sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact - if(sleeping || stat == 1) - hear_sleep(message) - return - - //non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet. - if (language && (language.flags & NONVERBAL)) - if (!speaker || (src.sdisabilities & BLIND || src.blinded) || !(speaker in view(src))) - message = stars(message) - - if(!(language && (language.flags & INNATE))) // skip understanding checks for INNATE languages - if(!say_understands(speaker,language)) - if(language) - message = language.scramble(message, languages) - else - message = stars(message) - var/speaker_name = speaker.name - if(istype(speaker, /mob/living/carbon/human)) + if(ishuman(speaker)) var/mob/living/carbon/human/H = speaker speaker_name = H.GetVoice() + var/message = combine_message(message_pieces, verb, speaker) + if(message == "") + return + + if(sleeping || stat == UNCONSCIOUS) + hear_sleep(multilingual_to_message(message_pieces)) + return FALSE + if(italics) message = "[message]" message = encode_html_emphasis(message) var/track = null - if(istype(src, /mob/observer/dead)) + if(isobserver(src)) if(italics && is_preference_enabled(/datum/client_preference/ghost_radio)) return if(speaker_name != speaker.real_name && speaker.real_name) @@ -58,31 +100,27 @@ message = "[message]" if(is_deaf()) - if(!language || !(language.flags & INNATE)) // INNATE is the flag for audible-emote-language, so we don't want to show an "x talks but you cannot hear them" message if it's set - if(speaker == src) - to_chat(src, "You cannot hear yourself speak!") - else - to_chat(src, "[speaker_name][alt_name] talks but you cannot hear.") + if(speaker == src) + to_chat(src, "You cannot hear yourself speak!") + else + to_chat(src, "[speaker_name][speaker.GetAltName()] makes a noise, possibly speech, but you cannot hear them.") else var/message_to_send = null - if(language) - message_to_send = "[speaker_name][alt_name] [track][language.format_message(message, verb)]" - else - message_to_send = "[speaker_name][alt_name] [track][verb], \"[message]\"" - if(check_mentioned(message) && is_preference_enabled(/datum/client_preference/check_mention)) + message_to_send = "[speaker_name][speaker.GetAltName()] [track][message]" + if(check_mentioned(multilingual_to_message(message_pieces)) && is_preference_enabled(/datum/client_preference/check_mention)) message_to_send = "[message_to_send]" on_hear_say(message_to_send) - if (speech_sound && (get_dist(speaker, src) <= world.view && src.z == speaker.z)) - var/turf/source = speaker? get_turf(speaker) : get_turf(src) - src.playsound_local(source, speech_sound, sound_vol, 1) + if(speech_sound && (get_dist(speaker, src) <= world.view && z == speaker.z)) + var/turf/source = speaker ? get_turf(speaker) : get_turf(src) + playsound_local(source, speech_sound, sound_vol, 1) // Done here instead of on_hear_say() since that is NOT called if the mob is clientless (which includes most AI mobs). -/mob/living/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) +/mob/living/hear_say(var/list/message_pieces, var/verb = "says", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) ..() if(has_AI()) // Won't happen if no ai_holder exists or there's a player inside w/o autopilot active. - ai_holder.on_hear_say(speaker, message) + ai_holder.on_hear_say(speaker, multilingual_to_message(message_pieces)) /mob/proc/on_hear_say(var/message) to_chat(src, message) @@ -124,114 +162,25 @@ return tagged_message -/mob/proc/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0, var/vname ="") - +/mob/proc/hear_radio(var/list/message_pieces, var/verb = "says", var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0, var/vname = "") if(!client) return - if(sleeping || stat==1) //If unconscious or sleeping - hear_sleep(message) + var/message = combine_message(message_pieces, verb, speaker, always_stars = hard_to_hear, radio = TRUE) + if(sleeping || stat == UNCONSCIOUS) //If unconscious or sleeping + hear_sleep(multilingual_to_message(message_pieces)) return - var/track = null - - //non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet. - if (language && (language.flags & NONVERBAL)) - if (!speaker || (src.sdisabilities & BLIND || src.blinded) || !(speaker in view(src))) - message = stars(message) - - if(!(language && (language.flags & INNATE))) // skip understanding checks for INNATE languages - if(!say_understands(speaker,language)) - if(language) - message = language.scramble(message, languages) - else - message = stars(message) - - if(hard_to_hear) - message = stars(message) - - var/speaker_name = speaker.name - - if(vname) - speaker_name = vname - - if(istype(speaker, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = speaker - if(H.voice) - speaker_name = H.voice - - if(hard_to_hear) - speaker_name = "unknown" - - var/changed_voice - - if(istype(src, /mob/living/silicon/ai) && !hard_to_hear) - var/jobname // the mob's "job" - var/mob/living/carbon/human/impersonating //The crew member being impersonated, if any. - - if (ishuman(speaker)) - var/mob/living/carbon/human/H = speaker - - if(H.wear_mask && istype(H.wear_mask,/obj/item/clothing/mask/gas/voice)) - changed_voice = 1 - var/list/impersonated = new() - var/mob/living/carbon/human/I = impersonated[speaker_name] - - if(!I) - for(var/mob/living/carbon/human/M in mob_list) - if(M.real_name == speaker_name) - I = M - impersonated[speaker_name] = I - break - - // If I's display name is currently different from the voice name and using an agent ID then don't impersonate - // as this would allow the AI to track I and realize the mismatch. - if(I && !(I.name != speaker_name && I.wear_id && istype(I.wear_id,/obj/item/weapon/card/id/syndicate))) - impersonating = I - jobname = impersonating.get_assignment() - else - jobname = "Unknown" - else - jobname = H.get_assignment() - - else if (iscarbon(speaker)) // Nonhuman carbon mob - jobname = "No id" - else if (isAI(speaker)) - jobname = "AI" - else if (isrobot(speaker)) - jobname = "Cyborg" - else if (istype(speaker, /mob/living/silicon/pai)) - jobname = "Personal AI" - else - jobname = "Unknown" - - if(changed_voice) - if(impersonating) - track = "[speaker_name] ([jobname])" - else - track = "[speaker_name] ([jobname])" - else - track = "[speaker_name] ([jobname])" - - if(istype(src, /mob/observer/dead)) - if(speaker_name != speaker.real_name && !isAI(speaker)) //Announce computer and various stuff that broadcasts doesn't use it's real name but AI's can't pretend to be other mobs. - speaker_name = "[speaker.real_name] ([speaker_name])" - track = "[speaker_name] ([ghost_follow_link(speaker, src)])" + var/speaker_name = handle_speaker_name(speaker, vname, hard_to_hear) + var/track = handle_track(message, verb, speaker, speaker_name, hard_to_hear) message = encode_html_emphasis(message) - var/formatted - if(language) - formatted = "[language.format_message_radio(message, verb)][part_c]" - else - formatted = "[verb], \"[message]\"[part_c]" - - if((sdisabilities & DEAF) || ear_deaf) if(prob(20)) to_chat(src, "You feel your headset vibrate but can hear nothing from it!") else - on_hear_radio(part_a, speaker_name, track, part_b, formatted) + on_hear_radio(part_a, speaker_name, track, part_b, message) /proc/say_timestamp() return "\[[stationtime2text()]\]" @@ -296,9 +245,40 @@ heardword = copytext(heardword,2) if(copytext(heardword,-1) in punctuation) heardword = copytext(heardword,1,length(heardword)) - heard = "...You hear something about...[heardword]" + heard = "...You hear something about...[heardword]" else - heard = "...You almost hear someone talking..." + heard = "...You almost hear someone talking..." - to_chat(src,heard) + to_chat(src, heard) + +/mob/proc/handle_speaker_name(mob/speaker, vname, hard_to_hear) + var/speaker_name = "unknown" + if(speaker) + speaker_name = speaker.name + + if(ishuman(speaker)) + var/mob/living/carbon/human/H = speaker + if(H.voice) + speaker_name = H.voice + + if(vname) + speaker_name = vname + + if(hard_to_hear) + speaker_name = "unknown" + + return speaker_name + +/mob/proc/handle_track(message, verb = "says", mob/speaker = null, speaker_name, hard_to_hear) + return + +/mob/proc/hear_holopad_talk(list/message_pieces, var/verb = "says", var/mob/speaker = null) + var/message = combine_message(message_pieces, verb, speaker) + + var/name = speaker.name + if(!say_understands(speaker)) + name = speaker.voice_name + + var/rendered = "[name] [message]" + to_chat(src, rendered) \ No newline at end of file diff --git a/code/modules/mob/language/generic.dm b/code/modules/mob/language/generic.dm index 8fa9efcd73..03daea6197 100644 --- a/code/modules/mob/language/generic.dm +++ b/code/modules/mob/language/generic.dm @@ -5,12 +5,6 @@ key = "" flags = RESTRICTED|NONGLOBAL|INNATE|NO_TALK_MSG|NO_STUTTER -/datum/language/noise/format_message(message, verb) - return "[message]" - -/datum/language/noise/format_message_plain(message, verb) - return message - /datum/language/noise/format_message_radio(message, verb) return "[message]" @@ -143,6 +137,17 @@ var/obj/item/organ/external/hand/hands = locate() in speaker //you can't sign without hands return (hands || !iscarbon(speaker)) +/datum/language/sign/scramble(var/input, var/list/known_languages) + return stars(input) + +// This is a little weird because broadcast is traditionally for hivemind languages +// But in practice, it's just a way for a language to override all other languages and bypass hear_say +// which is exactly what sign language does. +/datum/language/sign/broadcast(var/mob/living/speaker, var/message, var/speaker_mask) + log_say("(SIGN) [message]", speaker) + speaker.say_signlang(message, pick(signlang_verb), src) + + // Silly language for those times when you try to talk a languague you normally can't /datum/language/gibberish name = LANGUAGE_GIBBERISH diff --git a/code/modules/mob/language/language.dm b/code/modules/mob/language/language.dm index 215376cd44..14d6fb853d 100644 --- a/code/modules/mob/language/language.dm +++ b/code/modules/mob/language/language.dm @@ -113,13 +113,13 @@ return scrambled_text /datum/language/proc/format_message(message, verb) - return "[verb], \"[capitalize(message)]\"" + return "[message]" /datum/language/proc/format_message_plain(message, verb) - return "[verb], \"[capitalize(message)]\"" + return "[capitalize(message)]" /datum/language/proc/format_message_radio(message, verb) - return "[verb], \"[capitalize(message)]\"" + return "[capitalize(message)]" /datum/language/proc/get_talkinto_msg_range(message) // if you yell, you'll be heard from two tiles over instead of one @@ -129,7 +129,7 @@ log_say("(HIVE) [message]", speaker) if(!speaker_mask) speaker_mask = speaker.name - message = format_message(message, get_spoken_verb(message)) + message = "[get_spoken_verb(message)], \"[format_message(message, get_spoken_verb(message))]\"" for(var/mob/player in player_list) player.hear_broadcast(src, speaker, speaker_mask, message) @@ -233,36 +233,36 @@ return prefix in config.language_prefixes //TBD +/mob/proc/check_lang_data() + . = "" + + for(var/datum/language/L in languages) + if(!(L.flags & NONGLOBAL)) + . += "[L.name] ([get_language_prefix()][L.key])
[L.desc]

" + +/mob/living/check_lang_data() + . = "" + + if(default_language) + . += "Current default language: [default_language] - reset

" + + for(var/datum/language/L in languages) + if(!(L.flags & NONGLOBAL)) + if(L == default_language) + . += "[L.name] ([get_language_prefix()][L.key]) - default - reset
[L.desc]

" + else if (can_speak(L)) + . += "[L.name] ([get_language_prefix()][L.key]) - set default
[L.desc]

" + else + . += "[L.name] ([get_language_prefix()][L.key]) - cannot speak!
[L.desc]

" + /mob/verb/check_languages() set name = "Check Known Languages" set category = "IC" set src = usr - var/dat = "Known Languages

" - - for(var/datum/language/L in languages) - if(!(L.flags & NONGLOBAL)) - dat += "[L.name] ([get_language_prefix()][L.key])
[L.desc]

" - - src << browse(dat, "window=checklanguage") - return - -/mob/living/check_languages() - var/dat = "Known Languages

" - - if(default_language) - dat += "Current default language: [default_language] - reset

" - - for(var/datum/language/L in languages) - if(!(L.flags & NONGLOBAL)) - if(L == default_language) - dat += "[L.name] ([get_language_prefix()][L.key]) - default - reset
[L.desc]

" - else if (can_speak(L)) - dat += "[L.name] ([get_language_prefix()][L.key]) - set default
[L.desc]

" - else - dat += "[L.name] ([get_language_prefix()][L.key]) - cannot speak!
[L.desc]

" - - src << browse(dat, "window=checklanguage") + var/datum/browser/popup = new(src, "checklanguage", "Known Languages", 420, 470) + popup.set_content(check_lang_data()) + popup.open() /mob/living/Topic(href, href_list) if(href_list["default_lang"]) diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm index 096fae5fda..bf0bf3dd3a 100644 --- a/code/modules/mob/language/station.dm +++ b/code/modules/mob/language/station.dm @@ -92,7 +92,11 @@ signlang_verb = list("gestures with their hands", "gestures with their ears and tail", "gestures with their ears, tail and hands") colour = "tajaran" key = "l" - flags = WHITELISTED | SIGNLANG | NO_STUTTER | NONVERBAL + flags = WHITELISTED | SIGNLANG | NO_STUTTER //nonverbal define was not needed here, and i need to use it ~Layne + +/datum/language/tajsign/broadcast(var/mob/living/speaker, var/message, var/speaker_mask) + log_say("(SIGN) [message]", speaker) + speaker.say_signlang(message, pick(signlang_verb), src) /datum/language/tajsign/can_speak_special(var/mob/speaker) // TODO: If ever we make external organs assist languages, convert this over to the new format var/list/allowed_species = list(SPECIES_TAJ, SPECIES_TESHARI) // Need a tail and ears and such to use this. @@ -215,6 +219,19 @@ space_chance = 20 syllables = list("z", "dz", "i", "iv", "ti", "az", "hix", "xo", "av", "xo", "x", "za", "at", "vi") +/datum/language/promethean + name = LANGUAGE_PROMETHEAN + desc = "A complex language composed of guttural noises and bioluminescent signals" + signlang_verb = list("flickers","flashes","rapidly flashes a light","quickly flickers a light") + speech_verb = "gurgles" + ask_verb = "gurgles" + exclaim_verb = "gurgles" + colour = "promethean" + key = "t" + flags = WHITELISTED | NONVERBAL + space_chance = 20 + syllables = list("gur","gul","gug","gel","ger","geg","gir","gil","gig","gor","gol","gog","ug","ul","ur","uu","el","eg","er","oe","ig","il","ir","oi","og","ol","or","oo") + //Syllable Lists /* diff --git a/code/modules/mob/language/station_vr.dm b/code/modules/mob/language/station_vr.dm index 50629a98e3..feab8979a2 100644 --- a/code/modules/mob/language/station_vr.dm +++ b/code/modules/mob/language/station_vr.dm @@ -22,7 +22,7 @@ desc = "The dominant language of the Sergal homeworld, Vilous. It consists of aggressive low-pitched hissing and throaty growling." speech_verb = "snarls" colour = "sergal" - key = "t" + key = "T" syllables = list ("grr", "gah", "woof", "arf", "arra", "rah", "wor", "sarg") /datum/language/vulpkanin diff --git a/code/modules/mob/living/autohiss.dm b/code/modules/mob/living/autohiss.dm index ad7ee8ec7a..7564299b1b 100644 --- a/code/modules/mob/living/autohiss.dm +++ b/code/modules/mob/living/autohiss.dm @@ -6,7 +6,7 @@ #define AUTOHISS_NUM 3 -/mob/living/proc/handle_autohiss(message, datum/language/L) +/mob/proc/handle_autohiss(message, datum/language/L) return message // no autohiss at this level /mob/living/carbon/human/handle_autohiss(message, datum/language/L) diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index 5e9f496646..4ea28b3eea 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -144,12 +144,8 @@ /mob/living/bot/attack_ai(var/mob/user) return attack_hand(user) -/mob/living/bot/say(var/message) - var/verb = "beeps" - - message = sanitize(message) - - ..(message, null, verb) +/mob/living/bot/say_quote(var/message, var/datum/language/speaking = null) + return "beeps" /mob/living/bot/speech_bubble_appearance() return "machine" diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 42f7dece0c..149eba55eb 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -1,5 +1,4 @@ /mob/living/carbon/alien - name = "alien" desc = "What IS that?" icon = 'icons/mob/alien.dmi' @@ -52,4 +51,23 @@ return //Consider adding cuffs and hats to this, for the sake of fun. /mob/living/carbon/alien/cannot_use_vents() - return \ No newline at end of file + return + +/mob/living/carbon/alien/get_default_language() + if(default_language) + return default_language + return GLOB.all_languages["Xenomorph"] + +/mob/living/carbon/alien/say_quote(var/message, var/datum/language/speaking = null) + var/verb = "hisses" + var/ending = copytext(message, length(message)) + + if(speaking && (speaking.name != "Galactic Common")) //this is so adminbooze xenos speaking common have their custom verbs, + verb = speaking.get_spoken_verb(ending) //and use normal verbs for their own languages and non-common languages + else + if(ending == "!") + verb = "roars" + else if(ending == "?") + verb = "hisses curiously" + return verb + diff --git a/code/modules/mob/living/carbon/alien/diona/life.dm b/code/modules/mob/living/carbon/alien/diona/life.dm index aa178f93c1..fe97e96674 100644 --- a/code/modules/mob/living/carbon/alien/diona/life.dm +++ b/code/modules/mob/living/carbon/alien/diona/life.dm @@ -6,16 +6,14 @@ var/turf/T = loc light_amount = T.get_lumcount() * 5 - nutrition += light_amount + adjust_nutrition(light_amount) - if(nutrition > 500) - nutrition = 500 if(light_amount > 2) //if there's enough light, heal adjustBruteLoss(-1) adjustFireLoss(-1) adjustToxLoss(-1) adjustOxyLoss(-1) - - + + if(!client) - handle_npc(src) + handle_npc(src) diff --git a/code/modules/mob/living/carbon/alien/diona/say_understands.dm b/code/modules/mob/living/carbon/alien/diona/say_understands.dm index 3f68a44cff..b42109059e 100644 --- a/code/modules/mob/living/carbon/alien/diona/say_understands.dm +++ b/code/modules/mob/living/carbon/alien/diona/say_understands.dm @@ -1,6 +1,5 @@ -/mob/living/carbon/alien/diona/say_understands(var/mob/other,var/datum/language/speaking = null) - - if (istype(other, /mob/living/carbon/human) && !speaking) +/mob/living/carbon/alien/diona/say_understands(var/mob/other, var/datum/language/speaking = null) + if(ishuman(other) && !speaking) if(languages.len >= 2) // They have sucked down some blood. - return 1 + return TRUE return ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/emote.dm b/code/modules/mob/living/carbon/alien/emote.dm index 8b4744bdc3..6c9cca88fb 100644 --- a/code/modules/mob/living/carbon/alien/emote.dm +++ b/code/modules/mob/living/carbon/alien/emote.dm @@ -1,131 +1,107 @@ -/mob/living/carbon/alien/emote(var/act,var/m_type=1,var/message = null) - +/mob/living/carbon/alien/emote(var/act, var/m_type=1, var/message = null) var/param = null - if (findtext(act, "-", 1, 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) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) var/muzzled = is_muzzled() switch(act) - if ("me") - if(silent) - return - if (src.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 ("custom") - return custom_emote(m_type, message) if("sign") - if (!src.restrained()) - message = text("The alien signs[].", (text2num(param) ? text(" the number []", text2num(param)) : null)) - m_type = 1 - if ("burp") - if (!muzzled) + 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 = "The [src.name] lets out a waning guttural screech, green blood bubbling from its maw." + message = "[src] lets out a waning guttural screech, green blood bubbling from its maw." m_type = 2 if("scratch") - if (!src.restrained()) - message = "The [src.name] scratches." + if(!restrained()) + message = "[src] scratches." m_type = 1 if("whimper") - if (!muzzled) - message = "The [src.name] whimpers." + if(!muzzled) + message = "[src] whimpers." m_type = 2 if("tail") - message = "The [src.name] waves its tail." + message = "[src] waves its tail." m_type = 1 if("gasp") - message = "The [src.name] gasps." + message = "[src] gasps." m_type = 2 if("shiver") - message = "The [src.name] shivers." + message = "[src] shivers." m_type = 2 if("drool") - message = "The [src.name] drools." + message = "[src] drools." m_type = 1 if("scretch") - if (!muzzled) - message = "The [src.name] scretches." + if(!muzzled) + message = "[src] scretches." m_type = 2 if("choke") - message = "The [src.name] chokes." + message = "[src] chokes." m_type = 2 if("moan") - message = "The [src.name] moans!" + message = "[src] moans!" m_type = 2 if("nod") - message = "The [src.name] nods its head." + message = "[src] nods its head." m_type = 1 // if("sit") -// message = "The [src.name] sits down." //Larvan can't sit down, /N +// message = "[src] sits down." //Larvan can't sit down, /N // m_type = 1 if("sway") - message = "The [src.name] sways around dizzily." + message = "[src] sways around dizzily." m_type = 1 if("sulk") - message = "The [src.name] sulks down sadly." + message = "[src] sulks down sadly." m_type = 1 if("twitch") - message = "The [src.name] twitches." + message = "[src] twitches." m_type = 1 if("twitch_v") - message = "The [src.name] twitches violently." + message = "[src] twitches violently." m_type = 1 if("dance") - if (!src.restrained()) - message = "The [src.name] dances around happily." + if(!restrained()) + message = "[src] dances around happily." m_type = 1 if("roll") - if (!src.restrained()) - message = "The [src.name] rolls." + if(!restrained()) + message = "[src] rolls." m_type = 1 if("shake") - message = "The [src.name] shakes its head." + message = "[src] shakes its head." m_type = 1 if("gnarl") - if (!muzzled) - message = "The [src.name] gnarls and shows its teeth.." + if(!muzzled) + message = "[src] gnarls and shows its teeth.." m_type = 2 if("jump") - message = "The [src.name] jumps!" + message = "[src] jumps!" m_type = 1 if("hiss_") - message = "The [src.name] hisses softly." + message = "[src] hisses softly." m_type = 1 if("collapse") Paralyse(2) - message = text("[] collapses!", src) + message = "[src] collapses!" m_type = 2 if("chirp") - message = "The [src.name] chirps!" - playsound(src.loc, 'sound/misc/nymphchirp.ogg', 50, 0) + message = "[src] chirps!" + playsound(loc, '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") - else - to_chat(src, "Invalid Emote: [act]") - if ((message && src.stat == 0)) - log_emote(message, src) - if (m_type & 1) - for(var/mob/O in viewers(src, null)) - O.show_message(message, m_type) - //Foreach goto(703) - else - for(var/mob/O in hearers(src, null)) - O.show_message(message, m_type) - //Foreach goto(746) - return \ No newline at end of file + 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) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm index 3b57c6a5f7..0bd0ac89b1 100644 --- a/code/modules/mob/living/carbon/alien/life.dm +++ b/code/modules/mob/living/carbon/alien/life.dm @@ -28,7 +28,7 @@ var/rads = radiation/25 radiation -= rads - nutrition += rads + adjust_nutrition(rads) heal_overall_damage(rads,rads) adjustOxyLoss(-(rads)) adjustToxLoss(-(rads)) diff --git a/code/modules/mob/living/carbon/alien/say.dm b/code/modules/mob/living/carbon/alien/say.dm deleted file mode 100644 index 8621339927..0000000000 --- a/code/modules/mob/living/carbon/alien/say.dm +++ /dev/null @@ -1,25 +0,0 @@ -/mob/living/carbon/alien/say(var/message) - var/verb = "says" - var/message_range = world.view - - if(client) - if(client.prefs.muted & MUTE_IC) - to_chat(src, "You cannot speak in IC (Muted).") - return - - message = sanitize(message) - - if(stat == 2) - return say_dead(message) - - if(copytext(message,1,2) == "*") - return emote(copytext(message,2)) - - var/datum/language/speaking = parse_language(message) - - message = trim(message) - - if(!message || stat) - return - - ..(message, speaking, verb, null, null, message_range, null) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 1d373679ee..b6c9a5e938 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -196,24 +196,20 @@ return //Doesn't do anything right now because none of the things that can be done to a regular MMI make any sense for these /obj/item/device/mmi/digital/examine(mob/user) - if(!..(user)) - return - - var/msg = "*---------*\nThis is [bicon(src)] \a [src]!\n[desc]\n" - msg += "" + . = ..() if(src.brainmob && src.brainmob.key) switch(src.brainmob.stat) if(CONSCIOUS) - if(!src.brainmob.client) msg += "It appears to be in stand-by mode.\n" //afk - if(UNCONSCIOUS) msg += "It doesn't seem to be responsive.\n" - if(DEAD) msg += "It appears to be completely inactive.\n" + if(!src.brainmob.client) + . += "It appears to be in stand-by mode." //afk + if(UNCONSCIOUS) + . += "It doesn't seem to be responsive." + if(DEAD) + . += "It appears to be completely inactive." else - msg += "It appears to be completely inactive.\n" - msg += "*---------*" - to_chat(user,msg) - return - + . += "It appears to be completely inactive." + /obj/item/device/mmi/digital/emp_act(severity) if(!src.brainmob) return diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index a75deb25d0..a8a0b8fb01 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -18,36 +18,19 @@ /mob/living/carbon/brain/Destroy() if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting. - if(stat!=DEAD) //If not dead. + if(stat != DEAD) //If not dead. death(1) //Brains can die again. AND THEY SHOULD AHA HA HA HA HA HA ghostize() //Ghostize checks for key so nothing else is necessary. return ..() /mob/living/carbon/brain/say_understands(var/other)//Goddamn is this hackish, but this say code is so odd - if (istype(other, /mob/living/silicon/ai)) - if(!(container && istype(container, /obj/item/device/mmi))) - return 0 - else - return 1 - if (istype(other, /mob/living/silicon/decoy)) - if(!(container && istype(container, /obj/item/device/mmi))) - return 0 - else - return 1 - if (istype(other, /mob/living/silicon/pai)) - if(!(container && istype(container, /obj/item/device/mmi))) - return 0 - else - return 1 - if (istype(other, /mob/living/silicon/robot)) - if(!(container && istype(container, /obj/item/device/mmi))) - return 0 - else - return 1 - if (istype(other, /mob/living/carbon/human)) - return 1 - if (istype(other, /mob/living/simple_mob/slime)) - return 1 + if(istype(container, /obj/item/device/mmi)) + if(issilicon(other)) + return TRUE + if(ishuman(other)) + return TRUE + if(isslime(other)) + return TRUE return ..() /mob/living/carbon/brain/update_canmove() diff --git a/code/modules/mob/living/carbon/brain/emote.dm b/code/modules/mob/living/carbon/brain/emote.dm index bc4623647b..05706fe299 100644 --- a/code/modules/mob/living/carbon/brain/emote.dm +++ b/code/modules/mob/living/carbon/brain/emote.dm @@ -2,79 +2,46 @@ if(!(container && istype(container, /obj/item/device/mmi)))//No MMI, no emotes return - if (findtext(act, "-", 1, null)) + if(findtext(act, "-", 1, null)) var/t1 = findtext(act, "-", 1, null) act = copytext(act, 1, t1) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) - - if(src.stat == DEAD) + if(stat == DEAD) return switch(act) - if ("me") - if(silent) - return - if (src.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 ("custom") - return custom_emote(m_type, message) - if ("alarm") + if("alarm") to_chat(src, "You sound an alarm.") message = "[src] sounds an alarm." m_type = 2 - if ("alert") + if("alert") to_chat(src, "You let out a distressed noise.") message = "[src] lets out a distressed noise." m_type = 2 - if ("notice") + if("notice") to_chat(src, "You play a loud tone.") message = "[src] plays a loud tone." m_type = 2 - if ("flash") + if("flash") message = "The lights on [src] flash quickly." m_type = 1 - if ("blink") + if("blink") message = "[src] blinks." m_type = 1 - if ("whistle") + if("whistle") to_chat(src, "You whistle.") message = "[src] whistles." m_type = 2 - if ("beep") + if("beep") to_chat(src, "You beep.") message = "[src] beeps." m_type = 2 - if ("boop") + 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") - else - to_chat(src, "Unusable emote '[act]'. Say *help for a list.") + if("help") + to_chat(src, "alarm, alert, notice, flash, blink, whistle, beep, boop") - if (message) - log_emote(message, src) - - for(var/mob/M in dead_mob_list) - if (!M.client || istype(M, /mob/new_player)) - continue //skip monkeys, leavers, and new_players - if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_sight) && !(M in viewers(src,null))) - M.show_message(message) - - - if (m_type & 1) - for (var/mob/O in viewers(src, null)) - O.show_message(message, m_type) - else if (m_type & 2) - for (var/mob/O in hearers(src.loc, null)) - O.show_message(message, m_type) \ No newline at end of file + if(!stat) + ..(act, m_type, message) + \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 815ffdd374..1eb57add13 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -85,25 +85,6 @@ M.show_message("The positronic brain buzzes and beeps, and the golden lights fade away. Perhaps you could try again?") playsound(src, 'sound/misc/buzzbeep.ogg', 50, 1) -/obj/item/device/mmi/digital/posibrain/examine(mob/user) - if(!..(user)) - return - - var/msg = "*---------*\nThis is [bicon(src)] \a [src]!\n[desc]\n" - msg += "" - - if(src.brainmob && src.brainmob.key) - switch(src.brainmob.stat) - if(CONSCIOUS) - if(!src.brainmob.client) msg += "It appears to be in stand-by mode.\n" //afk - if(UNCONSCIOUS) msg += "It doesn't seem to be responsive.\n" - if(DEAD) msg += "It appears to be completely inactive.\n" - else - msg += "It appears to be completely inactive.\n" - msg += "*---------*" - to_chat(user,msg) - return - /obj/item/device/mmi/digital/posibrain/emp_act(severity) if(!src.brainmob) return diff --git a/code/modules/mob/living/carbon/brain/say.dm b/code/modules/mob/living/carbon/brain/say.dm index 0493b2d92d..e03067db1a 100644 --- a/code/modules/mob/living/carbon/brain/say.dm +++ b/code/modules/mob/living/carbon/brain/say.dm @@ -1,6 +1,6 @@ //TODO: Convert this over for languages. -/mob/living/carbon/brain/say(var/message) - if (silent) +/mob/living/carbon/brain/say(var/message, var/datum/language/speaking = null, var/whispering = 0) + if(silent) return message = sanitize(message) @@ -8,39 +8,22 @@ if(!(container && container.can_speak)) return //Certain objects can speak, like MMIs. Most others cannot. -Q else - var/datum/language/speaking = parse_language(message) - if(speaking) - message = copytext(message, 2+length(speaking.key)) - var/verb = "says" - var/ending = copytext(message, length(message)) - if (speaking) - verb = speaking.get_spoken_verb(ending) - else - if(ending=="!") - verb=pick("exclaims","shouts","yells") - if(ending=="?") - verb="asks" - - if(prob(emp_damage*4)) + if(prob(emp_damage * 4)) if(prob(10))//10% chance to drop the message entirely return else message = Gibberish(message, (emp_damage*6))//scrambles the message, gets worse when emp_damage is higher - if(speaking && speaking.flags & HIVEMIND) - speaking.broadcast(src,trim(message)) - return + ..() - ..(trim(message), speaking, verb) - -/mob/living/carbon/brain/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) +/mob/living/carbon/brain/handle_message_mode(message_mode, message, verb, speaking, used_radios) ..() if(message_mode) var/obj/item/device/mmi/R = container - if (R.radio && R.radio.radio_enabled) + if(R.radio && R.radio.radio_enabled) if(message_mode == "general") message_mode = null - return R.radio.talk_into(src,message,message_mode,verb,speaking) + return R.radio.talk_into(src, message, message_mode, verb, speaking) else to_chat(src, "Your radio is disabled.") return 0 diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index ddfca59db9..c11cf6bac0 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -33,20 +33,22 @@ touching.clear_reagents() ..() -/mob/living/carbon/Move(NewLoc, direct) +/* VOREStation Edit - Duplicated in our code +/mob/living/carbon/Moved(atom/old_loc, direction, forced = FALSE) . = ..() if(.) if(src.nutrition && src.stat != 2) - src.nutrition -= DEFAULT_HUNGER_FACTOR/10 + adjust_nutrition(-DEFAULT_HUNGER_FACTOR / 10) if(src.m_intent == "run") - src.nutrition -= DEFAULT_HUNGER_FACTOR/10 + adjust_nutrition(-DEFAULT_HUNGER_FACTOR / 10) + if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360) src.bodytemperature += 2 - // Moving around increases germ_level faster - if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8)) - germ_level++ -/* VOREStation Removal - Needless duplicate feature + // Moving around increases germ_level faster + if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8)) + germ_level++ + /mob/living/carbon/relaymove(var/mob/living/user, direction) if((user in src.stomach_contents) && istype(user)) if(user.last_special <= world.time) @@ -109,7 +111,7 @@ src.apply_damage(0.4 * shock_damage, BURN, BP_TORSO, used_weapon="Electrocution") //shock the torso more src.apply_damage(0.2 * shock_damage, BURN, null, used_weapon="Electrocution") //shock a random part! src.apply_damage(0.2 * shock_damage, BURN, null, used_weapon="Electrocution") //shock a random part! - + playsound(loc, "sparks", 50, 1, -1) if (shock_damage > 15) src.visible_message( diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 706ace19ef..26e445b759 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -3,29 +3,27 @@ var/datum/gender/T = gender_datums[get_visible_gender()] - if (findtext(act, "-", 1, 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) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) - var/muzzled = is_muzzled() //var/m_type = 1 - for(var/obj/item/organ/O in src.organs) - for (var/obj/item/weapon/implant/I in O) - if (I.implanted) + 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(src.stat == 2.0 && (act != "deathgasp")) + 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 (!src.restrained()) + 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 @@ -38,8 +36,8 @@ var/M = null if(param) - for (var/mob/A in view(null, null)) - if (param == A.name) + for(var/mob/A in view(null, null)) + if(param == A.name) M = A break if(!M) @@ -75,11 +73,11 @@ else use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg' - if (param) + if(param) message = "[display_msg] at [param]." else message = "[display_msg]." - playsound(src.loc, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add + playsound(loc, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add m_type = 1 //Promethean-only emotes @@ -89,7 +87,7 @@ to_chat(src, "You are not a slime thing!") return */ //VOREStation Removal End - playsound(src.loc, 'sound/effects/slime_squish.ogg', 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add //Credit to DrMinky (freesound.org) for the sound. + playsound(loc, '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 @@ -99,150 +97,150 @@ to_chat(src, "You are not a Skrell!") return - playsound(src.loc, '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. + playsound(loc, '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") + if("blink") message = "blinks." m_type = 1 - if ("blink_r") + if("blink_r") message = "blinks rapidly." m_type = 1 - if ("bow") - if (!src.buckled) + if("bow") + if(!buckled) var/M = null - if (param) - for (var/mob/A in view(null, null)) - if (param == A.name) + if(param) + for(var/mob/A in view(null, null)) + if(param == A.name) M = A break - if (!M) + if(!M) param = null - if (param) + if(param) message = "bows to [param]." else message = "bows." m_type = 1 - if ("custom") + if("custom") var/input = sanitize(input("Choose an emote to display.") as text|null) - if (!input) + if(!input) return var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable") - if (input2 == "Visible") + if(input2 == "Visible") m_type = 1 - else if (input2 == "Hearable") - if (src.miming) + 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, message) + return custom_emote(m_type, input) - if ("me") + 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 (src.client) - if (client.prefs.muted & MUTE_IC) + if(client) + if(client.prefs.muted & MUTE_IC) to_chat(src, "You cannot send IC messages (muted).") return - if (stat) + if(stat) return if(!(message)) return return custom_emote(m_type, message) - if ("salute") - if (!src.buckled) + if("salute") + if(!buckled) var/M = null - if (param) - for (var/mob/A in view(null, null)) - if (param == A.name) + if(param) + for(var/mob/A in view(null, null)) + if(param == A.name) M = A break - if (!M) + if(!M) param = null - if (param) + if(param) message = "salutes to [param]." else message = "salutes." m_type = 1 - if ("choke") + if("choke") if(miming) message = "clutches [T.his] throat desperately!" m_type = 1 else - if (!muzzled) + if(!muzzled) message = "chokes!" m_type = 2 else message = "makes a strong noise." m_type = 2 - if ("clap") - if (!src.restrained()) + if("clap") + if(!restrained()) message = "claps." - playsound(src.loc, 'sound/misc/clapping.ogg') + playsound(loc, 'sound/misc/clapping.ogg') m_type = 2 if(miming) m_type = 1 - if ("flap") - if (!src.restrained()) + if("flap") + if(!restrained()) message = "flaps [T.his] wings." m_type = 2 if(miming) m_type = 1 - if ("aflap") - if (!src.restrained()) + if("aflap") + if(!restrained()) message = "flaps [T.his] wings ANGRILY!" m_type = 2 if(miming) m_type = 1 - if ("drool") + if("drool") message = "drools." m_type = 1 - if ("eyebrow") + if("eyebrow") message = "raises an eyebrow." m_type = 1 - if ("chuckle") + if("chuckle") if(miming) message = "appears to chuckle." m_type = 1 else - if (!muzzled) + if(!muzzled) message = "chuckles." m_type = 2 else message = "makes a noise." m_type = 2 - if ("twitch") + if("twitch") message = "twitches." m_type = 1 - if ("twitch_v") + if("twitch_v") message = "twitches violently." m_type = 1 - if ("faint") + if("faint") message = "faints." - if(src.sleeping) + if(sleeping) return //Can't faint while asleep - src.sleeping += 10 //Short-short nap + sleeping += 10 //Short-short nap m_type = 1 if("cough", "coughs") @@ -272,7 +270,7 @@ 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.loc, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add + playsound(loc, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add else message = "makes a strong noise." m_type = 2 @@ -296,163 +294,163 @@ message = "frowns." m_type = 1 - if ("nod") + if("nod") message = "nods." m_type = 1 - if ("blush") + if("blush") message = "blushes." m_type = 1 - if ("wave") + if("wave") message = "waves." m_type = 1 - if ("gasp") + if("gasp") if(miming) message = "appears to be gasping!" m_type = 1 else - if (!muzzled) + if(!muzzled) message = "gasps!" m_type = 2 else message = "makes a weak noise." m_type = 2 - if ("deathgasp") + if("deathgasp") message = "[species.get_death_message()]" m_type = 1 - if ("giggle") + if("giggle") if(miming) message = "giggles silently!" m_type = 1 else - if (!muzzled) + if(!muzzled) message = "giggles." m_type = 2 else message = "makes a noise." m_type = 2 - if ("glare") + if("glare") var/M = null - if (param) - for (var/mob/A in view(null, null)) - if (param == A.name) + if(param) + for(var/mob/A in view(null, null)) + if(param == A.name) M = A break - if (!M) + if(!M) param = null - if (param) + if(param) message = "glares at [param]." else message = "glares." - if ("stare") + if("stare") var/M = null - if (param) - for (var/mob/A in view(null, null)) - if (param == A.name) + if(param) + for(var/mob/A in view(null, null)) + if(param == A.name) M = A break - if (!M) + if(!M) param = null - if (param) + if(param) message = "stares at [param]." else message = "stares." - if ("look") + if("look") var/M = null - if (param) - for (var/mob/A in view(null, null)) - if (param == A.name) + if(param) + for(var/mob/A in view(null, null)) + if(param == A.name) M = A break - if (!M) + if(!M) param = null - if (param) + if(param) message = "looks at [param]." else message = "looks." m_type = 1 - if ("grin") + if("grin") message = "grins." m_type = 1 - if ("cry") + if("cry") if(miming) message = "cries." m_type = 1 else - if (!muzzled) + 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("sigh") if(miming) message = "sighs." m_type = 1 else - if (!muzzled) + if(!muzzled) message = "sighs." m_type = 2 else message = "makes a weak noise." m_type = 2 - if ("laugh") + if("laugh") if(miming) message = "acts out a laugh." m_type = 1 else - if (!muzzled) + if(!muzzled) message = "laughs." m_type = 2 else message = "makes a noise." m_type = 2 - if ("mumble") + if("mumble") message = "mumbles!" m_type = 2 if(miming) m_type = 1 - if ("grumble") + if("grumble") if(miming) message = "grumbles!" m_type = 1 - if (!muzzled) + if(!muzzled) message = "grumbles!" m_type = 2 else message = "makes a noise." m_type = 2 - if ("groan") + if("groan") if(miming) message = "appears to groan!" m_type = 1 else - if (!muzzled) + if(!muzzled) message = "groans!" m_type = 2 else message = "makes a loud noise." m_type = 2 - if ("moan") + if("moan") if(miming) message = "appears to moan!" m_type = 1 @@ -460,41 +458,41 @@ message = "moans!" m_type = 2 - if ("johnny") + if("johnny") var/M - if (param) + if(param) M = param - if (!M) + 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.\" [src.name] takes a drag from a cigarette and blows his name out in smoke." + 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 (!src.restrained()) + 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) + if(param) + for(var/atom/A as mob|obj|turf|area in view(null, null)) + if(param == A.name) M = A break - if (!M) + if(!M) message = "points." else pointed(M) - if (M) + if(M) message = "points to [M]." else m_type = 1 - if ("raise") - if (!src.restrained()) + if("raise") + if(!restrained()) message = "raises a hand." m_type = 1 @@ -502,35 +500,35 @@ message = "shakes [T.his] head." m_type = 1 - if ("shrug") + if("shrug") message = "shrugs." m_type = 1 - if ("signal") - if (!src.restrained()) + if("signal") + if(!restrained()) var/t1 = round(text2num(param)) - if (isnum(t1)) - if (t1 <= 5 && (!src.r_hand || !src.l_hand)) + if(isnum(t1)) + if(t1 <= 5 && (!r_hand || !l_hand)) message = "raises [t1] finger\s." - else if (t1 <= 10 && (!src.r_hand && !src.l_hand)) + else if(t1 <= 10 && (!r_hand && !l_hand)) message = "raises [t1] finger\s." m_type = 1 - if ("smile") + if("smile") message = "smiles." m_type = 1 - if ("shiver") + if("shiver") message = "shivers." m_type = 2 if(miming) m_type = 1 - if ("pale") + if("pale") message = "goes pale for a second." m_type = 1 - if ("tremble") + if("tremble") message = "trembles in fear!" m_type = 1 @@ -560,53 +558,53 @@ use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg' else use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg' - playsound(src.loc, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add + playsound(loc, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add else message = "makes a strange noise." m_type = 2 - if ("sniff") + if("sniff") message = "sniffs." m_type = 2 if(miming) m_type = 1 - if ("snore") - if (miming) + if("snore") + if(miming) message = "sleeps soundly." m_type = 1 else - if (!muzzled) + if(!muzzled) message = "snores." m_type = 2 else message = "makes a noise." m_type = 2 - if ("whimper") - if (miming) + if("whimper") + if(miming) message = "appears hurt." m_type = 1 else - if (!muzzled) + if(!muzzled) message = "whimpers." m_type = 2 else message = "makes a weak noise." m_type = 2 - if ("wink") + if("wink") message = "winks." m_type = 1 - if ("yawn") - if (!muzzled) + if("yawn") + if(!muzzled) message = "yawns." m_type = 2 if(miming) m_type = 1 - if ("collapse") + if("collapse") Paralyse(2) message = "collapses!" m_type = 2 @@ -615,49 +613,49 @@ if("hug") m_type = 1 - if (!src.restrained()) + if(!restrained()) var/M = null - if (param) - for (var/mob/A in view(1, null)) - if (param == A.name) + if(param) + for(var/mob/A in view(1, null)) + if(param == A.name) M = A break - if (M == src) + if(M == src) M = null - if (M) + if(M) message = "hugs [M]." else message = "hugs [T.himself]." - if ("handshake") + if("handshake") m_type = 1 - if (!src.restrained() && !src.r_hand) + if(!restrained() && !r_hand) var/mob/living/M = null - if (param) - for (var/mob/living/A in view(1, null)) - if (param == A.name) + if(param) + for(var/mob/living/A in view(1, null)) + if(param == A.name) M = A break - if (M == src) + if(M == src) M = null - if (M) - if (M.canmove && !M.r_hand && !M.restrained()) + 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 (!src.restrained()) + if(!restrained()) var/M = null - if (param) - for (var/mob/A in view(1, null)) - if (param == A.name) + if(param) + for(var/mob/A in view(1, null)) + if(param == A.name) M = A break - if (M) + if(M) message = "gives daps to [M]." else message = "sadly can't find anybody to give daps to, and daps [T.himself]. Shameful." @@ -720,16 +718,16 @@ playsound(loc, 'sound/effects/fingersnap.ogg', 50, 1, -3, preference = /datum/client_preference/emote_noises) //VOREStation Add if("swish") - src.animate_tail_once() + animate_tail_once() if("wag", "sway") - src.animate_tail_start() + animate_tail_start() if("qwag", "fastsway") - src.animate_tail_fast() + animate_tail_fast() if("swag", "stopsway") - src.animate_tail_stop() + animate_tail_stop() if("vomit") if(isSynthetic()) @@ -752,16 +750,16 @@ else message = "makes a light spitting noise, a poor attempt at a whistle." - if ("help") //Adds YAWN EMOTES - Cross/Chirp - to_chat(src, "blink, blink_r, blush, bow-(none)/mob, burp, choke, chirp, chuckle, clap, collapse, cough, cross, cry, custom, deathgasp, drool, eyebrow, fastsway/qwag, \ + 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, \ 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, tremble, twitch, \ - twitch_v, vomit, whimper, wink, yawn. Prometheans: squish Synthetics: beep, buzz, dwoop, yes, no, rcough, rsneeze, ping. Skrell: warble") + twitch_v, vomit, whimper, wink, 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. + 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) + if(message) custom_emote(m_type,message) /mob/living/carbon/human/verb/pose() @@ -771,7 +769,7 @@ var/datum/gender/T = gender_datums[get_visible_gender()] - pose = sanitize(input(usr, "This is [src]. [T.he]...", "Pose", null) as text) + pose = sanitize(input(usr, "This is [src]. [T.he]...", "Pose", null) as text) /mob/living/carbon/human/verb/set_flavor() set name = "Set Flavour Text" diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm index 69fc1cc9cd..0fa6e35381 100644 --- a/code/modules/mob/living/carbon/human/emote_vr.dm +++ b/code/modules/mob/living/carbon/human/emote_vr.dm @@ -3,27 +3,27 @@ /mob/living/carbon/human/proc/handle_emote_vr(var/act,var/m_type=1,var/message = null) //Reduces emote spamming - if(src.nextemote >= world.time)// || user.stat != CONSCIOUS + if(nextemote >= world.time)// || user.stat != CONSCIOUS return 1 - src.nextemote = world.time + 12 + nextemote = world.time + 12 switch(act) - if ("vwag") + if("vwag") if(toggle_tail_vr(message = 1)) m_type = 1 message = "[wagging ? "starts" : "stops"] wagging their tail." else return 1 - if ("vflap") + if("vflap") if(toggle_wing_vr(message = 1)) m_type = 1 message = "[flapping ? "starts" : "stops"] flapping their wings." else return 1 - if ("mlem") + 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 ("awoo") + if("awoo") m_type = 2 message = "lets out an awoo." playsound(loc, 'sound/voice/awoo.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) @@ -31,42 +31,46 @@ 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 ("nya") + if("nya") message = "lets out a nya." m_type = 2 playsound(loc, 'sound/voice/nya.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if ("peep") + if("peep") message = "peeps like a bird." m_type = 2 playsound(loc, 'sound/voice/peep.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if ("chirp") + if("chirp") message = "chirps!" - playsound(src.loc, 'sound/misc/nymphchirp.ogg', 50, 0, preference = /datum/client_preference/emote_noises) + playsound(loc, 'sound/misc/nymphchirp.ogg', 50, 0, preference = /datum/client_preference/emote_noises) m_type = 2 - if ("weh") + if("weh") message = "lets out a weh." m_type = 2 playsound(loc, 'sound/voice/weh.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if ("merp") + if("merp") message = "lets out a merp." m_type = 2 playsound(loc, 'sound/voice/merp.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if ("bark") + if("myarp") + message = "lets out a myarp." + m_type = 2 + playsound(loc, 'sound/voice/myarp.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) + if("bark") message = "lets out a bark." m_type = 2 playsound(loc, 'sound/voice/bark2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if ("his") + if("hiss") message = "lets out a hiss." m_type = 2 playsound(loc, 'sound/voice/hiss.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if ("squeak") + if("squeak") message = "lets out a squeak." m_type = 2 playsound(loc, 'sound/effects/mouse_squeak.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if ("nsay") + if("nsay") nsay() return TRUE - if ("nme") + if("nme") nme() return TRUE if("chirp") //Yawn Addtion @@ -85,10 +89,10 @@ 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 ("flip") + 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(src.sleeping || src.resting || src.buckled || src.weakened || src.restrained() || involved_parts.len < 2) + if(sleeping || resting || buckled || weakened || restrained() || involved_parts.len < 2) to_chat(src, "You can't *flip in your current state!") return 1 else @@ -96,23 +100,24 @@ handle_flip_vr() message = "does a flip!" m_type = 1 - if ("vhelp") //Help for Virgo-specific emotes. - to_chat(src, "vwag, vflap, mlem, awoo, howl, nya, peep, chirp, weh, merp, bark, hiss, squeak, nsay, nme, flip") + if("vhelp") //Help for Virgo-specific emotes. + to_chat(src, "vwag, vflap, mlem, awoo, nya, peep, chirp, weh, merp, myarp, bark, hiss, squeak, nsay, nme, flip") + return TRUE - if (message) + if(message) custom_emote(m_type,message) - return 1 + return TRUE - return 0 + return FALSE /mob/living/carbon/human/proc/handle_flip_vr() var/original_density = density var/original_passflags = pass_flags - + //Briefly un-dense to dodge projectiles density = FALSE - + //Parkour! var/parkour_chance = 20 //Default if(species) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 720ec6aac3..93ec82b8e4 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -1,10 +1,11 @@ /mob/living/carbon/human/examine(mob/user) + // . = ..() //Note that we don't call parent. We build the list by ourselves. + var/skip_gear = 0 var/skip_body = 0 if(alpha <= EFFECTIVE_INVIS) - src.loc.examine(user) - return + return src.loc.examine(user) // Returns messages as if they examined wherever the human was var/looks_synth = looksSynthetic() @@ -75,12 +76,6 @@ BP_L_LEG = skip_body & EXAMINE_SKIPLEGS, BP_R_LEG = skip_body & EXAMINE_SKIPLEGS) - var/list/msg = list("*---------*
This is ") - - msg += "[bicon(src)] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated - - msg += "[src.name]" - var/datum/gender/T = gender_datums[get_visible_gender()] if((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE)) //big suits/masks/helmets make it hard to tell their gender @@ -98,10 +93,11 @@ // Just in case someone VVs the gender to something strange. It'll runtime anyway when it hits usages, better to CRASH() now with a helpful message. CRASH("Gender datum was null; key was '[((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE)) ? PLURAL : gender]'") + var/name_ender = "" if(!((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE))) //VOREStation Add Start if(custom_species) - msg += ", a [src.custom_species]" + name_ender = ", a [src.custom_species]" else if(looks_synth) //VOREStation Add End var/use_gender = "a synthetic" @@ -110,16 +106,12 @@ else if(gender == FEMALE) use_gender = "a gynoid" - msg += ", [use_gender]!" + name_ender = ", [use_gender]![species.get_additional_examine_text(src)]" else if(species.name != "Human") - msg += ", \a [species.get_examine_name()]!" + name_ender = ", \a [species.get_examine_name()]![species.get_additional_examine_text(src)]" - var/extra_species_text = species.get_additional_examine_text(src) - if(extra_species_text) - msg += "[extra_species_text]" - - msg += "
" + var/list/msg = list("*---------*","This is [bicon(src)] [src.name][name_ender]") //uniform if(w_uniform && !(skip_gear & EXAMINE_SKIPJUMPSUIT) && w_uniform.show_examine) @@ -142,16 +134,16 @@ tie_msg += " Attached to it is [english_list(accessories_visible)]." if(w_uniform.blood_DNA) - msg += "[T.He] [T.is] wearing [bicon(w_uniform)] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]
" + msg += "[T.He] [T.is] wearing [bicon(w_uniform)] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]" else - msg += "[T.He] [T.is] wearing [bicon(w_uniform)] \a [w_uniform].[tie_msg]
" + msg += "[T.He] [T.is] wearing [bicon(w_uniform)] \a [w_uniform].[tie_msg]" //head if(head && !(skip_gear & EXAMINE_SKIPHELMET) && head.show_examine) if(head.blood_DNA) - msg += "[T.He] [T.is] wearing [bicon(head)] [head.gender==PLURAL?"some":"a"] [(head.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [head.name] on [T.his] head!
" + msg += "[T.He] [T.is] wearing [bicon(head)] [head.gender==PLURAL?"some":"a"] [(head.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [head.name] on [T.his] head!" else - msg += "[T.He] [T.is] wearing [bicon(head)] \a [head] on [T.his] head.
" + msg += "[T.He] [T.is] wearing [bicon(head)] \a [head] on [T.his] head." //suit/armour if(wear_suit) @@ -162,73 +154,73 @@ tie_msg += " Attached to it is [english_list(U.accessories)]." if(wear_suit.blood_DNA) - msg += "[T.He] [T.is] wearing [bicon(wear_suit)] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_suit.name][tie_msg]!
" + msg += "[T.He] [T.is] wearing [bicon(wear_suit)] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_suit.name][tie_msg]!" else - msg += "[T.He] [T.is] wearing [bicon(wear_suit)] \a [wear_suit].[tie_msg]
" + msg += "[T.He] [T.is] wearing [bicon(wear_suit)] \a [wear_suit].[tie_msg]" //suit/armour storage if(s_store && !(skip_gear & EXAMINE_SKIPSUITSTORAGE) && s_store.show_examine) if(s_store.blood_DNA) - msg += "[T.He] [T.is] carrying [bicon(s_store)] [s_store.gender==PLURAL?"some":"a"] [(s_store.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [s_store.name] on [T.his] [wear_suit.name]!
" + msg += "[T.He] [T.is] carrying [bicon(s_store)] [s_store.gender==PLURAL?"some":"a"] [(s_store.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [s_store.name] on [T.his] [wear_suit.name]!" else - msg += "[T.He] [T.is] carrying [bicon(s_store)] \a [s_store] on [T.his] [wear_suit.name].
" + msg += "[T.He] [T.is] carrying [bicon(s_store)] \a [s_store] on [T.his] [wear_suit.name]." //back if(back && !(skip_gear & EXAMINE_SKIPBACKPACK) && back.show_examine) if(back.blood_DNA) - msg += "[T.He] [T.has] [bicon(back)] [back.gender==PLURAL?"some":"a"] [(back.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [back] on [T.his] back.
" + msg += "[T.He] [T.has] [bicon(back)] [back.gender==PLURAL?"some":"a"] [(back.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [back] on [T.his] back." else - msg += "[T.He] [T.has] [bicon(back)] \a [back] on [T.his] back.
" + msg += "[T.He] [T.has] [bicon(back)] \a [back] on [T.his] back." //left hand if(l_hand && l_hand.show_examine) if(l_hand.blood_DNA) - msg += "[T.He] [T.is] holding [bicon(l_hand)] [l_hand.gender==PLURAL?"some":"a"] [(l_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [l_hand.name] in [T.his] left hand!
" + msg += "[T.He] [T.is] holding [bicon(l_hand)] [l_hand.gender==PLURAL?"some":"a"] [(l_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [l_hand.name] in [T.his] left hand!" else - msg += "[T.He] [T.is] holding [bicon(l_hand)] \a [l_hand] in [T.his] left hand.
" + msg += "[T.He] [T.is] holding [bicon(l_hand)] \a [l_hand] in [T.his] left hand." //right hand if(r_hand && r_hand.show_examine) if(r_hand.blood_DNA) - msg += "[T.He] [T.is] holding [bicon(r_hand)] [r_hand.gender==PLURAL?"some":"a"] [(r_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [r_hand.name] in [T.his] right hand!
" + msg += "[T.He] [T.is] holding [bicon(r_hand)] [r_hand.gender==PLURAL?"some":"a"] [(r_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [r_hand.name] in [T.his] right hand!" else - msg += "[T.He] [T.is] holding [bicon(r_hand)] \a [r_hand] in [T.his] right hand.
" + msg += "[T.He] [T.is] holding [bicon(r_hand)] \a [r_hand] in [T.his] right hand." //gloves if(gloves && !(skip_gear & EXAMINE_SKIPGLOVES) && gloves.show_examine) if(gloves.blood_DNA) - msg += "[T.He] [T.has] [bicon(gloves)] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands!
" + msg += "[T.He] [T.has] [bicon(gloves)] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands!" else - msg += "[T.He] [T.has] [bicon(gloves)] \a [gloves] on [T.his] hands.
" + msg += "[T.He] [T.has] [bicon(gloves)] \a [gloves] on [T.his] hands." else if(blood_DNA && !(skip_body & EXAMINE_SKIPHANDS)) - msg += "[T.He] [T.has] [(hand_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained hands!
" + msg += "[T.He] [T.has] [(hand_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained hands!" //handcuffed? if(handcuffed && handcuffed.show_examine) if(istype(handcuffed, /obj/item/weapon/handcuffs/cable)) - msg += "[T.He] [T.is] [bicon(handcuffed)] restrained with cable!
" + msg += "[T.He] [T.is] [bicon(handcuffed)] restrained with cable!" else - msg += "[T.He] [T.is] [bicon(handcuffed)] handcuffed!
" + msg += "[T.He] [T.is] [bicon(handcuffed)] handcuffed!" //buckled if(buckled) - msg += "[T.He] [T.is] [bicon(buckled)] buckled to [buckled]!
" + msg += "[T.He] [T.is] [bicon(buckled)] buckled to [buckled]!" //belt if(belt && !(skip_gear & EXAMINE_SKIPBELT) && belt.show_examine) if(belt.blood_DNA) - msg += "[T.He] [T.has] [bicon(belt)] [belt.gender==PLURAL?"some":"a"] [(belt.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [belt.name] about [T.his] waist!
" + msg += "[T.He] [T.has] [bicon(belt)] [belt.gender==PLURAL?"some":"a"] [(belt.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [belt.name] about [T.his] waist!" else - msg += "[T.He] [T.has] [bicon(belt)] \a [belt] about [T.his] waist.
" + msg += "[T.He] [T.has] [bicon(belt)] \a [belt] about [T.his] waist." //shoes if(shoes && !(skip_gear & EXAMINE_SKIPSHOES) && shoes.show_examine) if(shoes.blood_DNA) - msg += "[T.He] [T.is] wearing [bicon(shoes)] [shoes.gender==PLURAL?"some":"a"] [(shoes.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [shoes.name] on [T.his] feet!
" + msg += "[T.He] [T.is] wearing [bicon(shoes)] [shoes.gender==PLURAL?"some":"a"] [(shoes.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [shoes.name] on [T.his] feet!" else - msg += "[T.He] [T.is] wearing [bicon(shoes)] \a [shoes] on [T.his] feet.
" + msg += "[T.He] [T.is] wearing [bicon(shoes)] \a [shoes] on [T.his] feet." else if(feet_blood_DNA && !(skip_body & EXAMINE_SKIPHANDS)) - msg += "[T.He] [T.has] [(feet_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained feet!
" + msg += "[T.He] [T.has] [(feet_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained feet!" //mask if(wear_mask && !(skip_gear & EXAMINE_SKIPMASK) && wear_mask.show_examine) @@ -237,24 +229,24 @@ descriptor = "in [T.his] mouth" if(wear_mask.blood_DNA) - msg += "[T.He] [T.has] [bicon(wear_mask)] [wear_mask.gender==PLURAL?"some":"a"] [(wear_mask.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_mask.name] [descriptor]!
" + msg += "[T.He] [T.has] [bicon(wear_mask)] [wear_mask.gender==PLURAL?"some":"a"] [(wear_mask.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_mask.name] [descriptor]!" else - msg += "[T.He] [T.has] [bicon(wear_mask)] \a [wear_mask] [descriptor].
" + msg += "[T.He] [T.has] [bicon(wear_mask)] \a [wear_mask] [descriptor]." //eyes if(glasses && !(skip_gear & EXAMINE_SKIPEYEWEAR) && glasses.show_examine) if(glasses.blood_DNA) - msg += "[T.He] [T.has] [bicon(glasses)] [glasses.gender==PLURAL?"some":"a"] [(glasses.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [glasses] covering [T.his] eyes!
" + msg += "[T.He] [T.has] [bicon(glasses)] [glasses.gender==PLURAL?"some":"a"] [(glasses.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [glasses] covering [T.his] eyes!" else - msg += "[T.He] [T.has] [bicon(glasses)] \a [glasses] covering [T.his] eyes.
" + msg += "[T.He] [T.has] [bicon(glasses)] \a [glasses] covering [T.his] eyes." //left ear if(l_ear && !(skip_gear & EXAMINE_SKIPEARS) && l_ear.show_examine) - msg += "[T.He] [T.has] [bicon(l_ear)] \a [l_ear] on [T.his] left ear.
" + msg += "[T.He] [T.has] [bicon(l_ear)] \a [l_ear] on [T.his] left ear." //right ear if(r_ear && !(skip_gear & EXAMINE_SKIPEARS) && r_ear.show_examine) - msg += "[T.He] [T.has] [bicon(r_ear)] \a [r_ear] on [T.his] right ear.
" + msg += "[T.He] [T.has] [bicon(r_ear)] \a [r_ear] on [T.his] right ear." //ID if(wear_id && wear_id.show_examine) @@ -266,43 +258,50 @@ var/obj/item/weapon/card/id/idcard = wear_id id = idcard.registered_name if(id && (id != real_name) && (get_dist(src, usr) <= 1) && prob(10)) - msg += "[T.He] [T.is] wearing [bicon(wear_id)] \a [wear_id] yet something doesn't seem right...
" + msg += "[T.He] [T.is] wearing [bicon(wear_id)] \a [wear_id] yet something doesn't seem right..." else*/ - msg += "[T.He] [T.is] wearing [bicon(wear_id)] \a [wear_id].
" + msg += "[T.He] [T.is] wearing [bicon(wear_id)] \a [wear_id]." //Jitters if(is_jittery) if(jitteriness >= 300) - msg += "[T.He] [T.is] convulsing violently!
" + msg += "[T.He] [T.is] convulsing violently!" else if(jitteriness >= 200) - msg += "[T.He] [T.is] extremely jittery.
" + msg += "[T.He] [T.is] extremely jittery." else if(jitteriness >= 100) - msg += "[T.He] [T.is] twitching ever so slightly.
" + msg += "[T.He] [T.is] twitching ever so slightly." //splints for(var/organ in BP_ALL) var/obj/item/organ/external/o = get_organ(organ) if(o && o.splinted && o.splinted.loc == o) - msg += "[T.He] [T.has] \a [o.splinted] on [T.his] [o.name]!
" + msg += "[T.He] [T.has] \a [o.splinted] on [T.his] [o.name]!" if(suiciding) - msg += "[T.He] appears to have commited suicide... there is no hope of recovery.
" + msg += "[T.He] appears to have commited suicide... there is no hope of recovery." - msg += attempt_vr(src,"examine_weight",args) //VOREStation Code - msg += attempt_vr(src,"examine_nutrition",args) //VOREStation Code - msg += attempt_vr(src,"examine_bellies",args) //VOREStation Code - msg += attempt_vr(src,"examine_pickup_size",args) //VOREStation Code - msg += attempt_vr(src,"examine_step_size",args) //VOREStation Code - msg += attempt_vr(src,"examine_nif",args) //VOREStation Code - msg += attempt_vr(src,"examine_chimera",args) //VOREStation Code + //VOREStation Add + var/list/vorestrings = list() + vorestrings += examine_weight() + vorestrings += examine_nutrition() + vorestrings += examine_bellies() + vorestrings += examine_pickup_size() + vorestrings += examine_step_size() + vorestrings += examine_nif() + vorestrings += examine_chimera() + for(var/entry in vorestrings) + if(entry == "" || entry == null) + vorestrings -= entry + msg += vorestrings + //VOREStation Add End if(mSmallsize in mutations) - msg += "[T.He] [T.is] very short!
" + msg += "[T.He] [T.is] very short!" if (src.stat) - msg += "[T.He] [T.is]n't responding to anything around [T.him] and seems to be asleep.
" + msg += "[T.He] [T.is]n't responding to anything around [T.him] and seems to be asleep." if((stat == 2 || src.losebreath) && get_dist(user, src) <= 3) - msg += "[T.He] [T.does] not appear to be breathing.
" + msg += "[T.He] [T.does] not appear to be breathing." if(istype(user, /mob/living/carbon/human) && !user.stat && Adjacent(user)) user.visible_message("[usr] checks [src]'s pulse.", "You check [src]'s pulse.") spawn(15) @@ -313,21 +312,21 @@ to_chat(user, "[T.He] [T.has] a pulse!") if(fire_stacks) - msg += "[T.He] [T.is] covered in some liquid.
" + msg += "[T.He] [T.is] covered in some liquid." if(on_fire) - msg += "[T.He] [T.is] on fire!.
" + msg += "[T.He] [T.is] on fire!." var/ssd_msg = species.get_ssd(src) if(ssd_msg && (!should_have_organ("brain") || has_brain()) && stat != DEAD) if(!key) - msg += "[T.He] [T.is] [ssd_msg]. It doesn't look like [T.he] [T.is] waking up anytime soon.
" + msg += "[T.He] [T.is] [ssd_msg]. It doesn't look like [T.he] [T.is] waking up anytime soon." else if(!client) - msg += "[T.He] [T.is] [ssd_msg].
" + msg += "[T.He] [T.is] [ssd_msg]." //VOREStation Add Start if(client && ((client.inactivity / 10) / 60 > 10)) //10 Minutes - msg += "\[Inactive for [round((client.inactivity/10)/60)] minutes\]\n" + msg += "\[Inactive for [round((client.inactivity/10)/60)] minutes\]" else if(disconnect_time) - msg += "\[Disconnected/ghosted [round(((world.realtime - disconnect_time)/10)/60)] minutes ago\]\n" + msg += "\[Disconnected/ghosted [round(((world.realtime - disconnect_time)/10)/60)] minutes ago\]" //VOREStation Add End var/list/wound_flavor_text = list() @@ -341,9 +340,9 @@ var/obj/item/organ/external/E = organs_by_name[organ_tag] if(!E) - wound_flavor_text["[organ_descriptor]"] = "[T.He] [T.is] missing [T.his] [organ_descriptor].
" + wound_flavor_text["[organ_descriptor]"] = "[T.He] [T.is] missing [T.his] [organ_descriptor]." else if(E.is_stump()) - wound_flavor_text["[organ_descriptor]"] = "[T.He] [T.has] a stump where [T.his] [organ_descriptor] should be.
" + wound_flavor_text["[organ_descriptor]"] = "[T.He] [T.has] a stump where [T.his] [organ_descriptor] should be." else continue @@ -352,47 +351,51 @@ if((temp.organ_tag in hidden) && hidden[temp.organ_tag]) continue //Organ is hidden, don't talk about it if(temp.status & ORGAN_DESTROYED) - wound_flavor_text["[temp.name]"] = "[T.He] [T.is] missing [T.his] [temp.name].
" + wound_flavor_text["[temp.name]"] = "[T.He] [T.is] missing [T.his] [temp.name]." continue if(!looks_synth && temp.robotic == ORGAN_ROBOT) if(!(temp.brute_dam + temp.burn_dam)) - wound_flavor_text["[temp.name]"] = "[T.He] [T.has] a [temp.name].
" + wound_flavor_text["[temp.name]"] = "[T.He] [T.has] a [temp.name]." else - wound_flavor_text["[temp.name]"] = "[T.He] [T.has] a [temp.name] with [temp.get_wounds_desc()]!
" + wound_flavor_text["[temp.name]"] = "[T.He] [T.has] a [temp.name] with [temp.get_wounds_desc()]!" continue else if(temp.wounds.len > 0 || temp.open) if(temp.is_stump() && temp.parent_organ && organs_by_name[temp.parent_organ]) var/obj/item/organ/external/parent = organs_by_name[temp.parent_organ] - wound_flavor_text["[temp.name]"] = "[T.He] has [temp.get_wounds_desc()] on [T.his] [parent.name].
" + wound_flavor_text["[temp.name]"] = "[T.He] has [temp.get_wounds_desc()] on [T.his] [parent.name]." else - wound_flavor_text["[temp.name]"] = "[T.He] has [temp.get_wounds_desc()] on [T.his] [temp.name].
" + wound_flavor_text["[temp.name]"] = "[T.He] has [temp.get_wounds_desc()] on [T.his] [temp.name]." else wound_flavor_text["[temp.name]"] = "" if(temp.dislocated == 2) - wound_flavor_text["[temp.name]"] += "[T.His] [temp.joint] is dislocated!
" + wound_flavor_text["[temp.name]"] += "[T.His] [temp.joint] is dislocated!" if(temp.brute_dam > temp.min_broken_damage || (temp.status & (ORGAN_BROKEN | ORGAN_MUTATED))) - wound_flavor_text["[temp.name]"] += "[T.His] [temp.name] is dented and swollen!
" + wound_flavor_text["[temp.name]"] += "[T.His] [temp.name] is dented and swollen!" if(temp.germ_level > INFECTION_LEVEL_TWO && !(temp.status & ORGAN_DEAD)) - wound_flavor_text["[temp.name]"] += "[T.His] [temp.name] looks very infected!
" + wound_flavor_text["[temp.name]"] += "[T.His] [temp.name] looks very infected!" else if(temp.status & ORGAN_DEAD) - wound_flavor_text["[temp.name]"] += "[T.His] [temp.name] looks rotten!
" + wound_flavor_text["[temp.name]"] += "[T.His] [temp.name] looks rotten!" if(temp.status & ORGAN_BLEEDING) - is_bleeding["[temp.name]"] += "[T.His] [temp.name] is bleeding!
" + is_bleeding["[temp.name]"] += "[T.His] [temp.name] is bleeding!" if(temp.applied_pressure == src) - applying_pressure = "[T.He] is applying pressure to [T.his] [temp.name].
" + applying_pressure = "[T.He] is applying pressure to [T.his] [temp.name]." for(var/limb in wound_flavor_text) - msg += wound_flavor_text[limb] + var/flavor = wound_flavor_text[limb] + if(flavor) + msg += flavor for(var/limb in is_bleeding) - msg += is_bleeding[limb] + var/blood = is_bleeding[limb] + if(blood) + msg += blood for(var/implant in get_visible_implants(0)) - msg += "[src] [T.has] \a [implant] sticking out of [T.his] flesh!
" + msg += "[src] [T.has] \a [implant] sticking out of [T.his] flesh!" if(digitalcamo) - msg += "[T.He] [T.is] repulsively uncanny!
" + msg += "[T.He] [T.is] repulsively uncanny!" if(hasHUD(user,"security")) var/perpname = name @@ -410,8 +413,8 @@ if(R.fields["name"] == perpname) criminal = R.fields["criminal"] - msg += "Criminal status: \[[criminal]\]
" - msg += "Security records: \[View\] \[Add comment\]
" + msg += "Criminal status: \[[criminal]\]" + msg += "Security records: \[View\] \[Add comment\]" if(hasHUD(user,"medical")) var/perpname = name @@ -429,22 +432,22 @@ if (R.fields["name"] == perpname) medical = R.fields["p_stat"] - msg += "Physical status: \[[medical]\]
" - msg += "Medical records: \[View\] \[Add comment\]
" + msg += "Physical status: \[[medical]\]" + msg += "Medical records: \[View\] \[Add comment\]" - if(print_flavor_text()) - msg += "[print_flavor_text()]
" + var/flavor_text = print_flavor_text() + if(flavor_text) + msg += "[flavor_text]" // VOREStation Start if(ooc_notes) - msg += "OOC Notes: \[View\]\n" - - msg += "\[Mechanical Vore Preferences\]\n" - + msg += "OOC Notes: \[View\]" + msg += "\[Mechanical Vore Preferences\]" // VOREStation End - msg += "*---------*

" - msg += applying_pressure + msg += "*---------*
" + if(applying_pressure) + msg += applying_pressure var/show_descs = show_descriptors_to(user) if(show_descs) @@ -453,9 +456,9 @@ if(pose) if(!findtext(pose, regex("\[.?!]$"))) // Will be zero if the last character is not a member of [.?!] pose = addtext(pose,".") //Makes sure all emotes end with a period. - msg += "
[T.He] [pose]" + msg += "
[T.He] [pose]" //
intentional, extra gap. - to_chat(user, jointext(msg, null)) + return msg //Helper procedure. Called by /mob/living/carbon/human/examine() and /mob/living/carbon/human/Topic() to determine HUD access to security and medical records. /proc/hasHUD(mob/M as mob, hudtype) diff --git a/code/modules/mob/living/carbon/human/examine_vr.dm b/code/modules/mob/living/carbon/human/examine_vr.dm index bdd8678b1f..8d7c9a767c 100644 --- a/code/modules/mob/living/carbon/human/examine_vr.dm +++ b/code/modules/mob/living/carbon/human/examine_vr.dm @@ -44,25 +44,25 @@ switch(weight_examine) if(0 to 74) - message = "[t_He] [t_is] terribly lithe and frail!\n" + message = "[t_He] [t_is] terribly lithe and frail!" if(75 to 99) - message = "[t_He] [t_has] a very slender frame.\n" + message = "[t_He] [t_has] a very slender frame." if(100 to 124) - message = "[t_He] [t_has] a lightweight, athletic build.\n" + message = "[t_He] [t_has] a lightweight, athletic build." if(125 to 174) - message = "[t_He] [t_has] a healthy, average body.\n" + message = "[t_He] [t_has] a healthy, average body." if(175 to 224) - message = "[t_He] [t_has] a thick, [t_heavy] physique.\n" + message = "[t_He] [t_has] a thick, [t_heavy] physique." if(225 to 274) - message = "[t_He] [t_has] a plush, chubby figure.\n" + message = "[t_He] [t_has] a plush, chubby figure." if(275 to 325) - message = "[t_He] [t_has] an especially plump body with a round potbelly and large hips.\n" + message = "[t_He] [t_has] an especially plump body with a round potbelly and large hips." if(325 to 374) - message = "[t_He] [t_has] a very fat frame with a bulging potbelly, squishy rolls of pudge, very wide hips, and plump set of jiggling thighs.\n" + message = "[t_He] [t_has] a very fat frame with a bulging potbelly, squishy rolls of pudge, very wide hips, and plump set of jiggling thighs." if(375 to 474) - message = "[t_He] [t_is] incredibly obese. [t_His] massive potbelly sags over [t_his] waistline while [t_his] fat ass would probably require two chairs to sit down comfortably!\n" + message = "[t_He] [t_is] incredibly obese. [t_His] massive potbelly sags over [t_his] waistline while [t_his] fat ass would probably require two chairs to sit down comfortably!" else - message += "[t_He] [t_is] so morbidly obese, you wonder how [t_he] can even stand, let alone waddle around the station. [t_He] can't get any fatter without being immobilized.\n" + message += "[t_He] [t_is] so morbidly obese, you wonder how [t_he] can even stand, let alone waddle around the station. [t_He] can't get any fatter without being immobilized." return message //Credit to Aronai for helping me actually get this working! /mob/living/carbon/human/proc/examine_nutrition() @@ -100,23 +100,23 @@ t_His = "Hir" switch(nutrition_examine) if(0 to 49) - message = "[t_He] [t_is] starving! You can hear [t_his] stomach snarling from across the room!\n" + message = "[t_He] [t_is] starving! You can hear [t_his] stomach snarling from across the room!" if(50 to 99) - message = "[t_He] [t_is] extremely hungry. A deep growl occasionally rumbles from [t_his] empty stomach.\n" + message = "[t_He] [t_is] extremely hungry. A deep growl occasionally rumbles from [t_his] empty stomach." if(100 to 499) return message //Well that's pretty normal, really. if(500 to 999) // Fat. - message = "[t_He] [t_has] a stuffed belly, bloated fat and round from eating too much.\n" + message = "[t_He] [t_has] a stuffed belly, bloated fat and round from eating too much." if(1000 to 1399) - message = "[t_He] [t_has] a rotund, thick gut. It bulges from their body obscenely, close to sagging under its own weight.\n" + message = "[t_He] [t_has] a rotund, thick gut. It bulges from their body obscenely, close to sagging under its own weight." if(1400 to 1934) // One person fully digested. - message = "[t_He] [t_is] sporting a large, round, sagging stomach. It's contains at least their body weight worth of glorping slush.\n" + message = "[t_He] [t_is] sporting a large, round, sagging stomach. It's contains at least their body weight worth of glorping slush." if(1935 to 3004) // Two people. - message = "[t_He] [t_is] engorged with a huge stomach that sags and wobbles as they move. [t_He] must have consumed at least twice their body weight. It looks incredibly soft.\n" + message = "[t_He] [t_is] engorged with a huge stomach that sags and wobbles as they move. [t_He] must have consumed at least twice their body weight. It looks incredibly soft." if(3005 to 4074) // Three people. - message = "[t_His] stomach is firmly packed with digesting slop. [t_He] must have eaten at least a few times worth their body weight! It looks hard for them to stand, and [t_his] gut jiggles when they move.\n" + message = "[t_His] stomach is firmly packed with digesting slop. [t_He] must have eaten at least a few times worth their body weight! It looks hard for them to stand, and [t_his] gut jiggles when they move." if(4075 to INFINITY) // Four or more people. - message = "[t_He] [t_is] so absolutely stuffed that you aren't sure how it's possible to move. [t_He] can't seem to swell any bigger. The surface of [t_his] belly looks sorely strained!\n" + message = "[t_He] [t_is] so absolutely stuffed that you aren't sure how it's possible to move. [t_He] can't seem to swell any bigger. The surface of [t_his] belly looks sorely strained!" return message //For OmniHUD records access for appropriate models @@ -145,18 +145,18 @@ /mob/living/carbon/human/proc/examine_pickup_size(mob/living/H) var/message = "" if(istype(H) && (H.get_effective_size() - src.get_effective_size()) >= 0.50) - message = "They are small enough that you could easily pick them up!\n" + message = "They are small enough that you could easily pick them up!" return message /mob/living/carbon/human/proc/examine_step_size(mob/living/H) var/message = "" if(istype(H) && (H.get_effective_size() - src.get_effective_size()) >= 0.75) - message = "They are small enough that you could easily trample them!\n" + message = "They are small enough that you could easily trample them!" return message /mob/living/carbon/human/proc/examine_nif(mob/living/carbon/human/H) if(nif && nif.examine_msg) //If you have one set, anyway. - return "[nif.examine_msg]\n" + return "[nif.examine_msg]" /mob/living/carbon/human/proc/examine_chimera(mob/living/carbon/human/H) var/t_He = "It" //capitalised for use at the start of each line. @@ -189,8 +189,8 @@ t_his = "hir" if(revive_ready == REVIVING_NOW || revive_ready == REVIVING_DONE) if(stat == DEAD) - return "[t_His] body is twitching subtly.\n" + return "[t_His] body is twitching subtly." else - return "[t_He] [t_appear] to be in some sort of torpor.\n" + return "[t_He] [t_appear] to be in some sort of torpor." if(feral) - return "[t_He] [t_has] a crazed, wild look in [t_his] eyes!\n" \ No newline at end of file + return "[t_He] [t_has] a crazed, wild look in [t_his] eyes!" \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 642eaa2c4f..f7ee2d9520 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -151,6 +151,11 @@ if (prob(50) && !shielded) Paralyse(10) + var/blastsoak = getsoak(null, "bomb") + + b_loss = max(1, b_loss - blastsoak) + f_loss = max(1, f_loss - blastsoak) + var/update = 0 // focus most of the blast on one organ @@ -418,7 +423,7 @@ BITSET(hud_updateflag, WANTED_HUD) if(istype(usr,/mob/living/carbon/human)) var/mob/living/carbon/human/U = usr - U.handle_regular_hud_updates() + U.handle_hud_list() if(istype(usr,/mob/living/silicon/robot)) var/mob/living/silicon/robot/U = usr U.handle_regular_hud_updates() @@ -1141,6 +1146,7 @@ // Clear out their species abilities. species.remove_inherent_verbs(src) holder_type = null + hunger_rate = initial(hunger_rate) //VOREStation Add species = GLOB.all_species[new_species] @@ -1184,6 +1190,7 @@ maxHealth = species.total_health + hunger_rate = species.hunger_factor //VOREStation Add if(LAZYLEN(descriptors)) descriptors = null @@ -1396,7 +1403,7 @@ set desc = "Pop a joint back into place. Extremely painful." set src in view(1) - if(!isliving(usr) || !usr.canClick()) + if(!isliving(usr) || !usr.checkClickCooldown()) return usr.setClickCooldown(20) @@ -1637,3 +1644,32 @@ msg += get_display_species() return msg + +/mob/living/carbon/human/pull_damage() + if(((health - halloss) <= config.health_threshold_softcrit)) + for(var/name in organs_by_name) + var/obj/item/organ/external/e = organs_by_name[name] + if(!e) + continue + if((e.status & ORGAN_BROKEN && (!e.splinted || (e.splinted && e.splinted in e.contents && prob(30))) || e.status & ORGAN_BLEEDING) && (getBruteLoss() + getFireLoss() >= 100)) + return 1 + else + return ..() + +// Drag damage is handled in a parent +/mob/living/carbon/human/dragged(var/mob/living/dragger, var/oldloc) + if(prob(getBruteLoss() * 200 / maxHealth)) + var/bloodtrail = 1 + if(species?.flags & NO_BLOOD) + bloodtrail = 0 + else + var/blood_volume = round((vessel.get_reagent_amount("blood")/species.blood_volume)*100) + if(blood_volume < BLOOD_VOLUME_SURVIVE) + bloodtrail = 0 //Most of it's gone already, just leave it be + else + vessel.remove_reagent("blood", 1) + if(bloodtrail) + if(istype(loc, /turf/simulated)) + var/turf/T = loc + T.add_blood(src) + . = ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 7cf2027025..9388240af6 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -1,6 +1,6 @@ //Updates the mob's health from organs and mob damage variables /mob/living/carbon/human/updatehealth() - var/huskmodifier = 1.5 // With 1.5, you need 250 burn instead of 200 to husk a human. + var/huskmodifier = 2.5 //VOREStation Edit // With 1.5, you need 250 burn instead of 200 to husk a human. if(status_flags & GODMODE) health = getMaxHealth() diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 2c08449e1e..a0892c9fc9 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -27,7 +27,7 @@ if(can_feel_pain()) if(halloss >= 10) tally += (halloss / 10) //halloss shouldn't slow you down if you can't even feel it - var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80 + var/hungry = (500 - nutrition) / 5 //VOREStation Edit - Fixed 500 here instead of our huge MAX_NUTRITION if (hungry >= 70) tally += hungry/50 //VOREstation start @@ -224,6 +224,8 @@ // Handle footstep sounds /mob/living/carbon/human/handle_footstep(var/turf/T) + if(!istype(T)) + return if(is_incorporeal()) return if(!config.footstep_volume || !T.footstep_sounds || !T.footstep_sounds.len) diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index cb053663e0..acc4607191 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -302,7 +302,7 @@ var/delay_length = round(active_regen_delay * species.active_regen_mult) if(do_after(src,delay_length)) - nutrition -= 200 + adjust_nutrition(-200) for(var/obj/item/organ/I in internal_organs) if(I.robotic >= ORGAN_ROBOT) // No free robofix. @@ -345,5 +345,5 @@ active_regen = FALSE else to_chat(src, "Your regeneration is interrupted!") - nutrition -= 75 + adjust_nutrition(-75) active_regen = FALSE diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 894e3cfd80..1fc468b85a 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -4,9 +4,9 @@ #define HUMAN_MAX_OXYLOSS 1 //Defines how much oxyloss humans can get per tick. A tile with no air at all (such as space) applies this value, otherwise it's a percentage of it. #define HUMAN_CRIT_MAX_OXYLOSS ( 2.0 / 6) //The amount of damage you'll get when in critical condition. We want this to be a 5 minute deal = 300s. There are 50HP to get through, so (1/6)*last_tick_duration per second. Breaths however only happen every 4 ticks. last_tick_duration = ~2.0 on average -#define HEAT_DAMAGE_LEVEL_1 5 //Amount of damage applied when your body temperature just passes the 360.15k safety point -#define HEAT_DAMAGE_LEVEL_2 10 //Amount of damage applied when your body temperature passes the 400K point -#define HEAT_DAMAGE_LEVEL_3 20 //Amount of damage applied when your body temperature passes the 1000K point +#define HEAT_DAMAGE_LEVEL_1 2 //VOREStation Edit //Amount of damage applied when your body temperature just passes the 360.15k safety point +#define HEAT_DAMAGE_LEVEL_2 4 //VOREStation Edit //Amount of damage applied when your body temperature passes the 400K point +#define HEAT_DAMAGE_LEVEL_3 8 //VOREStation Edit //Amount of damage applied when your body temperature passes the 1000K point #define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point #define COLD_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 200K point @@ -22,6 +22,7 @@ #define COLD_GAS_DAMAGE_LEVEL_3 3 //Amount of damage applied when the current breath's temperature passes the 120K point #define RADIATION_SPEED_COEFFICIENT 0.1 +#define HUMAN_COMBUSTION_TEMP 524 //524k is the sustained combustion temperature of human fat /mob/living/carbon/human var/oxygen_alert = 0 @@ -57,8 +58,8 @@ ..() - if(life_tick%30==15) - hud_updateflag = 1022 + if(life_tick % 30) + hud_updateflag = (1 << TOTAL_HUDS) - 1 voice = GetVoice() @@ -90,7 +91,7 @@ else if(stat == DEAD && !stasis) handle_defib_timer() - if(!handle_some_updates()) + if(skip_some_updates()) return //We go ahead and process them 5 times for HUD images and other stuff though. //Update our name based on whether our face is obscured/disfigured @@ -98,10 +99,10 @@ pulse = handle_pulse() -/mob/living/carbon/human/proc/handle_some_updates() +/mob/living/carbon/human/proc/skip_some_updates() if(life_tick > 5 && timeofdeath && (timeofdeath < 5 || world.time - timeofdeath > 6000)) //We are long dead, or we're junk mobs spawned like the clowns on the clown shuttle - return 0 - return 1 + return 1 + return 0 /mob/living/carbon/human/breathe() if(!inStasisNow()) @@ -274,7 +275,7 @@ if(rad_organ && !rad_organ.is_broken()) var/rads = radiation/25 radiation -= rads - nutrition += rads + adjust_nutrition(rads) adjustBruteLoss(-(rads)) adjustFireLoss(-(rads)) adjustOxyLoss(-(rads)) @@ -793,7 +794,7 @@ if(bodytemperature < species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects. if(nutrition >= 2) //If we are very, very cold we'll use up quite a bit of nutriment to heat us up. - nutrition -= 2 + adjust_nutrition(-2) var/recovery_amt = max((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM) //to_world("Cold. Difference = [body_temperature_difference]. Recovering [recovery_amt]") // log_debug("Cold. Difference = [body_temperature_difference]. Recovering [recovery_amt]") @@ -816,8 +817,8 @@ //Handle normal clothing for(var/obj/item/clothing/C in list(head,wear_suit,w_uniform,shoes,gloves,wear_mask)) if(C) - if(C.max_heat_protection_temperature && C.max_heat_protection_temperature >= temperature) - . |= C.heat_protection + if(C.handle_high_temperature(temperature)) + . |= C.get_heat_protection_flags() //See proc/get_heat_protection_flags(temperature) for the description of this proc. /mob/living/carbon/human/proc/get_cold_protection_flags(temperature) @@ -825,8 +826,8 @@ //Handle normal clothing for(var/obj/item/clothing/C in list(head,wear_suit,w_uniform,shoes,gloves,wear_mask)) if(C) - if(C.min_cold_protection_temperature && C.min_cold_protection_temperature <= temperature) - . |= C.cold_protection + if(C.handle_low_temperature(temperature)) + . |= C.get_cold_protection_flags() /mob/living/carbon/human/get_heat_protection(temperature) //Temperature is the temperature you're being exposed to. var/thermal_protection_flags = get_heat_protection_flags(temperature) @@ -924,15 +925,7 @@ for(var/datum/modifier/mod in modifiers) if(!isnull(mod.metabolism_percent)) nutrition_reduction *= mod.metabolism_percent - - nutrition = max (0, nutrition - nutrition_reduction) - - if (nutrition > 450) - if(overeatduration < 600) //capped so people don't take forever to unfat - overeatduration++ - else - if(overeatduration > 1) - overeatduration -= 2 //doubled the unfat rate + adjust_nutrition(-nutrition_reduction) if(noisy == TRUE && nutrition < 250 && prob(10)) //VOREStation edit for hunger noises. var/sound/growlsound = sound(get_sfx("hunger_sounds")) @@ -950,7 +943,7 @@ //DO NOT CALL handle_statuses() from this proc, it's called from living/Life() as long as this returns a true value. /mob/living/carbon/human/handle_regular_status_updates() - if(!handle_some_updates()) + if(skip_some_updates()) return 0 if(status_flags & GODMODE) return 0 @@ -1291,8 +1284,11 @@ else bodytemp.icon_state = "temp0" - if(blinded) overlay_fullscreen("blind", /obj/screen/fullscreen/blind) - else clear_fullscreens() + if(blinded) + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) + + else if(!machine) + clear_fullscreens() if(disabilities & NEARSIGHTED) //this looks meh but saves a lot of memory by not requiring to add var/prescription if(glasses) //to every /obj/item @@ -1387,6 +1383,10 @@ see_in_dark = 8 if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO + for(var/datum/modifier/M in modifiers) + if(!isnull(M.vision_flags)) + sight |= M.vision_flags + if(!glasses_processed && (species.get_vision_flags(src) > 0)) sight |= species.get_vision_flags(src) if(!seer && !glasses_processed && seedarkness) @@ -1394,11 +1394,12 @@ if(machine) var/viewflags = machine.check_eye(src) - machine.apply_visual(src) if(viewflags < 0) reset_view(null, 0) else if(viewflags && !looking_elsewhere) sight |= viewflags + else + machine.apply_visual(src) else if(eyeobj) if(eyeobj.owner != src) @@ -1464,7 +1465,7 @@ if(air_master.current_cycle%3==1) if(!(M.status_flags & GODMODE)) M.adjustBruteLoss(5) - nutrition += 10 + adjust_nutrition(10) /mob/living/carbon/human/proc/handle_changeling() if(mind && mind.changeling) @@ -1821,7 +1822,15 @@ if(thermal_protection == 1) // Immune. return else - bodytemperature += (BODYTEMP_HEATING_MAX + (fire_stacks * 15)) * (1-thermal_protection) + var/fire_temp_add = (BODYTEMP_HEATING_MAX + (fire_stacks * 15)) * (1-thermal_protection) + //This is to prevent humans from heating up indefinitely. A human being on fire (fat burns at 250C) can't magically + // increase your body temperature beyond 250C, but it's possible something else (atmos) has heated us up beyond it, + // so don't worry about the firestacks at that point. Really, we should be cooling the room down, because it has + // to expend energy to heat our body up! But let's not worry about that. + if((bodytemperature + fire_temp_add) > HUMAN_COMBUSTION_TEMP) + return + + bodytemperature += fire_temp_add /mob/living/carbon/human/rejuvenate() restore_blood() diff --git a/code/modules/mob/living/carbon/human/life_vr.dm b/code/modules/mob/living/carbon/human/life_vr.dm index 6c15daedf1..a513fc3df0 100644 --- a/code/modules/mob/living/carbon/human/life_vr.dm +++ b/code/modules/mob/living/carbon/human/life_vr.dm @@ -58,22 +58,15 @@ nif.life() //Overriding carbon move proc that forces default hunger factor -/mob/living/carbon/Move(NewLoc, direct) +/mob/living/carbon/Moved(atom/old_loc, direction, forced = FALSE) . = ..() - if(.) - if(src.nutrition && src.stat != 2) - if(ishuman(src)) - var/mob/living/carbon/human/M = src - if(M.stat != 2 && M.nutrition > 0) - M.nutrition -= M.species.hunger_factor/10 - if(M.m_intent == "run") - M.nutrition -= M.species.hunger_factor/10 - if(M.nutrition < 0) - M.nutrition = 0 - else - src.nutrition -= DEFAULT_HUNGER_FACTOR/10 - if(src.m_intent == "run") - src.nutrition -= DEFAULT_HUNGER_FACTOR/10 - // Moving around increases germ_level faster - if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8)) - germ_level++ \ No newline at end of file + + // Technically this does mean being dragged takes nutrition + if(stat != DEAD) + adjust_nutrition(hunger_rate/-10) + if(m_intent == "run") + adjust_nutrition(hunger_rate/-10) + + // Moving around increases germ_level faster + if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8)) + germ_level++ \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 99b99c070f..b96c22e207 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -1,10 +1,8 @@ -/mob/living/carbon/human/say(var/message,var/whispering=0) - var/alt_name = "" +/mob/living/carbon/human/GetAltName() if(name != GetVoice()) - alt_name = "(as [get_id_name("Unknown")])" + return " (as [get_id_name("Unknown")])" - message = sanitize_or_reflect(message,src) //VOREStation Edit - Reflect too-long messages, within reason - ..(message, alt_name = alt_name, whispering = whispering) + return ..() /mob/living/carbon/human/proc/forcesay(list/append) if(stat == CONSCIOUS) @@ -39,44 +37,50 @@ winset(client, "input", "text=[null]") /mob/living/carbon/human/speech_bubble_appearance() - if(isSynthetic()) - var/datum/robolimb/robo = isSynthetic() - return robo.speech_bubble_appearance - else - if(species) - return species.speech_bubble_appearance - return "normal" + var/sounds_synth = FALSE + var/datum/robolimb/robo = isSynthetic() //Will get torso manufacturer + if(robo) + sounds_synth = looksSynthetic() //Based on lifelike robolimb vars -/mob/living/carbon/human/say_understands(var/mob/other,var/datum/language/speaking = null) + // Not lifelike and got manufacturer + if(sounds_synth) + return robo.speech_bubble_appearance || "synthetic" + // Not lifelike synth, might have synth voice box + if(!robo) + var/obj/item/organ/internal/V = internal_organs_by_name[O_VOICE] + if(V?.robotic >= ORGAN_ROBOT) + return "synthetic" + + // Species might have custom one + if(species.speech_bubble_appearance) + return species.speech_bubble_appearance + + // NORMIE + return ..() + +/mob/living/carbon/human/say_understands(var/mob/other, var/datum/language/speaking = null) if(has_brain_worms()) //Brain worms translate everything. Even mice and alien speak. - return 1 + return TRUE if(species.can_understand(other)) - return 1 + return TRUE //These only pertain to common. Languages are handled by mob/say_understands() - if (!speaking) - if (istype(other, /mob/living/carbon/alien/diona)) + if(!speaking) + if(istype(other, /mob/living/carbon/alien/diona)) if(other.languages.len >= 2) //They've sucked down some blood and can speak common now. - return 1 - if (istype(other, /mob/living/silicon)) - return 1 - if (istype(other, /mob/living/carbon/brain)) - return 1 - if (istype(other, /mob/living/simple_mob/slime)) - return 1 - - //This is already covered by mob/say_understands() - //if (istype(other, /mob/living/simple_mob)) - // if((other.universal_speak && !speaking) || src.universal_speak || src.universal_understand) - // return 1 - // return 0 + return TRUE + if(issilicon(other)) + return TRUE + if(isbrain(other)) + return TRUE + if(isslime(other)) + return TRUE return ..() /mob/living/carbon/human/GetVoice() - var/voice_sub if(istype(get_rig(),/obj/item/weapon/rig)) var/obj/item/weapon/rig/rig = get_rig() @@ -113,30 +117,6 @@ /mob/living/carbon/human/proc/GetSpecialVoice() return special_voice - -/* - ***Deprecated*** - let this be handled at the hear_say or hear_radio proc - This is left in for robot speaking when humans gain binary channel access until I get around to rewriting - robot_talk() proc. - There is no language handling build into it however there is at the /mob level so we accept the call - for it but just ignore it. -*/ - -/mob/living/carbon/human/say_quote(var/message, var/datum/language/speaking = null) - var/verb = "says" - var/ending = copytext(message, length(message)) - - if(speaking) - verb = speaking.get_spoken_verb(ending) - else - if(ending == "!") - verb=pick("exclaims","shouts","yells") - else if(ending == "?") - verb="asks" - - return verb - /mob/living/carbon/human/handle_speech_problems(var/list/message_data) if(silent || (sdisabilities & MUTE)) message_data[1] = "" @@ -152,59 +132,72 @@ else . = ..(message_data) -/mob/living/carbon/human/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) +/mob/living/carbon/human/handle_message_mode(message_mode, list/message_pieces, verb, used_radios) switch(message_mode) if("intercom") - if(!src.restrained()) + if(!restrained()) for(var/obj/item/device/radio/intercom/I in view(1)) - I.talk_into(src, message, null, verb, speaking) + I.talk_into(src, message_pieces, null, verb) I.add_fingerprint(src) used_radios += I if("headset") - if(l_ear && istype(l_ear,/obj/item/device/radio)) - var/obj/item/device/radio/R = l_ear - R.talk_into(src,message,null,verb,speaking) - used_radios += l_ear - else if(r_ear && istype(r_ear,/obj/item/device/radio)) - var/obj/item/device/radio/R = r_ear - R.talk_into(src,message,null,verb,speaking) - used_radios += r_ear - if("right ear") - var/obj/item/device/radio/R - var/has_radio = 0 - if(r_ear && istype(r_ear,/obj/item/device/radio)) - R = r_ear - has_radio = 1 - if(r_hand && istype(r_hand, /obj/item/device/radio)) - R = r_hand - has_radio = 1 - if(has_radio) - R.talk_into(src,message,null,verb,speaking) - used_radios += R - if("left ear") - var/obj/item/device/radio/R - var/has_radio = 0 - if(l_ear && istype(l_ear,/obj/item/device/radio)) + var/obj/item/device/radio/R = null + if(isradio(l_ear)) R = l_ear - has_radio = 1 - if(l_hand && istype(l_hand,/obj/item/device/radio)) + if(R.talk_into(src, message_pieces, null, verb)) + used_radios += R + return + + if(isradio(r_ear)) + R = r_ear + if(R.talk_into(src, message_pieces, null, verb)) + used_radios += R + return + if("right ear") + var/obj/item/device/radio/R = null + if(isradio(r_ear)) + R = r_ear + if(isradio(r_hand)) + R = r_hand + if(istype(R)) + if(R.talk_into(src, message_pieces, null, verb)) + used_radios += R + if("left ear") + var/obj/item/device/radio/R = null + if(isradio(l_ear)) + R = l_ear + if(isradio(l_hand)) R = l_hand - has_radio = 1 - if(has_radio) - R.talk_into(src,message,null,verb,speaking) - used_radios += R + if(istype(R)) + if(R.talk_into(src, message_pieces, null, verb)) + used_radios += R else if(message_mode) - if(l_ear && istype(l_ear,/obj/item/device/radio)) - l_ear.talk_into(src,message, message_mode, verb, speaking) - used_radios += l_ear - else if(r_ear && istype(r_ear,/obj/item/device/radio)) - r_ear.talk_into(src,message, message_mode, verb, speaking) - used_radios += r_ear + if(isradio(l_ear)) + if(l_ear.talk_into(src, message_pieces, message_mode, verb)) + used_radios += l_ear + return + + if(isradio(r_ear)) + if(r_ear.talk_into(src, message_pieces, message_mode, verb)) + used_radios += r_ear /mob/living/carbon/human/handle_speech_sound() + var/list/returns[2] if(species.speech_sounds && prob(species.speech_chance)) - var/list/returns[2] returns[1] = sound(pick(species.speech_sounds)) returns[2] = 50 - return ..() + return returns + +/mob/living/carbon/human/binarycheck() + . = FALSE + var/obj/item/device/radio/headset/R = null + if(istype(l_ear, /obj/item/device/radio/headset)) + R = l_ear + if(R.translate_binary) + . = TRUE + + if(istype(r_ear, /obj/item/device/radio/headset)) + R = r_ear + if(R.translate_binary) + . = TRUE diff --git a/code/modules/mob/living/carbon/human/species/station/alraune.dm b/code/modules/mob/living/carbon/human/species/station/alraune.dm index ce04cbcef9..f55935ac9e 100644 --- a/code/modules/mob/living/carbon/human/species/station/alraune.dm +++ b/code/modules/mob/living/carbon/human/species/station/alraune.dm @@ -217,7 +217,7 @@ H.adjustFireLoss(-(light_amount * co2buff)) //this won't let you tank environmental damage from fire. MAYBE cold until your body temp drops. if(H.nutrition < (200 + 400*co2buff)) //if no CO2, a fully lit tile gives them 1/tick up to 200. With CO2, potentially up to 600. - H.nutrition += (light_amount*(1+co2buff*5)) + H.adjust_nutrition(light_amount*(1+co2buff*5)) // Too much poison in the air. if(toxins_pp > safe_toxins_max) @@ -357,7 +357,7 @@ var/short_emote_descriptor = list("picks", "grabs") var/self_emote_descriptor = list("grab", "pick", "snatch") var/fruit_type = "apple" - var/mob/organ_owner = null + var/mob/living/organ_owner = null var/gen_cost = 0.5 /obj/item/organ/internal/fruitgland/New() @@ -382,7 +382,7 @@ to_chat(organ_owner, "[pick(full_message)]") /obj/item/organ/internal/fruitgland/proc/do_generation() - organ_owner.nutrition -= gen_cost + organ_owner.adjust_nutrition(-gen_cost) for(var/reagent in generated_reagents) reagents.add_reagent(reagent, generated_reagents[reagent]) @@ -417,7 +417,7 @@ set src in view(1) //do_reagent_implant(usr) - if(!isliving(usr) || !usr.canClick()) + if(!isliving(usr) || !usr.checkClickCooldown()) return if(usr.incapacitated() || usr.stat > CONSCIOUS) 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 915c5cdb27..ae3cbec73a 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm @@ -30,8 +30,8 @@ var/datum/species/shapeshifter/promethean/prometheans spawn_flags = SPECIES_CAN_JOIN health_hud_intensity = 2 num_alternate_languages = 3 - species_language = LANGUAGE_SOL_COMMON - secondary_langs = list(LANGUAGE_SOL_COMMON) // For some reason, having this as their species language does not allow it to be chosen. + species_language = LANGUAGE_PROMETHEAN + secondary_langs = list(LANGUAGE_PROMETHEAN, LANGUAGE_SOL_COMMON) // For some reason, having this as their species language does not allow it to be chosen. assisted_langs = list(LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) // Prometheans are weird, let's just assume they can use basically any language. breath_type = null @@ -187,32 +187,34 @@ var/datum/species/shapeshifter/promethean/prometheans if(!(H.shoes || (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)))) for(var/obj/O in T) O.clean_blood() - H.nutrition = min(500, max(0, H.nutrition + rand(5, 15))) + H.adjust_nutrition(rand(5, 15)) if (istype(T, /turf/simulated)) var/turf/simulated/S = T T.clean_blood() S.dirt = 0 - H.nutrition = max(H.nutrition, min(500, H.nutrition + rand(15, 30))) //VOREStation Edit: Gives nutrition up to a point instead of being capped + //VOREStation Edit Start + H.adjust_nutrition(H.nutrition < 500 ? rand(15, 30) : 0) if(H.clean_blood(1)) - H.nutrition = max(H.nutrition, min(500, H.nutrition + rand(15, 30))) //VOREStation Edit: Gives nutrition up to a point instead of being capped + H.adjust_nutrition(H.nutrition < 500 ? rand(15, 30) : 0) if(H.r_hand) if(H.r_hand.clean_blood()) - H.nutrition = max(H.nutrition, min(500, H.nutrition + rand(15, 30))) //VOREStation Edit: Gives nutrition up to a point instead of being capped + H.adjust_nutrition(H.nutrition < 500 ? rand(15, 30) : 0) if(H.l_hand) if(H.l_hand.clean_blood()) - H.nutrition = max(H.nutrition, min(500, H.nutrition + rand(15, 30))) //VOREStation Edit: Gives nutrition up to a point instead of being capped + H.adjust_nutrition(H.nutrition < 500 ? rand(15, 30) : 0) if(H.head) if(H.head.clean_blood()) H.update_inv_head(0) - H.nutrition = max(H.nutrition, min(500, H.nutrition + rand(15, 30))) //VOREStation Edit: Gives nutrition up to a point instead of being capped + H.adjust_nutrition(H.nutrition < 500 ? rand(15, 30) : 0) if(H.wear_suit) if(H.wear_suit.clean_blood()) H.update_inv_wear_suit(0) - H.nutrition = max(H.nutrition, min(500, H.nutrition + rand(15, 30))) //VOREStation Edit: Gives nutrition up to a point instead of being capped + H.adjust_nutrition(H.nutrition < 500 ? rand(15, 30) : 0) if(H.w_uniform) if(H.w_uniform.clean_blood()) H.update_inv_w_uniform(0) - H.nutrition = max(H.nutrition, min(500, H.nutrition + rand(15, 30))) //VOREStation Edit: Gives nutrition up to a point instead of being capped + H.adjust_nutrition(H.nutrition < 500 ? rand(15, 30) : 0) + //VOREStation Edit End //End cleaning code. var/datum/gas_mixture/environment = T.return_air() @@ -295,8 +297,7 @@ var/datum/species/shapeshifter/promethean/prometheans if(ToxReg) strain_negation += to_pay * max(0, (1 - ToxReg.get_strain_percent())) - H.nutrition -= (3 * nutrition_cost) //Costs Nutrition when damage is being repaired, corresponding to the amount of damage being repaired. - H.nutrition = max(0, H.nutrition) //Ensure it's not below 0. + H.adjust_nutrition(-(3 * nutrition_cost)) // Costs Nutrition when damage is being repaired, corresponding to the amount of damage being repaired. var/agony_to_apply = ((1 / starve_mod) * (nutrition_cost - strain_negation)) //Regenerating damage causes minor pain over time, if the organs responsible are nonexistant or too high on strain. Small injures will be no issue, large ones will cause problems. diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm index da27a9aace..ebcb37ff45 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm @@ -79,6 +79,9 @@ healing.expire() return ..() +/mob/living/simple_mob/protean_blob/speech_bubble_appearance() + return "synthetic" + /mob/living/simple_mob/protean_blob/init_vore() return //Don't make a random belly, don't waste your time @@ -242,6 +245,10 @@ // Helpers - Unsafe, WILL perform change. /mob/living/carbon/human/proc/nano_intoblob() + var/panel_was_up = FALSE + if(client?.statpanel == "Protean") + panel_was_up = TRUE + handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better. remove_micros(src, src) //Living things don't fare well in roblobs. if(buckled) @@ -312,6 +319,10 @@ B.forceMove(blob) B.owner = blob + //Flip them to the protean panel + if(panel_was_up) + client?.statpanel = "Protean" + //Return our blob in case someone wants it return blob @@ -325,6 +336,11 @@ /mob/living/carbon/human/proc/nano_outofblob(var/mob/living/simple_mob/protean_blob/blob) if(!istype(blob)) return + + var/panel_was_up = FALSE + if(client?.statpanel == "Protean") + panel_was_up = TRUE + if(buckled) buckled.unbuckle_mob() if(LAZYLEN(buckled_mobs)) @@ -375,5 +391,9 @@ //Get rid of friend blob qdel(blob) + //Flip them to the protean panel + if(panel_was_up) + client?.statpanel = "Protean" + //Return ourselves in case someone wants it return src diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm index 4d5ce6d102..dfcb66dcb7 100755 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm @@ -321,7 +321,7 @@ owner = 1 if(new_name) src.name += " ([new_name])" - desc += "\nVALID THROUGH END OF: [time2text(world.timeofday, "Month") +" "+ num2text(text2num(time2text(world.timeofday, "YYYY"))+544)]\nREGISTRANT: [new_name]" + desc += "\nVALID THROUGH END OF: [time2text(world.timeofday, "Month") +" "+ num2text(text2num(time2text(world.timeofday, "YYYY"))+300)]\nREGISTRANT: [new_name]" #undef DAM_SCALE_FACTOR #undef METAL_PER_TICK \ No newline at end of file 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 4337cc1684..c9c63ce5b3 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -540,10 +540,9 @@ genders = list(PLURAL) /datum/species/diona/can_understand(var/mob/other) - var/mob/living/carbon/alien/diona/D = other - if(istype(D)) - return 1 - return 0 + if(istype(other, /mob/living/carbon/alien/diona)) + return TRUE + return FALSE /datum/species/diona/equip_survival_gear(var/mob/living/carbon/human/H) if(H.backbag == 1) @@ -595,11 +594,9 @@ if(isturf(H.loc)) //else, there's considered to be no light var/turf/T = H.loc light_amount = T.get_lumcount() * 10 - H.nutrition += light_amount + H.adjust_nutrition(light_amount) H.shock_stage -= light_amount - if(H.nutrition > 450) - H.nutrition = 450 if(light_amount >= 3) //if there's enough light, heal H.adjustBruteLoss(-(round(light_amount/2))) H.adjustFireLoss(-(round(light_amount/2))) diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index 7826954e37..fa6bed5c10 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -390,7 +390,7 @@ src.visible_message("[src] suddenly extends their fangs and plunges them down into [B]'s neck!") B.apply_damage(5, BRUTE, BP_HEAD) //You're getting fangs pushed into your neck. What do you expect???? B.drip(80) //Remove enough blood to make them a bit woozy, but not take oxyloss. - src.nutrition += 400 + adjust_nutrition(400) sleep(50) B.drip(1) sleep(50) @@ -836,7 +836,7 @@ if(!C.anchored && !C.pulledby) //Not currently anchored, and not pulled by anyone. C.anchored = 1 //This is the only way to stop the inertial_drift. - C.nutrition -= 10 + C.adjust_nutrition(-25) update_floating() to_chat(C, "You hover in place.") spawn(6) //.6 seconds. diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm index 39ba3b9de2..07e9f8d3ed 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm @@ -376,7 +376,7 @@ icobase_tail = 1 inherent_verbs = list( - /mob/proc/weaveWebBindings) + /mob/living/proc/weaveWebBindings) min_age = 18 max_age = 80 diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm index 543acb842f..f9c68c331f 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm @@ -121,9 +121,7 @@ if(check_alien_ability(50,1,O_RESIN)) visible_message("[src] has planted some alien weeds!") - var/obj/O = new /obj/effect/alien/weeds/node(loc) - if(O) - O.color = "#321D37" + new /obj/effect/alien/weeds/node(get_turf(src), "#321D37") return /mob/living/carbon/human/proc/Spit(var/atom/A) diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm index 8a72f6ecf8..4809853f00 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm @@ -86,11 +86,9 @@ return "alien [caste_name] ([alien_number])" /datum/species/xenos/can_understand(var/mob/other) - - if(istype(other,/mob/living/carbon/alien/larva)) - return 1 - - return 0 + if(istype(other, /mob/living/carbon/alien/larva)) + return TRUE + return FALSE /datum/species/xenos/hug(var/mob/living/carbon/human/H,var/mob/living/target) H.visible_message("[H] caresses [target] with its scythe-like arm.", \ diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 4ae44d10de..e4162219fe 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -770,7 +770,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() var/obj/item/clothing/suit/suit = wear_suit var/suit_sprite - if(suit.index) + if(istype(suit) && suit.index) suit_sprite = "[INV_SUIT_DEF_ICON]_[suit.index].dmi" else if(istype(suit, /obj/item/clothing) && !isnull(suit.update_icon_define)) suit_sprite = suit.update_icon_define diff --git a/code/modules/mob/living/carbon/lick_wounds.dm b/code/modules/mob/living/carbon/lick_wounds.dm index a64788810d..90955cd402 100644 --- a/code/modules/mob/living/carbon/lick_wounds.dm +++ b/code/modules/mob/living/carbon/lick_wounds.dm @@ -78,7 +78,7 @@ "uses their tongue to disinfect \a [W.desc] on [M]'s [affecting.name].", "licks \a [W.desc] on [M]'s [affecting.name], cleaning it.")]", \ "You treat \a [W.desc] on [M]'s [affecting.name] with your antiseptic saliva." ) - nutrition -= 20 + adjust_nutrition(-20) W.salve() W.bandage() W.disinfect() diff --git a/code/modules/mob/living/carbon/metroid/death.dm b/code/modules/mob/living/carbon/metroid/death.dm deleted file mode 100644 index d5510ac509..0000000000 --- a/code/modules/mob/living/carbon/metroid/death.dm +++ /dev/null @@ -1,22 +0,0 @@ -/mob/living/carbon/slime/death(gibbed) - - if(stat == DEAD) return - - if(!gibbed && is_adult) - var/mob/living/carbon/slime/M = new /mob/living/carbon/slime(loc, colour) - M.rabid = 1 - M.Friends = Friends.Copy() - step_away(M, src) - is_adult = 0 - maxHealth = 150 - revive() - if (!client) rabid = 1 - number = rand(1, 1000) - name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])" - return - - . = ..(gibbed, "seizes up and falls limp...") - mood = null - regenerate_icons() - - return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/emote.dm b/code/modules/mob/living/carbon/metroid/emote.dm deleted file mode 100644 index 6fccaddb8f..0000000000 --- a/code/modules/mob/living/carbon/metroid/emote.dm +++ /dev/null @@ -1,99 +0,0 @@ -/mob/living/carbon/slime/emote(var/act, var/m_type=1, var/message = 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) - - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) - - var/updateicon = 0 - - switch(act) //Alphabetical please - if ("me") - if(silent) - return - if (src.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("bounce") - message = "The [src.name] bounces in place." - m_type = 1 - - if ("custom") - return custom_emote(m_type, message) - - if("jiggle") - message = "The [src.name] jiggles!" - m_type = 1 - - if("light") - message = "The [src.name] lights up for a bit, then stops." - m_type = 1 - - if("moan") - message = "The [src.name] moans." - m_type = 2 - - if("shiver") - message = "The [src.name] shivers." - m_type = 2 - - if("sway") - message = "The [src.name] sways around dizzily." - m_type = 1 - - if("twitch") - message = "The [src.name] twitches." - m_type = 1 - - if("vibrate") - message = "The [src.name] vibrates!" - m_type = 1 - - if("nomood") - mood = null - updateicon = 1 - - if("pout") - mood = "pout" - updateicon = 1 - - if("sad") - mood = "sad" - updateicon = 1 - - if("angry") - mood = "angry" - updateicon = 1 - - if("frown") - mood = "mischevous" - updateicon = 1 - - if("smile") - mood = ":3" - updateicon = 1 - - if ("help") //This is an exception - to_chat(src, "Help for slime emotes. You can use these emotes with say \"*emote\":\n\nbounce, custom, jiggle, light, moan, shiver, sway, twitch, vibrate. You can also set your face with: \n\nnomood, pout, sad, angry, frown, smile") - - else - to_chat(src, "Unusable emote '[act]'. Say *help for a list.") - if ((message && src.stat == 0)) - if (m_type & 1) - for(var/mob/O in viewers(src, null)) - O.show_message(message, m_type) - else - for(var/mob/O in hearers(src, null)) - O.show_message(message, m_type) - if(updateicon) - regenerate_icons() - return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/examine.dm b/code/modules/mob/living/carbon/metroid/examine.dm deleted file mode 100644 index 9e96e3257d..0000000000 --- a/code/modules/mob/living/carbon/metroid/examine.dm +++ /dev/null @@ -1,31 +0,0 @@ -/mob/living/carbon/slime/examine(mob/user) - ..(user) - var/msg = "" - if (src.stat == DEAD) - msg += "It is limp and unresponsive.\n" - else - if (src.getBruteLoss()) - msg += "" - if (src.getBruteLoss() < 40) - msg += "It has some punctures in its flesh!" - else - msg += "It has severe punctures and tears in its flesh!" - msg += "\n" - - switch(powerlevel) - - if(2 to 3) - msg += "It is flickering gently with a little electrical activity.\n" - - if(4 to 5) - msg += "It is glowing gently with moderate levels of electrical activity.\n" - - if(6 to 9) - msg += "It is glowing brightly with high levels of electrical activity.\n" - - if(10) - msg += "It is radiating with massive levels of electrical activity!\n" - - msg += "*---------*" - to_chat(user,msg) - return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/hud.dm b/code/modules/mob/living/carbon/metroid/hud.dm deleted file mode 100644 index da6729c3dc..0000000000 --- a/code/modules/mob/living/carbon/metroid/hud.dm +++ /dev/null @@ -1,2 +0,0 @@ -/mob/living/carbon/slime/handle_regular_hud_updates() - return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm deleted file mode 100644 index 7643ea3d2e..0000000000 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ /dev/null @@ -1,527 +0,0 @@ -/mob/living/carbon/slime/Life() - set invisibility = 0 - set background = 1 - - if (src.transforming) - return - - ..() - - if(stat != DEAD) - handle_nutrition() - - if (!client) - handle_targets() - if (!AIproc) - spawn() - handle_AI() - handle_speech_and_mood() - -/mob/living/carbon/slime/handle_environment(datum/gas_mixture/environment) - if(!environment) - adjustToxLoss(rand(10,20)) - return - - //var/environment_heat_capacity = environment.heat_capacity() - var/loc_temp = T0C - if(istype(get_turf(src), /turf/space)) - //environment_heat_capacity = loc:heat_capacity - var/turf/heat_turf = get_turf(src) - loc_temp = heat_turf.temperature - else if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) - loc_temp = loc:air_contents.temperature - else - loc_temp = environment.temperature - - bodytemperature += adjust_body_temperature(bodytemperature, loc_temp, 1) - - if(bodytemperature < (T0C + 5)) // start calculating temperature damage etc - if(bodytemperature <= hurt_temperature) - if(bodytemperature <= die_temperature) - adjustToxLoss(200) - else - // could be more fancy, but doesn't worth the complexity: when the slimes goes into a cold area - // the damage is mostly determined by how fast its body cools - adjustToxLoss(30) - - updatehealth() - - return //TODO: DEFERRED - -/mob/living/carbon/slime/proc/adjust_body_temperature(current, loc_temp, boost) - var/temperature = current - var/difference = abs(current-loc_temp) //get difference - var/increments// = difference/10 //find how many increments apart they are - if(difference > 50) - increments = difference/5 - else - increments = difference/10 - var/change = increments*boost // Get the amount to change by (x per increment) - var/temp_change - if(current < loc_temp) - temperature = min(loc_temp, temperature+change) - else if(current > loc_temp) - temperature = max(loc_temp, temperature-change) - temp_change = (temperature - current) - return temp_change - -/mob/living/carbon/slime/handle_chemicals_in_body() - chem_effects.Cut() - - if(touching) touching.metabolize() - if(ingested) ingested.metabolize() - if(bloodstr) bloodstr.metabolize() - - src.updatehealth() - - return //TODO: DEFERRED - -/mob/living/carbon/slime/handle_regular_status_updates() - - src.blinded = null - - health = getMaxHealth() - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss()) - - if(health < 0 && stat != DEAD) - death() - return - - if (halloss) - halloss = 0 - - if(prob(30)) - adjustOxyLoss(-1) - adjustToxLoss(-1) - adjustFireLoss(-1) - adjustCloneLoss(-1) - adjustBruteLoss(-1) - - if (src.stat == DEAD) - src.lying = 1 - src.blinded = 1 - else - if (src.paralysis || src.stunned || src.weakened || (status_flags & FAKEDEATH)) //Stunned etc. - if (src.stunned > 0) - src.set_stat(CONSCIOUS) - if (src.weakened > 0) - src.lying = 0 - src.set_stat(CONSCIOUS) - if (src.paralysis > 0) - src.blinded = 0 - src.lying = 0 - src.set_stat(CONSCIOUS) - - else - src.lying = 0 - src.set_stat(CONSCIOUS) - - if (src.stuttering) src.stuttering = 0 - - if (src.eye_blind) - SetBlinded(0) - src.blinded = 1 - - if (src.ear_deaf > 0) src.ear_deaf = 0 - if (src.ear_damage < 25) - src.ear_damage = 0 - - src.density = !( src.lying ) - - if (src.sdisabilities & BLIND) - src.blinded = 1 - if (src.sdisabilities & DEAF) - src.ear_deaf = 1 - - if (src.eye_blurry > 0) - src.eye_blurry = 0 - - if (src.druggy > 0) - src.druggy = 0 - - return 1 - -/mob/living/carbon/slime/proc/handle_nutrition() - - if (prob(15)) - nutrition -= 1 + is_adult - - if(nutrition <= 0) - nutrition = 0 - adjustToxLoss(rand(1,3)) - if (client && prob(5)) - to_chat(src, "You are starving!") - - else if (nutrition >= get_grow_nutrition() && amount_grown < 10) - nutrition -= 20 - amount_grown++ - -/mob/living/carbon/slime/proc/handle_targets() - if(attacked > 50) attacked = 50 // Let's not get into absurdly long periods of rage - - if(attacked > 0) - attacked-- - - if(Discipline > 0) - - if(Discipline >= 5 && rabid) - if(prob(60)) rabid = 0 - - if(prob(10)) - Discipline-- - - if(!canmove) return - - if(Victim) return // if it's eating someone already, continue eating! - - if(Target) - --target_patience - if (target_patience <= 0 || SStun || Discipline || attacked) // Tired of chasing or something draws out attention - target_patience = 0 - Target = null - - var/hungry = 0 // determines if the slime is hungry - - if (nutrition < get_starve_nutrition()) - hungry = 2 - else if (nutrition < get_grow_nutrition() && prob(25) || nutrition < get_hunger_nutrition()) - hungry = 1 - - if(hungry == 2 && !client) // if a slime is starving, it starts losing its friends - if(Friends.len > 0 && prob(1)) - var/mob/nofriend = pick(Friends) - if(nofriend && Friends[nofriend]) - Friends[nofriend] -= 1 - if (Friends[nofriend] <= 0) - Friends[nofriend] = null - Friends -= nofriend - Friends -= null - - if(!Target) - if(will_hunt(hungry) || attacked || rabid) // Only add to the list if we need to - var/list/targets = list() - - for(var/mob/living/L in view(7,src)) - - if(isslime(L) || L.stat == DEAD) // Ignore other slimes and dead mobs - continue - - if(L in Friends) // No eating friends! - continue - - if(issilicon(L) && (rabid || attacked)) // They can't eat silicons, but they can glomp them in defence - targets += L // Possible target found! - - if(istype(L, /mob/living/carbon/human) && dna) //Ignore slime(wo)men - var/mob/living/carbon/human/H = L - if(H.species.name == "Promethean") - continue - - if(!L.canmove) // Only one slime can latch on at a time. - var/notarget = 0 - for(var/mob/living/carbon/slime/M in view(1,L)) - if(M.Victim == L) - notarget = 1 - if(notarget) - continue - - targets += L // Possible target found! - - if(targets.len > 0) - if(attacked || rabid || hungry == 2) - Target = targets[1] // I am attacked and am fighting back or so hungry I don't even care - else - for(var/mob/living/carbon/C in targets) - if(ishuman(C) && !Discipline && prob(5)) - Target = C - break - - if(isalien(C) || issmall(C) || isanimal(C)) - Target = C - break - - if (Target) - target_patience = rand(5,7) - if (is_adult) - target_patience += 3 - - if(!Target) // If we have no target, we are wandering or following orders - if (Leader) - if (holding_still) - holding_still = max(holding_still - 1, 0) - else if(canmove && isturf(loc)) - step_to(src, Leader) - - else if(hungry) - if (holding_still) - holding_still = max(holding_still - 1 - hungry, 0) - else if(canmove && isturf(loc) && prob(50)) - step(src, pick(cardinal)) - - else - if (holding_still) - holding_still = max(holding_still - 1, 0) - else if(canmove && isturf(loc) && prob(33)) - step(src, pick(cardinal)) - -/mob/living/carbon/slime/proc/handle_AI() // the master AI process - - if(stat == DEAD || client || Victim) return // If we're dead or have a client, we don't need AI, if we're feeding, we continue feeding - AIproc = 1 - - if(amount_grown >= 10 && !Target) - if(is_adult) - Reproduce() - else - Evolve() - AIproc = 0 - return - - if(Target) // We're chasing the target - if(Target.stat == DEAD) - Target = null - AIproc = 0 - return - - for(var/mob/living/carbon/slime/M in view(1, Target)) - if(M.Victim == Target) - Target = null - AIproc = 0 - return - - if(Target.Adjacent(src)) - if(istype(Target, /mob/living/silicon)) // Glomp the silicons - if(!Atkcool) - a_intent = I_HURT - UnarmedAttack(Target) - Atkcool = 1 - spawn(45) - Atkcool = 0 - AIproc = 0 - return - - if(Target.client && !Target.lying && prob(60 + powerlevel * 4)) // Try to take down the target first - if(!Atkcool) - Atkcool = 1 - spawn(45) - Atkcool = 0 - - a_intent = I_DISARM - UnarmedAttack(Target) - - else - if(!Atkcool) - a_intent = I_GRAB - UnarmedAttack(Target) - - else if(Target in view(7, src)) - step_to(src, Target) - - else - Target = null - AIproc = 0 - return - - else - var/mob/living/carbon/slime/frenemy - for (var/mob/living/carbon/slime/S in view(1, src)) - if (S != src) - frenemy = S - if (frenemy && prob(1)) - if (frenemy.colour == colour) - a_intent = I_HELP - else - a_intent = I_HURT - UnarmedAttack(frenemy) - - var/sleeptime = movement_delay() - if(sleeptime <= 5) sleeptime = 5 // Maximum one action per half a second - spawn (sleeptime) - handle_AI() - return - -/mob/living/carbon/slime/proc/handle_speech_and_mood() - //Mood starts here - var/newmood = "" - a_intent = I_HELP - if (rabid || attacked) - newmood = "angry" - a_intent = I_HURT - else if (Target) newmood = "mischevous" - - if (!newmood) - if (Discipline && prob(25)) - newmood = "pout" - else if (prob(1)) - newmood = pick("sad", ":3", "pout") - - if ((mood == "sad" || mood == ":3" || mood == "pout") && !newmood) - if (prob(75)) newmood = mood - - if (newmood != mood) // This is so we don't redraw them every time - mood = newmood - regenerate_icons() - - //Speech understanding starts here - var/to_say - if (speech_buffer.len > 0) - var/who = speech_buffer[1] // Who said it? - var/phrase = speech_buffer[2] // What did they say? - if ((findtext(phrase, num2text(number)) || findtext(phrase, "slimes"))) // Talking to us - if (findtext(phrase, "hello") || findtext(phrase, "hi")) - to_say = pick("Hello...", "Hi...") - else if (findtext(phrase, "follow")) - if (Leader) - if (Leader == who) // Already following him - to_say = pick("Yes...", "Lead...", "Following...") - else if (Friends[who] > Friends[Leader]) // VIVA - Leader = who - to_say = "Yes... I follow [who]..." - else - to_say = "No... I follow [Leader]..." - else - if (Friends[who] > 2) - Leader = who - to_say = "I follow..." - else // Not friendly enough - to_say = pick("No...", "I won't follow...") - else if (findtext(phrase, "stop")) - if (Victim) // We are asked to stop feeding - if (Friends[who] > 4) - Victim = null - Target = null - if (Friends[who] < 7) - --Friends[who] - to_say = "Grrr..." // I'm angry but I do it - else - to_say = "Fine..." - else if (Target) // We are asked to stop chasing - if (Friends[who] > 3) - Target = null - if (Friends[who] < 6) - --Friends[who] - to_say = "Grrr..." // I'm angry but I do it - else - to_say = "Fine..." - else if (Leader) // We are asked to stop following - if (Leader == who) - to_say = "Yes... I'll stay..." - Leader = null - else - if (Friends[who] > Friends[Leader]) - Leader = null - to_say = "Yes... I'll stop..." - else - to_say = "No... I'll keep following..." - else if (findtext(phrase, "stay")) - if (Leader) - if (Leader == who) - holding_still = Friends[who] * 10 - to_say = "Yes... Staying..." - else if (Friends[who] > Friends[Leader]) - holding_still = (Friends[who] - Friends[Leader]) * 10 - to_say = "Yes... Staying..." - else - to_say = "No... I'll keep following..." - else - if (Friends[who] > 2) - holding_still = Friends[who] * 10 - to_say = "Yes... Staying..." - else - to_say = "No... I won't stay..." - speech_buffer = list() - - //Speech starts here - if (to_say) - say (to_say) - else if(prob(1)) - emote(pick("bounce","sway","light","vibrate","jiggle")) - else - var/t = 10 - var/slimes_near = -1 // Don't count myself - var/dead_slimes = 0 - var/friends_near = list() - for (var/mob/living/carbon/M in view(7,src)) - if (isslime(M)) - ++slimes_near - if (M.stat == DEAD) - ++dead_slimes - if (M in Friends) - t += 20 - friends_near += M - if (nutrition < get_hunger_nutrition()) t += 10 - if (nutrition < get_starve_nutrition()) t += 10 - if (prob(2) && prob(t)) - var/phrases = list() - if (Target) phrases += "[Target]... looks tasty..." - if (nutrition < get_starve_nutrition()) - phrases += "So... hungry..." - phrases += "Very... hungry..." - phrases += "Need... food..." - phrases += "Must... eat..." - else if (nutrition < get_hunger_nutrition()) - phrases += "Hungry..." - phrases += "Where is the food?" - phrases += "I want to eat..." - phrases += "Rawr..." - phrases += "Blop..." - phrases += "Blorble..." - if (rabid || attacked) - phrases += "Hrr..." - phrases += "Nhuu..." - phrases += "Unn..." - if (mood == ":3") - phrases += "Purr..." - if (attacked) - phrases += "Grrr..." - if (getToxLoss() > 30) - phrases += "Cold..." - if (getToxLoss() > 60) - phrases += "So... cold..." - phrases += "Very... cold..." - if (getToxLoss() > 90) - phrases += "..." - phrases += "C... c..." - if (Victim) - phrases += "Nom..." - phrases += "Tasty..." - if (powerlevel > 3) phrases += "Bzzz..." - if (powerlevel > 5) phrases += "Zap..." - if (powerlevel > 8) phrases += "Zap... Bzz..." - if (mood == "sad") phrases += "Bored..." - if (slimes_near) phrases += "Brother..." - if (slimes_near > 1) phrases += "Brothers..." - if (dead_slimes) phrases += "What happened?" - if (!slimes_near) - phrases += "Lonely..." - for (var/M in friends_near) - phrases += "[M]... friend..." - if (nutrition < get_hunger_nutrition()) - phrases += "[M]... feed me..." - say (pick(phrases)) - -/mob/living/carbon/slime/proc/get_max_nutrition() // Can't go above it - if (is_adult) return 1200 - else return 1000 - -/mob/living/carbon/slime/proc/get_grow_nutrition() // Above it we grow, below it we can eat - if (is_adult) return 1000 - else return 800 - -/mob/living/carbon/slime/proc/get_hunger_nutrition() // Below it we will always eat - if (is_adult) return 600 - else return 500 - -/mob/living/carbon/slime/proc/get_starve_nutrition() // Below it we will eat before everything else - if (is_adult) return 300 - else return 200 - -/mob/living/carbon/slime/proc/will_hunt(var/hunger) // Check for being stopped from feeding and chasing - if (hunger == 2 || rabid || attacked) return 1 - if (Leader) return 0 - if (holding_still) return 0 - if (hunger == 1 || prob(25)) - return 1 - return 0 - -/mob/living/carbon/slime/slip() //Can't slip something without legs. - return 0 diff --git a/code/modules/mob/living/carbon/metroid/login.dm b/code/modules/mob/living/carbon/metroid/login.dm deleted file mode 100644 index 8ca29bf481..0000000000 --- a/code/modules/mob/living/carbon/metroid/login.dm +++ /dev/null @@ -1,4 +0,0 @@ -/mob/living/carbon/slime/Login() - ..() - update_hud() - return diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm deleted file mode 100644 index a871d7e3ac..0000000000 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ /dev/null @@ -1,384 +0,0 @@ -/mob/living/carbon/slime - name = "baby slime" - icon = 'icons/mob/slimes.dmi' - icon_state = "grey baby slime" - pass_flags = PASSTABLE - var/is_adult = 0 - speak_emote = list("chirps") - - plane = MOB_PLANE - layer = ABOVE_MOB_LAYER - maxHealth = 150 - health = 150 - gender = NEUTER - - update_icon = 0 - nutrition = 700 - - see_in_dark = 8 - update_slimes = 0 - - // canstun and canweaken don't affect slimes because they ignore stun and weakened variables - // for the sake of cleanliness, though, here they are. - status_flags = CANPARALYSE|CANPUSH - - var/cores = 1 // the number of /obj/item/slime_extract's the slime has left inside - var/mutation_chance = 30 // Chance of mutating, should be between 25 and 35 - - var/powerlevel = 0 // 0-10 controls how much electricity they are generating - var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows or reproduces - - var/number = 0 // Used to understand when someone is talking to it - - var/mob/living/Victim = null // the person the slime is currently feeding on - var/mob/living/Target = null // AI variable - tells the slime to hunt this down - var/mob/living/Leader = null // AI variable - tells the slime to follow this person - - var/attacked = 0 // Determines if it's been attacked recently. Can be any number, is a cooloff-ish variable - var/rabid = 0 // If set to 1, the slime will attack and eat anything it comes in contact with - var/holding_still = 0 // AI variable, cooloff-ish for how long it's going to stay in one place - var/target_patience = 0 // AI variable, cooloff-ish for how long it's going to follow its target - - var/list/Friends = list() // A list of friends; they are not considered targets for feeding; passed down after splitting - - var/list/speech_buffer = list() // Last phrase said near it and person who said it - - var/mood = "" // To show its face - - var/AIproc = 0 // If it's 0, we need to launch an AI proc - var/Atkcool = 0 // attack cooldown - var/SStun = 0 // NPC stun variable. Used to calm them down when they are attacked while feeding, or they will immediately re-attach - var/Discipline = 0 // if a slime has been hit with a freeze gun, or wrestled/attacked off a human, they become disciplined and don't attack anymore for a while. The part about freeze gun is a lie - - var/hurt_temperature = T0C-50 // slime keeps taking damage when its bodytemperature is below this - var/die_temperature = 50 // slime dies instantly when its bodytemperature is below this - - ///////////TIME FOR SUBSPECIES - - var/colour = "grey" - var/coretype = /obj/item/slime_extract/grey - var/list/slime_mutation[4] - - var/core_removal_stage = 0 //For removing cores. - -/mob/living/carbon/slime/New(var/location, var/colour="grey") - - verbs += /mob/living/proc/ventcrawl - - src.colour = colour - number = rand(1, 1000) - name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])" - real_name = name - slime_mutation = mutation_table(colour) - mutation_chance = rand(25, 35) - var/sanitizedcolour = replacetext(colour, " ", "") - coretype = text2path("/obj/item/slime_extract/[sanitizedcolour]") - regenerate_icons() - ..(location) - -/mob/living/carbon/slime/movement_delay() - if (bodytemperature >= 330.23) // 135 F - return -1 // slimes become supercharged at high temperatures - - var/tally = 0 - - var/health_deficiency = (getMaxHealth() - health) - if(health_deficiency >= 30) tally += (health_deficiency / 25) - - if (bodytemperature < 183.222) - tally += (283.222 - bodytemperature) / 10 * 1.75 - - if(reagents) - if(reagents.has_reagent("hyperzine")) // Hyperzine slows slimes down - tally *= 2 - - if(reagents.has_reagent("frostoil")) // Frostoil also makes them move VEEERRYYYYY slow - tally *= 5 - - if(health <= 0) // if damaged, the slime moves twice as slow - tally *= 2 - - return tally + config.slime_delay - -/mob/living/carbon/slime/Bump(atom/movable/AM as mob|obj, yes) - if ((!(yes) || now_pushing)) - return - now_pushing = 1 - - if(isobj(AM) && !client && powerlevel > 0) - var/probab = 10 - switch(powerlevel) - if(1 to 2) probab = 20 - if(3 to 4) probab = 30 - if(5 to 6) probab = 40 - if(7 to 8) probab = 60 - if(9) probab = 70 - if(10) probab = 95 - if(prob(probab)) - if(istype(AM, /obj/structure/window) || istype(AM, /obj/structure/grille)) - if(nutrition <= get_hunger_nutrition() && !Atkcool) - if (is_adult || prob(5)) - UnarmedAttack(AM) - Atkcool = 1 - spawn(45) - Atkcool = 0 - - if(ismob(AM)) - var/mob/tmob = AM - - if(is_adult) - if(istype(tmob, /mob/living/carbon/human)) - if(prob(90)) - now_pushing = 0 - return - else - if(istype(tmob, /mob/living/carbon/human)) - now_pushing = 0 - return - - now_pushing = 0 - - ..() - -/mob/living/carbon/slime/Process_Spacemove() - return 2 - -/mob/living/carbon/slime/Stat() - ..() - - statpanel("Status") - stat(null, "Health: [round((health / getMaxHealth()) * 100)]%") - stat(null, "Intent: [a_intent]") - - if (client.statpanel == "Status") - stat(null, "Nutrition: [nutrition]/[get_max_nutrition()]") - if(amount_grown >= 10) - if(is_adult) - stat(null, "You can reproduce!") - else - stat(null, "You can evolve!") - - stat(null,"Power Level: [powerlevel]") - -/mob/living/carbon/slime/adjustFireLoss(amount) - ..(-abs(amount)) // Heals them - return - -/mob/living/carbon/slime/bullet_act(var/obj/item/projectile/Proj) - attacked += 10 - ..(Proj) - return 0 - -/mob/living/carbon/slime/emp_act(severity) - powerlevel = 0 // oh no, the power! - ..() - -/mob/living/carbon/slime/ex_act(severity) - ..() - - var/b_loss = null - var/f_loss = null - switch (severity) - if (1.0) - qdel(src) - return - - if (2.0) - - b_loss += 60 - f_loss += 60 - - - if(3.0) - b_loss += 30 - - adjustBruteLoss(b_loss) - adjustFireLoss(f_loss) - - updatehealth() - - -/mob/living/carbon/slime/u_equip(obj/item/W as obj) - return - -/mob/living/carbon/slime/attack_ui(slot) - return - -/mob/living/carbon/slime/attack_hand(mob/living/carbon/human/M as mob) - - ..() - - if(Victim) - if(Victim == M) - if(prob(60)) - visible_message("[M] attempts to wrestle \the [name] off!") - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - - else - visible_message(" [M] manages to wrestle \the [name] off!") - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - - if(prob(90) && !client) - Discipline++ - - SStun = 1 - spawn(rand(45,60)) - SStun = 0 - - Victim = null - anchored = 0 - step_away(src,M) - - return - - else - if(prob(30)) - visible_message("[M] attempts to wrestle \the [name] off of [Victim]!") - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - - else - visible_message(" [M] manages to wrestle \the [name] off of [Victim]!") - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - - if(prob(80) && !client) - Discipline++ - - if(!is_adult) - if(Discipline == 1) - attacked = 0 - - SStun = 1 - spawn(rand(55,65)) - SStun = 0 - - Victim = null - anchored = 0 - step_away(src,M) - - return - - switch(M.a_intent) - - if (I_HELP) - help_shake_act(M) - - if (I_GRAB) - if (M == src || anchored) - return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src) - - M.put_in_active_hand(G) - - G.synch() - - LAssailant = M - - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message("[M] has grabbed [src] passively!") - - else - - var/damage = rand(1, 9) - - attacked += 10 - if (prob(90)) - if (HULK in M.mutations) - damage += 5 - if(Victim || Target) - Victim = null - Target = null - anchored = 0 - if(prob(80) && !client) - Discipline++ - spawn(0) - step_away(src,M,15) - sleep(3) - step_away(src,M,15) - - playsound(loc, "punch", 25, 1, -1) - visible_message("[M] has punched [src]!", \ - "[M] has punched [src]!") - - adjustBruteLoss(damage) - updatehealth() - else - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("[M] has attempted to punch [src]!") - return - -/mob/living/carbon/slime/attackby(obj/item/W, mob/user) - if(W.force > 0) - attacked += 10 - if(prob(25)) - to_chat(user, "[W] passes right through [src]!") - return - if(Discipline && prob(50)) // wow, buddy, why am I getting attacked?? - Discipline = 0 - if(W.force >= 3) - if(is_adult) - if(prob(5 + round(W.force/2))) - if(Victim || Target) - if(prob(80) && !client) - Discipline++ - - Victim = null - Target = null - anchored = 0 - - SStun = 1 - spawn(rand(5,20)) - SStun = 0 - - spawn(0) - if(user) - canmove = 0 - step_away(src, user) - if(prob(25 + W.force)) - sleep(2) - if(user) - step_away(src, user) - canmove = 1 - - else - if(prob(10 + W.force*2)) - if(Victim || Target) - if(prob(80) && !client) - Discipline++ - if(Discipline == 1) - attacked = 0 - SStun = 1 - spawn(rand(5,20)) - SStun = 0 - - Victim = null - Target = null - anchored = 0 - - spawn(0) - if(user) - canmove = 0 - step_away(src, user) - if(prob(25 + W.force*4)) - sleep(2) - if(user) - step_away(src, user) - canmove = 1 - ..() - -/mob/living/carbon/slime/restrained() - return 0 - -/mob/living/carbon/slime/var/co2overloadtime = null -/mob/living/carbon/slime/var/temperature_resistance = T0C+75 - -/mob/living/carbon/slime/toggle_throw_mode() - return - -/mob/living/carbon/slime/proc/gain_nutrition(var/amount) - nutrition += amount - if(prob(amount * 2)) // Gain around one level per 50 nutrition - powerlevel++ - if(powerlevel > 10) - powerlevel = 10 - adjustToxLoss(-10) - nutrition = max(nutrition, get_max_nutrition()) diff --git a/code/modules/mob/living/carbon/metroid/say.dm b/code/modules/mob/living/carbon/metroid/say.dm deleted file mode 100644 index 7c7ad76240..0000000000 --- a/code/modules/mob/living/carbon/metroid/say.dm +++ /dev/null @@ -1,39 +0,0 @@ -/mob/living/carbon/slime/say(var/message) - - message = sanitize(message) - - var/verb = say_quote(message) - - if(copytext(message,1,2) == "*") - return emote(copytext(message,2)) - - return ..(message, null, verb) - -/mob/living/carbon/slime/say_quote(var/text) - var/ending = copytext(text, length(text)) - - if (ending == "?") - return "asks"; - else if (ending == "!") - return "cries"; - - return "chirps"; - -/mob/living/carbon/slime/say_understands(var/other) - if (istype(other, /mob/living/carbon/slime)) - return 1 - return ..() - -/mob/living/carbon/slime/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) - if (speaker in Friends) - speech_buffer = list() - speech_buffer.Add(speaker) - speech_buffer.Add(lowertext(html_decode(message))) - ..() - -/mob/living/carbon/slime/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0, var/vname ="") - if (speaker in Friends) - speech_buffer = list() - speech_buffer.Add(speaker) - speech_buffer.Add(lowertext(html_decode(message))) - ..() diff --git a/code/modules/mob/living/carbon/metroid/subtypes.dm b/code/modules/mob/living/carbon/metroid/subtypes.dm deleted file mode 100644 index 6aa75990ac..0000000000 --- a/code/modules/mob/living/carbon/metroid/subtypes.dm +++ /dev/null @@ -1,79 +0,0 @@ -/mob/living/carbon/slime/proc/mutation_table(var/colour) - var/list/slime_mutation[4] - switch(colour) - //Tier 1 - if("grey") - slime_mutation[1] = "orange" - slime_mutation[2] = "metal" - slime_mutation[3] = "blue" - slime_mutation[4] = "purple" - //Tier 2 - if("purple") - slime_mutation[1] = "dark purple" - slime_mutation[2] = "dark blue" - slime_mutation[3] = "green" - slime_mutation[4] = "green" - if("metal") - slime_mutation[1] = "silver" - slime_mutation[2] = "yellow" - slime_mutation[3] = "gold" - slime_mutation[4] = "gold" - if("orange") - slime_mutation[1] = "dark purple" - slime_mutation[2] = "yellow" - slime_mutation[3] = "red" - slime_mutation[4] = "red" - if("blue") - slime_mutation[1] = "dark blue" - slime_mutation[2] = "silver" - slime_mutation[3] = "pink" - slime_mutation[4] = "pink" - //Tier 3 - if("dark blue") - slime_mutation[1] = "purple" - slime_mutation[2] = "purple" - slime_mutation[3] = "blue" - slime_mutation[4] = "blue" - if("dark purple") - slime_mutation[1] = "purple" - slime_mutation[2] = "purple" - slime_mutation[3] = "orange" - slime_mutation[4] = "orange" - if("yellow") - slime_mutation[1] = "metal" - slime_mutation[2] = "metal" - slime_mutation[3] = "orange" - slime_mutation[4] = "orange" - if("silver") - slime_mutation[1] = "metal" - slime_mutation[2] = "metal" - slime_mutation[3] = "blue" - slime_mutation[4] = "blue" - //Tier 4 - if("pink") - slime_mutation[1] = "pink" - slime_mutation[2] = "pink" - slime_mutation[3] = "light pink" - slime_mutation[4] = "light pink" - if("red") - slime_mutation[1] = "red" - slime_mutation[2] = "red" - slime_mutation[3] = "oil" - slime_mutation[4] = "oil" - if("gold") - slime_mutation[1] = "gold" - slime_mutation[2] = "gold" - slime_mutation[3] = "adamantine" - slime_mutation[4] = "adamantine" - if("green") - slime_mutation[1] = "green" - slime_mutation[2] = "green" - slime_mutation[3] = "black" - slime_mutation[4] = "black" - // Tier 5 - else - slime_mutation[1] = colour - slime_mutation[2] = colour - slime_mutation[3] = colour - slime_mutation[4] = colour - return(slime_mutation) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/update_icons.dm b/code/modules/mob/living/carbon/metroid/update_icons.dm deleted file mode 100644 index 847dcaeb18..0000000000 --- a/code/modules/mob/living/carbon/metroid/update_icons.dm +++ /dev/null @@ -1,9 +0,0 @@ -/mob/living/carbon/slime/regenerate_icons() - if (stat == DEAD) - icon_state = "[colour] baby slime dead" - else - icon_state = "[colour] [is_adult ? "adult" : "baby"] slime[Victim ? "" : " eat"]" - overlays.len = 0 - if (mood) - overlays += image('icons/mob/slimes.dmi', icon_state = "aslime-[mood]") - ..() \ No newline at end of file diff --git a/code/modules/mob/living/default_language.dm b/code/modules/mob/living/default_language.dm index 94b08207b8..eefe4929f9 100644 --- a/code/modules/mob/living/default_language.dm +++ b/code/modules/mob/living/default_language.dm @@ -10,7 +10,7 @@ return 0 if(language == GLOB.all_languages[src.species_language]) - to_chat(src, "You will now speak your standard default language, [language], if you do not specify a language when speaking.") + to_chat(src, "You will now speak your standard default language, [language ? language : "common"], if you do not specify a language when speaking.") else if (language) if(language && !can_speak(language)) diff --git a/code/modules/mob/living/inventory.dm b/code/modules/mob/living/inventory.dm index 22db034374..94c86ae2ba 100644 --- a/code/modules/mob/living/inventory.dm +++ b/code/modules/mob/living/inventory.dm @@ -127,49 +127,37 @@ onclose(user, "mob[name]") return -/mob/living/ret_grab(obj/effect/list_container/mobl/L as obj, flag) - if ((!( istype(l_hand, /obj/item/weapon/grab) ) && !( istype(r_hand, /obj/item/weapon/grab) ))) - if (!( L )) - return null - else - return L.container - else - if (!( L )) - L = new /obj/effect/list_container/mobl( null ) - L.container += src - L.master = src - if (istype(l_hand, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = l_hand - if (!( L.container.Find(G.affecting) )) - L.container += G.affecting - if (G.affecting) - G.affecting.ret_grab(L, 1) - if (istype(r_hand, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = r_hand - if (!( L.container.Find(G.affecting) )) - L.container += G.affecting - if (G.affecting) - G.affecting.ret_grab(L, 1) - if (!( flag )) - if (L.master == src) - var/list/temp = list( ) - temp += L.container - //L = null - qdel(L) - return temp - else - return L.container - return +/mob/living/ret_grab(var/list/L, var/mobchain_limit = 5) + // We're the first! + if(!L) + L = list() + + // Lefty grab! + if (istype(l_hand, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = l_hand + L |= G.affecting + if(mobchain_limit-- > 0) + G.affecting?.ret_grab(L, mobchain_limit) // Recurse! They can update the list. It's the same instance as ours. + + // Righty grab! + if (istype(r_hand, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = r_hand + L |= G.affecting + if(mobchain_limit-- > 0) + G.affecting?.ret_grab(L, mobchain_limit) // Same as lefty! + + // On all but the one not called by us, this will just be ignored. Oh well! + return L /mob/living/mode() set name = "Activate Held Object" set category = "Object" set src = usr - if(world.time <= next_click) // This isn't really a 'click' but it'll work for our purposes. + if(!checkClickCooldown()) return - - next_click = world.time + 1 + + setClickCooldown(1) if(istype(loc,/obj/mecha)) return diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 1e66f65478..c1ec71a84e 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -173,13 +173,11 @@ if(ear_damage < 100) adjustEarDamage(-0.05,-1) -//this handles hud updates. Calls update_vision() and handle_hud_icons() /mob/living/handle_regular_hud_updates() if(!client) return 0 ..() - handle_vision() handle_darksight() handle_hud_icons() @@ -190,6 +188,13 @@ see_invisible = SEE_INVISIBLE_NOLIGHTING else see_invisible = initial(see_invisible) + + sight = initial(sight) + + for(var/datum/modifier/M in modifiers) + if(!isnull(M.vision_flags)) + sight |= M.vision_flags + return /mob/living/proc/handle_hud_icons() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 2476925fd2..8fc975073e 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -777,116 +777,66 @@ default behaviour is: to_chat(usr, "OOC Metadata is not supported by this server!") //VOREStation Edit End - Making it so SSD people have prefs with fallback to original style. -/mob/living/Move(a, b, flag) - if (buckled && buckled.loc != a) //not updating position - if(istype(buckled, /mob)) //If you're buckled to a mob, a la slime things, keep on rolling. - return buckled.Move(a, b) - else //Otherwise, no running around for you. +// Almost all of this handles pulling movables behind us +/mob/living/Move(atom/newloc, direct, movetime) + if(buckled && buckled.loc != newloc) //not updating position + if(!buckled.anchored && buckled.buckle_movable) + return buckled.Move(newloc, direct) + else return 0 - if (restrained()) + var/atom/movable/pullee = pulling + // Prior to our move it's already too far away + if(pullee && get_dist(src, pullee) > 1) + stop_pulling() + // Shenanigans! + if(pullee && !isturf(pullee.loc) && pullee.loc != loc) + log_debug("[src]'s pull on [pullee] was broken despite [pullee] being in [pullee.loc]. Pull stopped manually.") + stop_pulling() + // Can't pull with no hands + if(restrained()) stop_pulling() + // Will move our mob (probably) + . = ..() // Moved() called at this point if successful - var/t7 = 1 - if (restrained()) - for(var/mob/living/M in range(src, 1)) - if ((M.pulling == src && M.stat == 0 && !( M.restrained() ))) - t7 = null - if ((t7 && (pulling && ((get_dist(src, pulling) <= 1 || pulling.loc == loc) && (client && client.moving))))) - var/turf/T = loc - . = ..() + if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1) //seperated from our puller and not in the middle of a diagonal move + pulledby.stop_pulling() - if (pulling && pulling.loc) - if(!( isturf(pulling.loc) )) - stop_pulling() - return + if(s_active && !(s_active in contents) && get_turf(s_active) != get_turf(src)) //check !( s_active in contents ) first so we hopefully don't have to call get_turf() so much. + s_active.close(src) - ///// - if(pulling && pulling.anchored) +/mob/living/proc/dragged(var/mob/living/dragger, var/oldloc) + var/area/A = get_area(src) + if(lying && !buckled && pull_damage() && A.has_gravity && (prob(getBruteLoss() * 200 / maxHealth))) + adjustBruteLoss(2) + visible_message("\The [src]'s [isSynthetic() ? "state" : "wounds"] worsen terribly from being dragged!") + +/mob/living/Moved(var/atom/oldloc, direct, forced, movetime) + . = ..() + handle_footstep(loc) + + if(pulling) // we were pulling a thing and didn't lose it during our move. + if(pulling.anchored || !isturf(pulling.loc)) stop_pulling() return - if (!restrained()) - var/diag = get_dir(src, pulling) - if ((diag - 1) & diag) - else - diag = null - if ((get_dist(src, pulling) > 1 || diag)) - if (isliving(pulling)) - var/mob/living/M = pulling - var/atom/movable/t = M.pulling - M.stop_pulling() + var/pull_dir = get_dir(src, pulling) + if(get_dist(src, pulling) > 1 || (moving_diagonally != SECOND_DIAG_STEP && ((pull_dir - 1) & pull_dir))) // puller and pullee more than one tile away or in diagonal position + // If it is too far away or across z-levels from old location, stop pulling. + if(get_dist(pulling.loc, oldloc) > 1 || pulling.loc.z != oldloc?.z) + stop_pulling() + return - if(!istype(M.loc, /turf/space)) - var/area/A = get_area(M) - if(A.has_gravity) - //this is the gay blood on floor shit -- Added back -- Skie - if (M.lying && (prob(M.getBruteLoss() / 6))) - var/bloodtrail = 1 //Checks if it's possible to even spill blood - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.species.flags & NO_BLOOD) - bloodtrail = 0 - else - var/blood_volume = round((H.vessel.get_reagent_amount("blood")/H.species.blood_volume)*100) - if(blood_volume < BLOOD_VOLUME_SURVIVE) - bloodtrail = 0 //Most of it's gone already, just leave it be - else - H.vessel.remove_reagent("blood", 1) - if(bloodtrail) - var/turf/location = M.loc - if(istype(location, /turf/simulated)) - location.add_blood(M) - //pull damage with injured people - if(prob(25)) - M.adjustBruteLoss(1) - visible_message("\The [M]'s [M.isSynthetic() ? "state worsens": "wounds open more"] from being dragged!") - if(M.pull_damage()) - if(prob(25)) - M.adjustBruteLoss(2) - visible_message("\The [M]'s [M.isSynthetic() ? "state" : "wounds"] worsen terribly from being dragged!") - var/turf/location = M.loc - if (istype(location, /turf/simulated)) - var/bloodtrail = 1 //Checks if it's possible to even spill blood - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.species.flags & NO_BLOOD) - bloodtrail = 0 - else - var/blood_volume = round((H.vessel.get_reagent_amount("blood")/H.species.blood_volume)*100) - if(blood_volume < BLOOD_VOLUME_SURVIVE) - bloodtrail = 0 //Most of it's gone already, just leave it be - else - H.vessel.remove_reagent("blood", 1) - if(bloodtrail) - if(istype(location, /turf/simulated)) - location.add_blood(M) + // living might take damage from drags + if(isliving(pulling)) + var/mob/living/M = pulling + M.dragged(src, oldloc) - if(get_dist(pulling.loc, T) > 1 || pulling.loc.z != T.z) - M.stop_pulling() - else - step(pulling, get_dir(pulling.loc, T)) - if(t) - M.start_pulling(t) - else - if (pulling) - if (istype(pulling, /obj/structure/window)) - var/obj/structure/window/W = pulling - if(W.is_fulltile()) - for(var/obj/structure/window/win in get_step(pulling,get_dir(pulling.loc, T))) - stop_pulling() + pulling.Move(oldloc, 0, movetime) // the pullee tries to reach our previous position + if(pulling && get_dist(src, pulling) > 1) // the pullee couldn't keep up + stop_pulling() - if(get_dist(pulling.loc, T) > 1 || pulling.loc.z != T.z) // This is needed or else pulled objects can't get pushed away. - stop_pulling() - else - step(pulling, get_dir(pulling.loc, T)) - else - stop_pulling() - . = ..() - - if (s_active && !( s_active in contents ) && get_turf(s_active) != get_turf(src)) //check !( s_active in contents ) first so we hopefully don't have to call get_turf() so much. - s_active.close(src) /mob/living/proc/handle_footstep(turf/T) return FALSE @@ -895,7 +845,7 @@ default behaviour is: set name = "Resist" set category = "IC" - if(!incapacitated(INCAPACITATION_KNOCKOUT) && canClick()) + if(!incapacitated(INCAPACITATION_KNOCKOUT) && checkClickCooldown()) setClickCooldown(20) resist_grab() if(!weakened) @@ -1086,7 +1036,7 @@ default behaviour is: if(getBruteLoss() < 50) adjustBruteLoss(3) else - nutrition -= 40 + adjust_nutrition(-40) adjustToxLoss(-3) spawn(350) @@ -1194,7 +1144,7 @@ default behaviour is: // Now for the regular stuff. var/matrix/M = matrix() M.Scale(desired_scale_x, desired_scale_y) - M.Translate(0, 16*(desired_scale_y-1)) + M.Translate(0, (vis_height/2)*(desired_scale_y-1)) //VOREStation edit src.transform = M //VOREStation edit // This handles setting the client's color variable, which makes everything look a specific color. @@ -1299,9 +1249,7 @@ default behaviour is: //actually throw it! src.visible_message("[src] has thrown [item].") - if(!src.lastarea) - src.lastarea = get_area(src.loc) - if((istype(src.loc, /turf/space)) || (src.lastarea.has_gravity == 0)) + if((istype(src.loc, /turf/space)) || (src.lastarea?.has_gravity == 0)) src.inertia_dir = get_dir(target, src) step(src, inertia_dir) @@ -1362,6 +1310,9 @@ default behaviour is: /mob/living/proc/needs_to_breathe() return !isSynthetic() +/mob/living/proc/adjust_nutrition(amount) + nutrition = between(0, nutrition + amount, max_nutrition) + /mob/living/vv_get_header() . = ..() . += {" diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 8e3b9fb9a4..92416a25f3 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -18,6 +18,9 @@ var/brainloss = 0 //'Retardation' damage caused by someone hitting you in the head with a bible or being infected with brainrot. var/halloss = 0 //Hallucination damage. 'Fake' damage obtained through hallucinating or the holodeck. Sleeping should cause it to wear off. + var/nutrition = 400 + var/max_nutrition = MAX_NUTRITION + var/hallucination = 0 //Directly affects how long a mob will hallucinate for var/list/atom/hallucinations = list() //A list of hallucinated people that try to attack the mob. See /obj/effect/fake_attacker in hallucinations.dm diff --git a/code/modules/mob/living/living_defines_vr.dm b/code/modules/mob/living/living_defines_vr.dm index a9b8033646..b8e8cf202d 100644 --- a/code/modules/mob/living/living_defines_vr.dm +++ b/code/modules/mob/living/living_defines_vr.dm @@ -4,6 +4,8 @@ /mob/living var/ooc_notes = null var/obj/structure/mob_spawner/source_spawner = null + appearance_flags = TILE_BOUND|PIXEL_SCALE|KEEP_TOGETHER + var/hunger_rate = DEFAULT_HUNGER_FACTOR //custom say verbs var/custom_say = null diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index f730077d70..8256fe29a0 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -8,9 +8,6 @@ return !P.can_hit_target(src, P.permutated, src == P.original, TRUE) return (!mover.density || !density || lying) -/mob/CanZASPass(turf/T, is_zone) - return ATMOS_PASS_YES - /mob/living/SelfMove(turf/n, direct) // If on walk intent, don't willingly step into hazardous tiles. // Unless the walker is confused. diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 9bb1220ce5..532abe75c5 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -40,18 +40,18 @@ var/list/department_radio_keys = list( //kinda localization -- rastaf0 //same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding. - ":ê" = "right ear", ".ê" = "right ear", - ":ä" = "left ear", ".ä" = "left ear", - ":ø" = "intercom", ".ø" = "intercom", - ":ð" = "department", ".ð" = "department", - ":ñ" = "Command", ".ñ" = "Command", - ":ò" = "Science", ".ò" = "Science", - ":ü" = "Medical", ".ü" = "Medical", - ":ó" = "Engineering", ".ó" = "Engineering", - ":û" = "Security", ".û" = "Security", - ":ö" = "whisper", ".ö" = "whisper", - ":å" = "Mercenary", ".å" = "Mercenary", - ":é" = "Supply", ".é" = "Supply", + ":�" = "right ear", ".�" = "right ear", + ":�" = "left ear", ".�" = "left ear", + ":�" = "intercom", ".�" = "intercom", + ":�" = "department", ".�" = "department", + ":�" = "Command", ".�" = "Command", + ":�" = "Science", ".�" = "Science", + ":�" = "Medical", ".�" = "Medical", + ":�" = "Engineering", ".�" = "Engineering", + ":�" = "Security", ".�" = "Security", + ":�" = "whisper", ".�" = "whisper", + ":�" = "Mercenary", ".�" = "Mercenary", + ":�" = "Supply", ".�" = "Supply", ) @@ -70,67 +70,60 @@ proc/get_radio_key_from_channel(var/channel) return key /mob/living/proc/binarycheck() + return FALSE - if (istype(src, /mob/living/silicon/pai)) - return +/mob/proc/get_default_language() + return null - if (!ishuman(src)) - return - - var/mob/living/carbon/human/H = src - if (H.l_ear || H.r_ear) - var/obj/item/device/radio/headset/dongle - if(istype(H.l_ear,/obj/item/device/radio/headset)) - dongle = H.l_ear - else - dongle = H.r_ear - if(!istype(dongle)) return - if(dongle.translate_binary) return 1 - -/mob/living/proc/get_default_language() +/mob/living/get_default_language() return default_language //Takes a list of the form list(message, verb, whispering) and modifies it as needed //Returns 1 if a speech problem was applied, 0 otherwise /mob/living/proc/handle_speech_problems(var/list/message_data) - var/message = message_data[1] + var/list/message_pieces = message_data[1] var/verb = message_data[2] var/whispering = message_data[3] . = 0 - if((HULK in mutations) && health >= 25 && length(message)) - message = "[uppertext(message)]!!!" - verb = pick("yells","roars","hollers") - whispering = 0 - . = 1 - if(slurring) - message = slur(message) - verb = pick("slobbers","slurs") - . = 1 - if(stuttering) - message = stutter(message) - verb = pick("stammers","stutters") - . = 1 - //VOREStation Edit Start - if(muffled) - verb = pick("muffles") - whispering = 1 - . = 1 - //VOREStation Edit End - //YW Edit start - if(wingdings) - message = span("wingdings",(message)) - . = 1 - //YW Edit End + // Technically this rerolls the verb for as many say pieces as there are. _shrug_ + for(var/datum/multilingual_say_piece/S in message_pieces) + if(S.speaking && (S.speaking.flags & NO_STUTTER || S.speaking.flags & SIGNLANG)) + continue - message_data[1] = message + if((HULK in mutations) && health >= 25 && length(S.message)) + S.message = "[uppertext(S.message)]!!!" + verb = pick("yells","roars","hollers") + whispering = 0 + . = 1 + if(slurring) + S.message = slur(S.message) + verb = pick("slobbers","slurs") + . = 1 + if(stuttering) + S.message = stutter(S.message) + verb = pick("stammers","stutters") + . = 1 + //VOREStation Edit Start + if(muffled) + verb = pick("muffles") + whispering = 1 + . = 1 + //VOREStation Edit End + //YW Edit start + if(wingdings) + message = span("wingdings",(message)) + . = 1 + //YW Edit End + + message_data[1] = message_pieces message_data[2] = verb message_data[3] = whispering -/mob/living/proc/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) +/mob/living/proc/handle_message_mode(message_mode, list/message_pieces, verb, used_radios) if(message_mode == "intercom") for(var/obj/item/device/radio/intercom/I in view(1, null)) - I.talk_into(src, message, verb, speaking) + I.talk_into(src, message_pieces, verb) used_radios += I return 0 @@ -141,13 +134,13 @@ proc/get_radio_key_from_channel(var/channel) return returns /mob/living/proc/get_speech_ending(verb, var/ending) - if(ending=="!") + if(ending == "!") return pick("exclaims","shouts","yells") - if(ending=="?") + if(ending == "?") return "asks" return verb -/mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0) +/mob/living/say(var/message, var/whispering = 0) //If you're muted for IC chat if(client) if(message) @@ -166,98 +159,86 @@ proc/get_radio_key_from_channel(var/channel) var/message_mode = parse_message_mode(message, "headset") //Maybe they are using say/whisper to do a quick emote, so do those - switch(copytext(message,1,2)) - if("*") return emote(copytext(message,2)) - if("^") return custom_emote(1, copytext(message,2)) + switch(copytext(message, 1, 2)) + if("*") return emote(copytext(message, 2)) + if("^") return custom_emote(1, copytext(message, 2)) //Parse the radio code and consume it - if (message_mode) - if (message_mode == "headset") - message = copytext(message,2) //it would be really nice if the parse procs could do this for us. - else if (message_mode == "whisper") + if(message_mode) + if(message_mode == "headset") + message = copytext(message, 2) //it would be really nice if the parse procs could do this for us. + else if(message_mode == "whisper") whispering = 1 message_mode = null - message = copytext(message,3) + message = copytext(message, 3) else - message = copytext(message,3) + message = copytext(message, 3) //Clean up any remaining space on the left message = trim_left(message) + // VOREStation Edit - Reflect messages as needed, no sanitizing because parse_languages will handle it for us + if(reflect_if_needed(message, src)) + return + // VOREStation Edit End + //Parse the language code and consume it - if(!speaking) - speaking = parse_language(message) - - if(!speaking) - speaking = get_default_language() - - if(!can_speak(speaking)) - speaking = GLOB.all_languages[LANGUAGE_GIBBERISH] - var/babble_key = ",r" - message = babble_key + message - - if(speaking == get_default_language()) - var/new_message = ",[speaking.key]" - new_message += message - message = new_message - - if(speaking) - message = copytext(message,2+length(speaking.key)) - - //HIVEMIND languages always send to all people with that language - if(speaking && (speaking.flags & HIVEMIND)) - speaking.broadcast(src,trim(message)) + var/list/message_pieces = parse_languages(message) + if(istype(message_pieces, /datum/multilingual_say_piece)) // Little quark for dealing with hivemind/signlang languages. + var/datum/multilingual_say_piece/S = message_pieces // Yay for BYOND's hilariously broken typecasting for allowing us to do this. + S.speaking.broadcast(src, S.message) return 1 - //Self explanatory. - if(is_muzzled() && !(speaking && (speaking.flags & SIGNLANG))) + if(!LAZYLEN(message_pieces)) + log_runtime(EXCEPTION("Message failed to generate pieces. [message] - [json_encode(message_pieces)]")) + return 0 + + // If you're muzzled, you can only speak sign language + // However, sign language is handled above. + if(is_muzzled()) to_chat(src, "You're muzzled and cannot speak!") return - //Clean up any remaining junk on the left like spaces. - message = trim_left(message) - - //Autohiss handles auto-rolling tajaran R's and unathi S's/Z's - message = handle_autohiss(message, speaking) - //Whisper vars var/w_scramble_range = 5 //The range at which you get ***as*th**wi**** var/w_adverb //An adverb prepended to the verb in whispers var/w_not_heard //The message for people in watching range + var/datum/multilingual_say_piece/first_piece = message_pieces[1] + var/verb = "" //Handle language-specific verbs and adverb setup if necessary if(!whispering) //Just doing normal 'say' (for now, may change below) - verb = say_quote(message, speaking) - else if(whispering && speaking.whisper_verb) //Language has defined whisper verb - verb = speaking.whisper_verb + verb = say_quote(message, first_piece.speaking) + else if(whispering && first_piece.speaking.whisper_verb) //Language has defined whisper verb + verb = first_piece.speaking.whisper_verb w_not_heard = "[verb] something" else //Whispering but language has no whisper verb, use say verb w_adverb = pick("quietly", "softly") - verb = speaking.speech_verb - w_not_heard = "[speaking.speech_verb] something [w_adverb]" + verb = first_piece.speaking.speech_verb + w_not_heard = "[first_piece.speaking.speech_verb] something [w_adverb]" //For speech disorders (hulk, slurring, stuttering) - if(!(speaking && (speaking.flags & NO_STUTTER || speaking.flags & SIGNLANG))) - var/list/message_data = list(message, verb, whispering) - if(handle_speech_problems(message_data)) - message = message_data[1] - whispering = message_data[3] + var/list/message_data = list(message_pieces, verb, whispering) + if(handle_speech_problems(message_data)) + message_pieces = message_data[1] + whispering = message_data[3] - if(verb != message_data[2]) //They changed our verb - if(whispering) - w_adverb = pick("quietly", "softly") - verb = message_data[2] + if(verb != message_data[2]) //They changed our verb + if(whispering) + w_adverb = pick("quietly", "softly") + verb = message_data[2] //Whisper may have adverbs, add those if one was set - if(w_adverb) verb = "[verb] [w_adverb]" + if(w_adverb) + verb = "[verb] [w_adverb]" //If something nulled or emptied the message, forget it - if(!message || message == "") + if(!LAZYLEN(message_pieces)) return 0 //Radio message handling - var/list/obj/item/used_radios = new - if(handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, whispering)) + var/list/used_radios = list() + if(handle_message_mode(message_mode, message_pieces, verb, used_radios, whispering)) return 1 //For languages with actual speech sounds @@ -273,16 +254,19 @@ proc/get_radio_key_from_channel(var/channel) if(used_radios.len) italics = 1 message_range = 1 - if(speaking) - message_range = speaking.get_talkinto_msg_range(message) + + if(first_piece.speaking) + message_range = first_piece.speaking.get_talkinto_msg_range(message) var/msg - if(!speaking || !(speaking.flags & NO_TALK_MSG)) - msg = "\The [src] talks into \the [used_radios[1]]" - for(var/mob/living/M in hearers(5, src)) - if((M != src) && msg) + if(!first_piece.speaking || !(first_piece.speaking.flags & NO_TALK_MSG)) + msg = "[src] talks into [used_radios[1]]" + + if(msg) + for(var/mob/living/M in hearers(5, src) - src) M.show_message(msg) - if (speech_sound) - sound_vol *= 0.5 + + if(speech_sound) + sound_vol *= 0.5 //Set vars if we're still whispering by this point if(whispering) @@ -304,15 +288,10 @@ proc/get_radio_key_from_channel(var/channel) verb = "[custom_say]" //VOREStation edit ends - //Handle nonverbal and sign languages here - if (speaking) - if (speaking.flags & SIGNLANG) - log_say("(SIGN) [message]", src) - return say_signlang(message, pick(speaking.signlang_verb), speaking) - - if (speaking.flags & NONVERBAL) - if (prob(30)) - src.custom_emote(1, "[pick(speaking.signlang_verb)].") + //Handle nonverbal languages here + for(var/datum/multilingual_say_piece/S in message_pieces) + if(S.speaking.flags & NONVERBAL) + custom_emote(1, "[pick(S.speaking.signlang_verb)].") //These will contain the main receivers of the message var/list/listening = list() @@ -323,12 +302,12 @@ proc/get_radio_key_from_channel(var/channel) if(T) //Air is too thin to carry sound at all, contact speech only var/datum/gas_mixture/environment = T.return_air() - var/pressure = (environment)? environment.return_pressure() : 0 + var/pressure = environment ? environment.return_pressure() : 0 if(pressure < SOUND_MINIMUM_PRESSURE) message_range = 1 //Air is nearing minimum levels, make text italics as a hint, and muffle sound - if (pressure < ONE_ATMOSPHERE*0.4) + if(pressure < ONE_ATMOSPHERE * 0.4) italics = 1 sound_vol *= 0.5 @@ -368,6 +347,12 @@ proc/get_radio_key_from_channel(var/channel) spawn(0) //Using spawns to queue all the messages for AFTER this proc is done, and stop runtimes if(M && src) //If we still exist, when the spawn processes + //VOREStation Add - Ghosts don't hear whispers + if(whispering && !is_preference_enabled(/datum/client_preference/whisubtle_vis) && isobserver(M) && !M.client?.holder) + M.show_message("[src.name] [w_not_heard].", 2) + return + //VOREStation Add End + var/dst = get_dist(get_turf(M),get_turf(src)) if(dst <= message_range || (M.stat == DEAD && !forbid_seeing_deadchat)) //Inside normal message range, or dead with ears (handled in the view proc) @@ -375,16 +360,16 @@ proc/get_radio_key_from_channel(var/channel) var/image/I1 = listening[M] || speech_bubble images_to_clients[I1] |= M.client M << I1 - M.hear_say(message, verb, speaking, alt_name, italics, src, speech_sound, sound_vol) + M.hear_say(message_pieces, verb, italics, src, speech_sound, sound_vol) if(whispering) //Don't even bother with these unless whispering if(dst > message_range && dst <= w_scramble_range) //Inside whisper scramble range if(M.client) var/image/I2 = listening[M] || speech_bubble images_to_clients[I2] |= M.client M << I2 - M.hear_say(stars(message), verb, speaking, alt_name, italics, src, speech_sound, sound_vol*0.2) + M.hear_say(stars_all(message_pieces), verb, italics, src, speech_sound, sound_vol*0.2) if(dst > w_scramble_range && dst <= world.view) //Inside whisper 'visible' range - M.show_message("[src.name] [w_not_heard].", 2) + M.show_message("[name] [w_not_heard].", 2) //Object message delivery for(var/obj/O in listening_obj) @@ -392,7 +377,7 @@ proc/get_radio_key_from_channel(var/channel) if(O && src) //If we still exist, when the spawn processes var/dst = get_dist(get_turf(O),get_turf(src)) if(dst <= message_range) - O.hear_talk(src, message, verb, speaking) + O.hear_talk(src, message_pieces, verb) //Remove all those images. At least it's just ONE spawn this time. spawn(30) @@ -409,7 +394,7 @@ proc/get_radio_key_from_channel(var/channel) if(message_mode) message = "([message_mode == "headset" ? "Common" : capitalize(message_mode)]) [message]" //Adds radio keys used if available if(whispering) - log_whisper(message,src) + log_whisper(message, src) else log_say(message, src) return 1 @@ -437,8 +422,41 @@ proc/get_radio_key_from_channel(var/channel) /obj/effect/speech_bubble var/mob/parent -/mob/living/proc/GetVoice() +/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/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 4a5e3182d8..fa59ebf5c8 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -837,6 +837,69 @@ var/list/ai_verbs_default = list( // If that is ever fixed please update this proc. return TRUE + +/mob/living/silicon/ai/handle_track(message, verb = "says", mob/speaker = null, speaker_name, hard_to_hear) + if(hard_to_hear) + return + + var/jobname // the mob's "job" + var/mob/living/carbon/human/impersonating //The crew member being impersonated, if any. + var/changed_voice + + if(ishuman(speaker)) + var/mob/living/carbon/human/H = speaker + + if(H.wear_mask && istype(H.wear_mask,/obj/item/clothing/mask/gas/voice)) + changed_voice = 1 + var/list/impersonated = new() + var/mob/living/carbon/human/I = impersonated[speaker_name] + + if(!I) + for(var/mob/living/carbon/human/M in mob_list) + if(M.real_name == speaker_name) + I = M + impersonated[speaker_name] = I + break + + // If I's display name is currently different from the voice name and using an agent ID then don't impersonate + // as this would allow the AI to track I and realize the mismatch. + if(I && !(I.name != speaker_name && I.wear_id && istype(I.wear_id,/obj/item/weapon/card/id/syndicate))) + impersonating = I + jobname = impersonating.get_assignment() + else + jobname = "Unknown" + else + jobname = H.get_assignment() + + else if(iscarbon(speaker)) // Nonhuman carbon mob + jobname = "No id" + else if(isAI(speaker)) + jobname = "AI" + else if(isrobot(speaker)) + jobname = "Cyborg" + else if(istype(speaker, /mob/living/silicon/pai)) + jobname = "Personal AI" + else + jobname = "Unknown" + + var/track = "" + if(changed_voice) + if(impersonating) + track = "[speaker_name] ([jobname])" + else + track = "[speaker_name] ([jobname])" + else + track = "[speaker_name] ([jobname])" + + return track + +/mob/living/silicon/ai/proc/relay_speech(mob/living/M, list/message_pieces, verb) + var/message = combine_message(message_pieces, verb, M) + var/name_used = M.GetVoice() + //This communication is imperfect because the holopad "filters" voices and is only designed to connect to the master only. + var/rendered = "Relayed Speech: [name_used] [message]" + show_message(rendered, 2) + //Special subtype kept around for global announcements /mob/living/silicon/ai/announcer/ is_dummy = 1 diff --git a/code/modules/mob/living/silicon/ai/examine.dm b/code/modules/mob/living/silicon/ai/examine.dm index d569730688..7f25b87e21 100644 --- a/code/modules/mob/living/silicon/ai/examine.dm +++ b/code/modules/mob/living/silicon/ai/examine.dm @@ -1,42 +1,39 @@ /mob/living/silicon/ai/examine(mob/user) - if(!..(user)) - return + . = ..() - var/msg = "" if (src.stat == DEAD) - msg += "It appears to be powered-down.\n" + . += "It appears to be powered-down." else - msg += "" if (src.getBruteLoss()) if (src.getBruteLoss() < 30) - msg += "It looks slightly dented.\n" + . += "It looks slightly dented." else - msg += "It looks severely dented!\n" + . += "It looks severely dented!" if (src.getFireLoss()) if (src.getFireLoss() < 30) - msg += "It looks slightly charred.\n" + . += "It looks slightly charred." else - msg += "Its casing is melted and heat-warped!\n" + . += "Its casing is melted and heat-warped!" if (src.getOxyLoss() && (aiRestorePowerRoutine != 0 && !APU_power)) if (src.getOxyLoss() > 175) - msg += "It seems to be running on backup power. Its display is blinking a \"BACKUP POWER CRITICAL\" warning.\n" + . += "It seems to be running on backup power. Its display is blinking a \"BACKUP POWER CRITICAL\" warning." else if(src.getOxyLoss() > 100) - msg += "It seems to be running on backup power. Its display is blinking a \"BACKUP POWER LOW\" warning.\n" + . += "It seems to be running on backup power. Its display is blinking a \"BACKUP POWER LOW\" warning." else - msg += "It seems to be running on backup power.\n" + . += "It seems to be running on backup power." if (src.stat == UNCONSCIOUS) - msg += "It is non-responsive and displaying the text: \"RUNTIME: Sensory Overload, stack 26/3\".\n" - msg += "" + . += "It is non-responsive and displaying the text: \"RUNTIME: Sensory Overload, stack 26/3\"." + if(deployed_shell) - msg += "The wireless networking light is blinking.\n" - msg += "*---------*" + . += "The wireless networking light is blinking." + + . += "*---------*" + if(hardware && (hardware.owner == src)) - msg += "
" - msg += hardware.get_examine_desc() - to_chat(user,msg) + . += hardware.get_examine_desc() + user.showLaws(src) - return /mob/proc/showLaws(var/mob/living/silicon/S) return diff --git a/code/modules/mob/living/silicon/emote.dm b/code/modules/mob/living/silicon/emote.dm new file mode 100644 index 0000000000..ff3e340419 --- /dev/null +++ b/code/modules/mob/living/silicon/emote.dm @@ -0,0 +1,113 @@ +/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) + + 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.loc, '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.loc, '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.loc, '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.loc, '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.loc, '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.loc, 'sound/machines/synth_no.ogg', 50, 0) + m_type = 1 + + ..(act, m_type, message) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/examine.dm b/code/modules/mob/living/silicon/pai/examine.dm index 2f78cf262e..b6890470c9 100644 --- a/code/modules/mob/living/silicon/pai/examine.dm +++ b/code/modules/mob/living/silicon/pai/examine.dm @@ -1,26 +1,24 @@ /mob/living/silicon/pai/examine(mob/user) - ..(user, infix = ", personal AI") + . = ..(user, infix = ", personal AI") - var/msg = "" switch(src.stat) if(CONSCIOUS) - if(!src.client) msg += "\nIt appears to be in stand-by mode.\n" //afk - if(UNCONSCIOUS) msg += "\nIt doesn't seem to be responding.\n" - if(DEAD) msg += "\nIt looks completely unsalvageable.\n" - msg += attempt_vr(src,"examine_bellies",args) //VOREStation Edit - + if(!src.client) . += "It appears to be in stand-by mode." //afk + if(UNCONSCIOUS) . += "It doesn't seem to be responding." + if(DEAD) . += "It looks completely unsalvageable." + // VOREStation Edit: Start + . += attempt_vr(src,"examine_bellies",args) //VOREStation Edit if(ooc_notes) - msg += "OOC Notes: \[View\]\n" + . += "OOC Notes: \[View\]" // VOREStation Edit: End - msg += "\n*---------*" + . += "*---------*" - if(print_flavor_text()) msg += "\n[print_flavor_text()]\n" + if(print_flavor_text()) . += "\n[print_flavor_text()]\n" if (pose) - if( findtext(pose,".",length(pose)) == 0 && findtext(pose,"!",length(pose)) == 0 && findtext(pose,"?",length(pose)) == 0 ) + if(!findtext(pose, regex("\[.?!]$"))) // Will be zero if the last character is not a member of [.?!] pose = addtext(pose,".") //Makes sure all emotes end with a period. - msg += "\nIt is [pose]" - - to_chat(user,msg) \ No newline at end of file + . += "
It is [pose]" //Extra
intentional + \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/say.dm b/code/modules/mob/living/silicon/pai/say.dm index 2c7bc900d6..4b18c42beb 100644 --- a/code/modules/mob/living/silicon/pai/say.dm +++ b/code/modules/mob/living/silicon/pai/say.dm @@ -1,5 +1,5 @@ -/mob/living/silicon/pai/say(var/msg) +/mob/living/silicon/pai/say(var/message, var/datum/language/speaking = null, var/whispering = 0) if(silence_time) to_chat(src, "Communication circuits remain uninitialized.") else - ..(msg) \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm index 05dc8ee87c..7664e57103 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm @@ -179,12 +179,12 @@ flags |= NOBLUDGEON //No more attack messages /obj/item/device/dogborg/tongue/examine(user) - if(!..(user, 1)) - return - if(water.energy) - to_chat(user, "[src] is wet. Just like it should be.") - if(water.energy < 5) - to_chat(user, "[src] is dry.") + . = ..() + if(Adjacent(user)) + if(water.energy) + . += "[src] is wet. Just like it should be." + if(water.energy < 5) + . += "[src] is dry." /obj/item/device/dogborg/tongue/attack_self(mob/user) var/mob/living/silicon/robot.R = user diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm index 32b93a89e1..0b54a814f9 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm @@ -695,4 +695,11 @@ desc = "A mounted drunk tank unit with fuel processor." icon_state = "brewer" injection_chems = null - max_item_count = 1 \ No newline at end of file + max_item_count = 1 + +/obj/item/device/dogborg/sleeper/compactor/supply //Miner borg belly + name = "Supply Satchel" + desc = "A mounted survival unit with fuel processor." + icon_state = "sleeperc" + injection_chems = list("glucose","inaprovaline","tricordrazine") + max_item_count = 1 diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index f3f6122ea8..b52028d542 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -29,10 +29,10 @@ var/force_holder = null // /obj/item/weapon/gripper/examine(mob/user) - ..() + . = ..() if(wrapped) - to_chat(user, "\The [src] is holding \the [wrapped].") - wrapped.examine(user) + . += "\The [src] is holding \the [wrapped]." + . += wrapped.examine(user) /obj/item/weapon/gripper/CtrlClick(mob/user) drop_item() diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm index 6287859ae6..fc8b033681 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm @@ -63,9 +63,9 @@ visible_message("\The [src] voices a strident beep, indicating a drone chassis is prepared.") /obj/machinery/drone_fabricator/examine(mob/user) - ..(user) + . = ..() if(produce_drones && drone_progress >= 100 && istype(user,/mob/observer/dead) && config.allow_drone_spawn && count_drones() < config.max_maint_drones) - to_chat(user, "
A drone is prepared. Select 'Join As Drone' from the Ghost tab to spawn as a maintenance drone.") + . += "
A drone is prepared. Select 'Join As Drone' from the Ghost tab to spawn as a maintenance drone." /obj/machinery/drone_fabricator/proc/create_drone(var/client/player) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_say.dm b/code/modules/mob/living/silicon/robot/drone/drone_say.dm index 76e104cfb2..5e8dd6dc74 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_say.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_say.dm @@ -1,4 +1,4 @@ -/mob/living/silicon/robot/drone/say(var/message) +/mob/living/silicon/robot/drone/say(var/message, var/datum/language/speaking = null, var/whispering = 0) if(local_transmit) if (src.client) if(client.prefs.muted & MUTE_IC) @@ -36,4 +36,4 @@ if(M.client) to_chat(M, "[src] transmits, \"[message]\"") return 1 - return ..(message, 0) \ No newline at end of file + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index 6eb189d32d..33bc706194 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -1,6 +1,6 @@ /mob/living/silicon/robot/emote(var/act,var/m_type=1,var/message = null) var/param = null - if (findtext(act, "-", 1, 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) @@ -9,238 +9,119 @@ act = copytext(act,1,length(act)) switch(act) - if ("me") - if (src.client) - if(client.prefs.muted & MUTE_IC) - to_chat(src, "You cannot send IC messages (muted).") - return - if (src.client.handle_spam_prevention(message,MUTE_IC)) - return - if (stat) - return - if(!(message)) - return - else - return custom_emote(m_type, message) - - if ("custom") - return custom_emote(m_type, message) - - if ("salute") - if (!src.buckled) + if("salute") + if(!src.buckled) var/M = null - if (param) + if(param) for (var/mob/A in view(null, null)) - if (param == A.name) + if(param == A.name) M = A break - if (!M) + if(!M) param = null - if (param) - message = "salutes to [param]." + if(param) + message = "[src] salutes to [param]." else - message = "salutes." + message = "[src] salutes." m_type = 1 - if ("bow") - if (!src.buckled) + if("bow") + if(!src.buckled) var/M = null - if (param) + if(param) for (var/mob/A in view(null, null)) - if (param == A.name) + if(param == A.name) M = A break - if (!M) + if(!M) param = null - if (param) - message = "bows to [param]." + if(param) + message = "[src] bows to [param]." else - message = "bows." + message = "[src] bows." m_type = 1 - if ("clap") - if (!src.restrained()) - message = "claps." + if("clap") + if(!src.restrained()) + message = "[src] claps." m_type = 2 - if ("flap") - if (!src.restrained()) - message = "flaps its wings." + if("flap") + if(!src.restrained()) + message = "[src] flaps its wings." m_type = 2 - if ("aflap") - if (!src.restrained()) - message = "flaps its wings ANGRILY!" + if("aflap") + if(!src.restrained()) + message = "[src] flaps its wings ANGRILY!" m_type = 2 - if ("twitch") - message = "twitches." + if("twitch") + message = "[src] twitches." m_type = 1 - if ("twitch_v") - message = "twitches violently." + if("twitch_v") + message = "[src] twitches violently." m_type = 1 - if ("nod") - message = "nods." + if("nod") + message = "[src] nods." m_type = 1 - if ("deathgasp") - message = "shudders violently for a moment, then becomes motionless, its eyes slowly darkening." + 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 = "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("beep") + if("glare") var/M = null if(param) for (var/mob/A in view(null, null)) - if (param == A.name) + if(param == A.name) M = A break if(!M) param = null - if (param) - message = "beeps at [param]." + if(param) + message = "[src] glares at [param]." else - message = "beeps." - playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) - m_type = 1 + message = "[src] glares." - if("ping") + if("stare") var/M = null if(param) for (var/mob/A in view(null, null)) - if (param == A.name) + if(param == A.name) M = A break if(!M) param = null - if (param) - message = "pings at [param]." + if(param) + message = "[src] stares at [param]." else - message = "pings." - playsound(src.loc, 'sound/machines/ping.ogg', 50, 0) - m_type = 1 + message = "[src] stares." - if("buzz") + if("look") var/M = null if(param) for (var/mob/A in view(null, null)) - if (param == A.name) + if(param == A.name) M = A break + if(!M) param = null - if (param) - message = "buzzes at [param]." - else - message = "buzzes." - playsound(src.loc, '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 = "emits an affirmative blip at [param]." + message = "[src] looks at [param]." else - message = "emits an affirmative blip." - playsound(src.loc, '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 = "chirps happily at [param]" - else - message = "chirps happily." - playsound(src.loc, '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 = "emits a negative blip at [param]." - else - message = "emits a negative blip." - playsound(src.loc, 'sound/machines/synth_no.ogg', 50, 0) + 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 = "shows its legal authorization barcode." + 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.loc, 'sound/voice/biamthelaw.ogg', 50, 0) m_type = 2 @@ -248,20 +129,27 @@ 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 = "'s speakers skreech, \"Halt! Security!\"." + 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.loc, '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) ) + message = "[src] lets out a bark." - if ("help") + playsound(loc, 'sound/voice/bark2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) + m_type = 2 + else + 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") - else - to_chat(src, "Unusable emote '[act]'. Say *help for a list.") - if ((message && src.stat == 0)) - custom_emote(m_type,message) - - return + ..(act, m_type, message) diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm index a6f4135c7a..6f3cabe4af 100644 --- a/code/modules/mob/living/silicon/robot/examine.dm +++ b/code/modules/mob/living/silicon/robot/examine.dm @@ -1,53 +1,48 @@ /mob/living/silicon/robot/examine(mob/user) var/custom_infix = custom_name ? ", [modtype] [braintype]" : "" - ..(user, infix = custom_infix) + . = ..(user, infix = custom_infix) - var/msg = "" - msg += "" if (src.getBruteLoss()) if (src.getBruteLoss() < 75) - msg += "It looks slightly dented.\n" + . += "It looks slightly dented." else - msg += "It looks severely dented!\n" + . += "It looks severely dented!" if (src.getFireLoss()) if (src.getFireLoss() < 75) - msg += "It looks slightly charred.\n" + . += "It looks slightly charred." else - msg += "It looks severely burnt and heat-warped!\n" - msg += "" + . += "It looks severely burnt and heat-warped!" if(opened) - msg += "Its cover is open and the power cell is [cell ? "installed" : "missing"].\n" + . += "Its cover is open and the power cell is [cell ? "installed" : "missing"]." else - msg += "Its cover is closed.\n" + . += "Its cover is closed." if(!has_power) - msg += "It appears to be running on backup power.\n" + . += "It appears to be running on backup power." switch(src.stat) if(CONSCIOUS) if(shell) - msg += "It appears to be an [deployed ? "active" : "empty"] AI shell.\n" + . += "It appears to be an [deployed ? "active" : "empty"] AI shell." else if(!src.client) - msg += "It appears to be in stand-by mode.\n" //afk - if(UNCONSCIOUS) msg += "It doesn't seem to be responding.\n" - if(DEAD) msg += "It looks completely unsalvageable.\n" - msg += attempt_vr(src,"examine_bellies_borg",args) //VOREStation Edit - + . += "It appears to be in stand-by mode." //afk + if(UNCONSCIOUS) . += "It doesn't seem to be responding." + if(DEAD) . += "It looks completely unsalvageable." + // VOREStation Edit: Start + . += attempt_vr(src,"examine_bellies_borg",args) //VOREStation Edit if(ooc_notes) - msg += "OOC Notes: \[View\]\n" + . += "OOC Notes: \[View\]" // VOREStation Edit: End - msg += "*---------*" + . += "*---------*" - if(print_flavor_text()) msg += "\n[print_flavor_text()]\n" + if(print_flavor_text()) . += "
[print_flavor_text()]" if (pose) - if( findtext(pose,".",length(pose)) == 0 && findtext(pose,"!",length(pose)) == 0 && findtext(pose,"?",length(pose)) == 0 ) + if(!findtext(pose, regex("\[.?!]$"))) // Will be zero if the last character is not a member of [.?!] pose = addtext(pose,".") //Makes sure all emotes end with a period. - msg += "\nIt is [pose]" + . += "
It is [pose]" //Extra
intentional - to_chat(user,msg) user.showLaws(src) - return diff --git a/code/modules/mob/living/silicon/robot/login.dm b/code/modules/mob/living/silicon/robot/login.dm index 07dd53917b..f88f859383 100644 --- a/code/modules/mob/living/silicon/robot/login.dm +++ b/code/modules/mob/living/silicon/robot/login.dm @@ -11,3 +11,4 @@ // Forces synths to select an icon relevant to their module if(!icon_selected) choose_icon(icon_selection_tries, module_sprites) + plane_holder.set_vis(VIS_AUGMENTED, TRUE) //VOREStation Add - ROBOT VISION IS AUGMENTED \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 883d0e6727..1d6e78b5ee 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -942,14 +942,10 @@ update_canmove() /mob/living/silicon/robot/mode() - set name = "Activate Held Object" - set category = "IC" - set src = usr - - if(world.time <= next_click) // Hard check, before anything else, to avoid crashing + if(!checkClickCooldown()) return - next_click = world.time + 1 + setClickCooldown(1) var/obj/item/W = get_active_hand() if (W) diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index 1b13cb7096..a4a3c8c14b 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -430,10 +430,9 @@ max_doors = 5 /obj/item/weapon/inflatable_dispenser/examine(var/mob/user) - if(!..(user)) - return - to_chat(user, "It has [stored_walls] wall segment\s and [stored_doors] door segment\s stored.") - to_chat(user, "It is set to deploy [mode ? "doors" : "walls"]") + . = ..() + . += "It has [stored_walls] wall segment\s and [stored_doors] door segment\s stored." + . += "It is set to deploy [mode ? "doors" : "walls"]" /obj/item/weapon/inflatable_dispenser/attack_self() mode = !mode diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index aba6249dda..b2be8c9e1e 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -9,7 +9,6 @@ var/global/list/robot_modules = list( "Security" = /obj/item/weapon/robot_module/robot/security/general, "Combat" = /obj/item/weapon/robot_module/robot/security/combat, "Engineering" = /obj/item/weapon/robot_module/robot/engineering/general, -// "Construction" = /obj/item/weapon/robot_module/robot/engineering/construction, "Janitor" = /obj/item/weapon/robot_module/robot/janitor ) @@ -385,54 +384,6 @@ var/global/list/robot_modules = list( "Servitor" = "servitor" //YW Addition to add new Servitor Sprite ) -/obj/item/weapon/robot_module/robot/engineering/construction - name = "construction robot module" - no_slip = 1 - -/* Merged back into engineering (Hell, it's about time.) - -/obj/item/weapon/robot_module/robot/engineering/construction/New() - ..() - src.modules += new /obj/item/borg/sight/meson(src) - src.modules += new /obj/item/weapon/rcd/borg(src) - src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src) - src.modules += new /obj/item/weapon/tool/wrench/cyborg(src) - src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src) - src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src) - src.modules += new /obj/item/device/pipe_painter(src) - src.modules += new /obj/item/device/floor_painter(src) - src.modules += new /obj/item/weapon/gripper/no_use/loader(src) - src.modules += new /obj/item/device/geiger(src) - src.modules += new /obj/item/weapon/pipe_dispenser(src) //YW Addition - - var/datum/matter_synth/metal = new /datum/matter_synth/metal() - var/datum/matter_synth/plasteel = new /datum/matter_synth/plasteel() - var/datum/matter_synth/glass = new /datum/matter_synth/glass() - synths += metal - synths += plasteel - synths += glass - - var/obj/item/stack/material/cyborg/steel/M = new (src) - M.synths = list(metal) - src.modules += M - - var/obj/item/stack/rods/cyborg/R = new /obj/item/stack/rods/cyborg(src) - R.synths = list(metal) - src.modules += R - - var/obj/item/stack/tile/floor/cyborg/F = new /obj/item/stack/tile/floor/cyborg(src) - F.synths = list(metal) - src.modules += F - - var/obj/item/stack/material/cyborg/plasteel/S = new (src) - S.synths = list(plasteel) - src.modules += S - - var/obj/item/stack/material/cyborg/glass/reinforced/RG = new (src) - RG.synths = list(metal, glass) - src.modules += RG -*/ - /obj/item/weapon/robot_module/robot/engineering/general/New() ..() src.modules += new /obj/item/borg/sight/meson(src) @@ -799,6 +750,10 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/weapon/shockpaddles/robot/jumper(src) src.modules += new /obj/item/weapon/melee/baton/slime/robot(src) src.modules += new /obj/item/weapon/gun/energy/taser/xeno/robot(src) + src.modules += new /obj/item/device/xenoarch_multi_tool(src) + src.modules += new /obj/item/weapon/pickaxe/excavationdrill(src) + //src.modules += new /obj/item/device/cataloguer(src) //VOREStation Removal + src.emag = new /obj/item/weapon/hand_tele(src) var/datum/matter_synth/nanite = new /datum/matter_synth/nanite(10000) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm index 7a52c7e3c7..3597cd8f90 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm @@ -44,7 +44,8 @@ robot_modules["Sci-borg"] = /obj/item/weapon/robot_module/robot/science robot_modules["Pupdozer"] = /obj/item/weapon/robot_module/robot/engiedog robot_modules["Servicehound"] = /obj/item/weapon/robot_module/robot/servicehound //YW changes - robot_modules["BoozeHound"] = /obj/item/weapon/robot_module/robot/booze + robot_modules["Service-Hound"] = /obj/item/weapon/robot_module/robot/clerical/brodog + robot_modules["KMine"] = /obj/item/weapon/robot_module/robot/kmine return 1 //Just add a new proc with the robot_module type if you wish to run some other vore code @@ -150,7 +151,7 @@ name = "k9 robot module" sprites = list( "K9 hound" = "k9", - "K9 Alternative (Static)" = "k92", + "K9 Alternative" = "k92", "Secborg model V-2" = "secborg", "Borgi" = "borgi-sec" ) @@ -438,7 +439,9 @@ name = "Research Hound Module" sprites = list( "Research Hound" = "science", - "Borgi" = "borgi-sci" + "Borgi" = "borgi-sci", + "SciHound" = "scihound", + "SciHoundDark" = "scihounddark" ) channels = list("Science" = 1) can_be_pushed = 0 @@ -510,7 +513,9 @@ sprites = list( "Pupdozer" = "pupdozer", "Borgi" = "borgi-eng", - "V2 Engidog" = "thottbot" + "V2 Engidog" = "thottbot", + "EngiHound" = "engihound", + "EngiHoundDark" = "engihounddark" ) channels = list("Engineering" = 1) networks = list(NETWORK_ENGINEERING) @@ -722,9 +727,132 @@ R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() -//YW changes - Addition of Servicehound end +// Uses modified K9 sprites. +/obj/item/weapon/robot_module/robot/clerical/brodog + name = "service-hound module" + sprites = list( + "Blackhound" = "k50", + "Pinkhound" = "k69", + "ServicehoundV2" = "serve2", + "ServicehoundV2 Darkmode" = "servedark", + ) + channels = list("Service" = 1) + can_be_pushed = 0 +// In a nutshell, basicly service/butler robot but in dog form. - Port from CitadelRP +/obj/item/weapon/robot_module/robot/clerical/brodog/New(var/mob/living/silicon/robot/R) + src.modules += new /obj/item/weapon/gripper/service(src) + src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src) + src.modules += new /obj/item/weapon/material/minihoe(src) + src.modules += new /obj/item/weapon/material/knife/machete/hatchet(src) + src.modules += new /obj/item/device/analyzer/plant_analyzer(src) + src.modules += new /obj/item/weapon/storage/bag/dogborg(src) + src.modules += new /obj/item/weapon/robot_harvester(src) + src.modules += new /obj/item/weapon/material/knife(src) + src.modules += new /obj/item/weapon/material/kitchen/rollingpin(src) + src.modules += new /obj/item/device/multitool(src) //to freeze trays + src.modules += new /obj/item/weapon/dogborg/jaws/small(src) + src.modules += new /obj/item/device/dogborg/boop_module(src) + src.emag = new /obj/item/weapon/dogborg/pounce(src) //Pounce + + var/datum/matter_synth/water = new /datum/matter_synth(500) // buffy fix, was 0 + water.name = "Water reserves" + water.recharge_rate = 0 + water.max_energy = 1000 + R.water_res = water + synths += water + + + var/obj/item/device/dogborg/tongue/T = new /obj/item/device/dogborg/tongue(src) + T.water = water + src.modules += T + + var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src) + M.stored_matter = 30 + src.modules += M + + src.modules += new /obj/item/weapon/reagent_containers/dropper/industrial(src) + + var/obj/item/weapon/flame/lighter/zippo/L = new /obj/item/weapon/flame/lighter/zippo(src) + L.lit = 1 + src.modules += L + + src.modules += new /obj/item/weapon/tray/robotray(src) + src.modules += new /obj/item/weapon/reagent_containers/borghypo/service(src) + +/* // I don't know what kind of sleeper to put here, but also no need if you already have "Robot Nom" verb. - revisit later + var/obj/item/device/dogborg/sleeper/K9/B = new /obj/item/device/dogborg/sleeper/K9(src) + B.water = water + src.modules += B +*/ + + R.icon = 'icons/mob/widerobot_vr.dmi' + R.hands.icon = 'icons/mob/screen1_robot_vr.dmi' + R.ui_style_vr = TRUE + R.pixel_x = -16 + R.old_x = -16 + R.default_pixel_x = -16 + R.dogborg = TRUE + R.wideborg = TRUE + R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill + R.verbs |= /mob/living/silicon/robot/proc/robot_mount + R.verbs |= /mob/living/silicon/robot/proc/rest_style + ..() + +/obj/item/weapon/robot_module/robot/kmine + name = "Supply Hound Module" + sprites = list( + "KMine" = "kmine", + "CargoHound" = "cargohound", + "CargoHoundDark" = "cargohounddark" + ) + channels = list("Supply" = 1) + can_be_pushed = 0 + +/obj/item/weapon/robot_module/robot/kmine/New(var/mob/living/silicon/robot/R) + src.modules += new /obj/item/borg/sight/material(src) + src.modules += new /obj/item/weapon/tool/wrench/cyborg(src) + src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src) + src.modules += new /obj/item/weapon/storage/bag/ore(src) + src.modules += new /obj/item/weapon/pickaxe/borgdrill(src) + src.modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src) + src.modules += new /obj/item/weapon/gripper/miner(src) + src.modules += new /obj/item/weapon/mining_scanner(src) + src.modules += new /obj/item/weapon/dogborg/jaws/small(src) + src.emag = new /obj/item/weapon/pickaxe/plasmacutter(src) + src.emag = new /obj/item/weapon/pickaxe/diamonddrill(src) + + var/datum/matter_synth/water = new /datum/matter_synth(500) + water.name = "Water reserves" + water.recharge_rate = 0 + R.water_res = water + synths += water + + var/obj/item/device/dogborg/tongue/T = new /obj/item/device/dogborg/tongue(src) + T.water = water + src.modules += T + + var/obj/item/device/dogborg/sleeper/B = new /obj/item/device/dogborg/sleeper/compactor/supply(src) + B.water = water + src.modules += B + + R.icon = 'icons/mob/widerobot_vr.dmi' + R.hands.icon = 'icons/mob/screen1_robot_vr.dmi' + R.ui_style_vr = TRUE + R.pixel_x = -16 + R.old_x = -16 + R.default_pixel_x = -16 + R.dogborg = TRUE + R.wideborg = TRUE + R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill + R.verbs |= /mob/living/silicon/robot/proc/robot_mount + R.verbs |= /mob/living/proc/toggle_rider_reins + R.verbs |= /mob/living/proc/shred_limb + R.verbs |= /mob/living/silicon/robot/proc/rest_style + + ..() + /obj/item/weapon/robot_module/Reset(var/mob/living/silicon/robot/R) R.pixel_x = initial(pixel_x) R.pixel_y = initial(pixel_y) diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm index 858741988e..b83b7bfee9 100644 --- a/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -33,52 +33,52 @@ if (cell_use_power(A.active_usage)) return ..() -/mob/living/silicon/robot/Move(a, b, flag) - +/mob/living/silicon/robot/Moved(atom/old_loc, direction, forced = FALSE) . = ..() - if(module) - if(module.type == /obj/item/weapon/robot_module/robot/janitor) - var/turf/tile = loc - if(isturf(tile)) - tile.clean_blood() - if (istype(tile, /turf/simulated)) - var/turf/simulated/S = tile - S.dirt = 0 - for(var/A in tile) - if(istype(A, /obj/effect)) - if(istype(A, /obj/effect/rune) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay)) - qdel(A) - else if(istype(A, /obj/item)) - var/obj/item/cleaned_item = A - cleaned_item.clean_blood() - else if(istype(A, /mob/living/carbon/human)) - var/mob/living/carbon/human/cleaned_human = A - if(cleaned_human.lying) - if(cleaned_human.head) - cleaned_human.head.clean_blood() - cleaned_human.update_inv_head(0) - if(cleaned_human.wear_suit) - cleaned_human.wear_suit.clean_blood() - cleaned_human.update_inv_wear_suit(0) - else if(cleaned_human.w_uniform) - cleaned_human.w_uniform.clean_blood() - cleaned_human.update_inv_w_uniform(0) - if(cleaned_human.shoes) - cleaned_human.shoes.clean_blood() - cleaned_human.update_inv_shoes(0) - cleaned_human.clean_blood(1) - cleaned_human << "[src] cleans your face!" + if(!module) + return - if((module_state_1 && istype(module_state_1, /obj/item/weapon/storage/bag/ore)) || (module_state_2 && istype(module_state_2, /obj/item/weapon/storage/bag/ore)) || (module_state_3 && istype(module_state_3, /obj/item/weapon/storage/bag/ore))) //Borgs and drones can use their mining bags ~automagically~ if they're deployed in a slot. Only mining bags, as they're optimized for mass use. - var/obj/item/weapon/storage/bag/ore/B = null - if(istype(module_state_1, /obj/item/weapon/storage/bag/ore)) //First orebag has priority, if they for some reason have multiple. - B = module_state_1 - else if(istype(module_state_2, /obj/item/weapon/storage/bag/ore)) - B = module_state_2 - else if(istype(module_state_3, /obj/item/weapon/storage/bag/ore)) - B = module_state_3 - var/turf/tile = loc - if(isturf(tile)) - B.gather_all(tile, src, 1) //Shhh, unless the bag fills, don't spam the borg's chat with stuff that's going on every time they move! - return + //Borgs and drones can use their mining bags ~automagically~ if they're deployed in a slot. Only mining bags, as they're optimized for mass use. + if(istype(module_state_1, /obj/item/weapon/storage/bag/ore) || istype(module_state_2, /obj/item/weapon/storage/bag/ore) || istype(module_state_3, /obj/item/weapon/storage/bag/ore)) + var/obj/item/weapon/storage/bag/ore/B = null + if(istype(module_state_1, /obj/item/weapon/storage/bag/ore)) //First orebag has priority, if they for some reason have multiple. + B = module_state_1 + else if(istype(module_state_2, /obj/item/weapon/storage/bag/ore)) + B = module_state_2 + else if(istype(module_state_3, /obj/item/weapon/storage/bag/ore)) + B = module_state_3 + var/turf/tile = loc + if(isturf(tile)) + B.gather_all(tile, src, 1) //Shhh, unless the bag fills, don't spam the borg's chat with stuff that's going on every time they move! + + if(istype(module, /obj/item/weapon/robot_module/robot/janitor) && isturf(loc)) + var/turf/tile = loc + tile.clean_blood() + if (istype(tile, /turf/simulated)) + var/turf/simulated/S = tile + S.dirt = 0 + for(var/A in tile) + if(istype(A, /obj/effect)) + if(istype(A, /obj/effect/rune) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay)) + qdel(A) + else if(istype(A, /obj/item)) + var/obj/item/cleaned_item = A + cleaned_item.clean_blood() + else if(istype(A, /mob/living/carbon/human)) + var/mob/living/carbon/human/cleaned_human = A + if(cleaned_human.lying) + if(cleaned_human.head) + cleaned_human.head.clean_blood() + cleaned_human.update_inv_head(0) + if(cleaned_human.wear_suit) + cleaned_human.wear_suit.clean_blood() + cleaned_human.update_inv_wear_suit(0) + else if(cleaned_human.w_uniform) + cleaned_human.w_uniform.clean_blood() + cleaned_human.update_inv_w_uniform(0) + if(cleaned_human.shoes) + cleaned_human.shoes.clean_blood() + cleaned_human.update_inv_shoes(0) + cleaned_human.clean_blood(1) + cleaned_human << "[src] cleans your face!" \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot_vr.dm b/code/modules/mob/living/silicon/robot/robot_vr.dm index edf4041100..840026946f 100644 --- a/code/modules/mob/living/silicon/robot/robot_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_vr.dm @@ -109,39 +109,35 @@ icon_state = "[module_sprites[icontype]]-wreck" add_overlay("wreck-overlay") -/mob/living/silicon/robot/Move(a, b, flag) +/mob/living/silicon/robot/Moved(atom/old_loc, direction, forced = FALSE) . = ..() - if(scrubbing) - var/datum/matter_synth/water = water_res - if(water && water.energy >= 1) - var/turf/tile = loc - if(isturf(tile)) - water.use_charge(1) - tile.clean_blood() - if(istype(tile, /turf/simulated)) - var/turf/simulated/T = tile - T.dirt = 0 - for(var/A in tile) - if(istype(A,/obj/effect/rune) || istype(A,/obj/effect/decal/cleanable) || istype(A,/obj/effect/overlay)) - qdel(A) - else if(istype(A, /mob/living/carbon/human)) - var/mob/living/carbon/human/cleaned_human = A - if(cleaned_human.lying) - if(cleaned_human.head) - cleaned_human.head.clean_blood() - cleaned_human.update_inv_head(0) - if(cleaned_human.wear_suit) - cleaned_human.wear_suit.clean_blood() - cleaned_human.update_inv_wear_suit(0) - else if(cleaned_human.w_uniform) - cleaned_human.w_uniform.clean_blood() - cleaned_human.update_inv_w_uniform(0) - if(cleaned_human.shoes) - cleaned_human.shoes.clean_blood() - cleaned_human.update_inv_shoes(0) - cleaned_human.clean_blood(1) - to_chat(cleaned_human, "[src] cleans your face!") - return + if(scrubbing && isturf(loc) && water_res?.energy >= 1) + var/turf/tile = loc + water_res.use_charge(1) + tile.clean_blood() + if(istype(tile, /turf/simulated)) + var/turf/simulated/T = tile + T.dirt = 0 + for(var/A in tile) + if(istype(A,/obj/effect/rune) || istype(A,/obj/effect/decal/cleanable) || istype(A,/obj/effect/overlay)) + qdel(A) + else if(istype(A, /mob/living/carbon/human)) + var/mob/living/carbon/human/cleaned_human = A + if(cleaned_human.lying) + if(cleaned_human.head) + cleaned_human.head.clean_blood() + cleaned_human.update_inv_head(0) + if(cleaned_human.wear_suit) + cleaned_human.wear_suit.clean_blood() + cleaned_human.update_inv_wear_suit(0) + else if(cleaned_human.w_uniform) + cleaned_human.w_uniform.clean_blood() + cleaned_human.update_inv_w_uniform(0) + if(cleaned_human.shoes) + cleaned_human.shoes.clean_blood() + cleaned_human.update_inv_shoes(0) + cleaned_human.clean_blood(1) + to_chat(cleaned_human, "[src] cleans your face!") /mob/living/silicon/robot/proc/vr_sprite_check() if(wideborg == TRUE) diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 0867fedff8..ef870cb1f3 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -1,10 +1,4 @@ -/mob/living/silicon/say(var/message, var/sanitize = 1, var/whispering = 0) - return ..((sanitize ? sanitize(message) : message), whispering = whispering) - -/mob/living/silicon/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) - log_say(message, src) - -/mob/living/silicon/robot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) +/mob/living/silicon/robot/handle_message_mode(message_mode, message, verb, speaking, used_radios) ..() if(message_mode) if(!is_component_functioning("radio")) @@ -17,7 +11,7 @@ /mob/living/silicon/speech_bubble_appearance() return "synthetic" -/mob/living/silicon/ai/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) +/mob/living/silicon/ai/handle_message_mode(message_mode, message, verb, speaking, used_radios) ..() if(message_mode == "department") return holopad_talk(message, verb, speaking) @@ -29,7 +23,7 @@ message_mode = null return aiRadio.talk_into(src,message,message_mode,verb,speaking) -/mob/living/silicon/pai/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) +/mob/living/silicon/pai/handle_message_mode(message_mode, message, verb, speaking, used_radios) ..() if(message_mode) if(message_mode == "general") @@ -50,70 +44,44 @@ #define IS_ROBOT 2 #define IS_PAI 3 -/mob/living/silicon/say_understands(var/other,var/datum/language/speaking = null) +/mob/living/silicon/say_understands(var/other, var/datum/language/speaking = null) //These only pertain to common. Languages are handled by mob/say_understands() - if (!speaking) - if (istype(other, /mob/living/carbon)) - return 1 - if (istype(other, /mob/living/silicon)) - return 1 - if (istype(other, /mob/living/carbon/brain)) - return 1 + if(!speaking) + if(iscarbon(other)) + return TRUE + if(issilicon(other)) + return TRUE + if(isbrain(other)) + return TRUE return ..() //For holopads only. Usable by AI. -/mob/living/silicon/ai/proc/holopad_talk(var/message, verb, datum/language/speaking) - - log_say("(HPAD) [message]",src) - - message = trim(message) - - if (!message) - return +/mob/living/silicon/ai/proc/holopad_talk(list/message_pieces, verb) + log_say("(HPAD) [multilingual_to_message(message_pieces)]",src) var/obj/machinery/hologram/holopad/T = src.holo if(T && T.masters[src])//If there is a hologram and its master is the user. - //Human-like, sorta, heard by those who understand humans. - var/rendered_a - //Speech distorted, heard by those who do not understand AIs. - var/message_stars = stars(message) - var/rendered_b - - if(speaking) - rendered_a = "[name] [speaking.format_message(message, verb)]" - rendered_b = "[voice_name] [speaking.format_message(message_stars, verb)]" - to_chat(src, "Holopad transmitted, [real_name] [speaking.format_message(message, verb)]") //The AI can "hear" its own message. - else - rendered_a = "[name] [verb], \"[message]\"" - rendered_b = "[voice_name] [verb], \"[message_stars]\"" - to_chat(src, "Holopad transmitted, [real_name] [verb], \"[message]\"") //The AI can "hear" its own message. var/list/listeners = get_mobs_and_objs_in_view_fast(get_turf(T), world.view) var/list/listening = listeners["mobs"] var/list/listening_obj = listeners["objs"] for(var/mob/M in listening) - spawn(0) - if(M.say_understands(src))//If they understand AI speak. Humans and the like will be able to. - M.show_message(rendered_a, 2) - else//If they do not. - M.show_message(rendered_b, 2) + M.hear_holopad_talk(message_pieces, verb, src) for(var/obj/O in listening_obj) if(O == T) //Don't recieve your own speech continue - spawn(0) - if(O && src) //If we still exist, when the spawn processes - O.hear_talk(src, message, verb, speaking) + O.hear_talk(src, message_pieces, verb) /*Radios "filter out" this conversation channel so we don't need to account for them. This is another way of saying that we won't bother dealing with them.*/ + to_chat(src, "Holopad transmitted, [real_name] [combine_message(message_pieces, verb, src)]") else to_chat(src, "No holopad connected.") return 0 return 1 /mob/living/silicon/ai/proc/holopad_emote(var/message) //This is called when the AI uses the 'me' verb while using a holopad. - message = trim(message) - if (!message) + if(!message) return var/obj/machinery/hologram/holopad/T = src.holo @@ -147,11 +115,11 @@ return 1 /mob/living/silicon/ai/emote(var/act, var/type, var/message) - var/obj/machinery/hologram/holopad/T = src.holo + var/obj/machinery/hologram/holopad/T = holo if(T && T.masters[src]) //Is the AI using a holopad? - src.holopad_emote(message) + . = holopad_emote(message) else //Emote normally, then. - ..() + . = ..() #undef IS_AI #undef IS_ROBOT diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 6a74eb41d5..2e42d6d92c 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -193,7 +193,14 @@ //Silicon mob language procs /mob/living/silicon/can_speak(datum/language/speaking) - return universal_speak || (speaking in src.speech_synthesizer_langs) || (speaking.name == "Noise") //need speech synthesizer support to vocalize a language + if(universal_speak) + return TRUE + //need speech synthesizer support to vocalize a language + if(speaking in speech_synthesizer_langs) + return TRUE + if(speaking && speaking.flags & INNATE) + return TRUE + return FALSE /mob/living/silicon/add_language(var/language, var/can_speak=1) var/var/datum/language/added_language = GLOB.all_languages[language] @@ -213,15 +220,11 @@ ..(rem_language) speech_synthesizer_langs -= removed_language -/mob/living/silicon/check_languages() - set name = "Check Known Languages" - set category = "IC" - set src = usr - - var/dat = "Known Languages

" +/mob/living/silicon/check_lang_data() + . = "" if(default_language) - dat += "Current default language: [default_language] - reset

" + . += "Current default language: [default_language] - reset

" for(var/datum/language/L in languages) if(!(L.flags & NONGLOBAL)) @@ -232,10 +235,7 @@ default_str = " - set default" var/synth = (L in speech_synthesizer_langs) - dat += "[L.name] ([get_language_prefix()][L.key])[synth ? default_str : null]
Speech Synthesizer: [synth ? "YES" : "NOT SUPPORTED"]
[L.desc]

" - - src << browse(dat, "window=checklanguage") - return + . += "[L.name] ([get_language_prefix()][L.key])[synth ? default_str : null]
Speech Synthesizer: [synth ? "YES" : "NOT SUPPORTED"]
[L.desc]

" /mob/living/silicon/proc/toggle_sensor_mode() var/sensor_type = input("Please select sensor type.", "Sensor Integration", null) in list("Security","Medical","Disable") @@ -336,6 +336,8 @@ next_alarm_notice = world.time + SecondsToTicks(10) if(alarm.hidden) return + if(alarm.origin && !(get_z(alarm.origin) in using_map.get_map_levels(get_z(src), TRUE))) + return var/list/alarms = queued_alarms[alarm_handler] if(was_raised) diff --git a/code/modules/mob/living/silicon/silicon_vr.dm b/code/modules/mob/living/silicon/silicon_vr.dm index 624406bd8b..168b3facab 100644 --- a/code/modules/mob/living/silicon/silicon_vr.dm +++ b/code/modules/mob/living/silicon/silicon_vr.dm @@ -3,3 +3,19 @@ src.Examine_OOC() return 1 return ..() + +// For handling any custom visibility in borgo sensor modes, like sleeve implants +/mob/living/silicon/toggle_sensor_mode() + . = ..() + switch(hudmode) // This is set in parent + if ("Security") + //Disable Medical planes + plane_holder?.set_vis(VIS_CH_BACKUP,FALSE) + + if ("Medical") + //Enable Medical planes + plane_holder?.set_vis(VIS_CH_BACKUP,TRUE) + + if ("Disable") + //Disable Medical planes + plane_holder?.set_vis(VIS_CH_BACKUP,FALSE) diff --git a/code/modules/mob/living/simple_mob/defense.dm b/code/modules/mob/living/simple_mob/defense.dm index c09bf272cc..a8234ac970 100644 --- a/code/modules/mob/living/simple_mob/defense.dm +++ b/code/modules/mob/living/simple_mob/defense.dm @@ -72,6 +72,23 @@ if(istype(O, /obj/item/weapon/material/knife)) harvest(user) + if(user.a_intent == I_HELP && harvest_tool && istype(O, harvest_tool) && stat != DEAD) + if(world.time > (harvest_recent + harvest_cooldown)) + livestock_harvest(O, user) + return + else + to_chat(user, "\The [src] can't be [harvest_verb] so soon.") + return + + if(can_tame(O, user)) + to_chat(user, "You offer \the [src] \the [O].") + if(tame_prob(O, user)) + to_chat(user, "\The [src] appears to accept \the [O], seemingly calmed.") + do_tame(O,user) + else + fail_tame(O, user) + return + return ..() diff --git a/code/modules/mob/living/simple_mob/harvesting.dm b/code/modules/mob/living/simple_mob/harvesting.dm new file mode 100644 index 0000000000..95de747fee --- /dev/null +++ b/code/modules/mob/living/simple_mob/harvesting.dm @@ -0,0 +1,42 @@ + +/mob/living/simple_mob + // What do you hit the mob with (on help) to get something from it? + var/obj/harvest_tool + // How long do we have to wait until it's harvestable again? + var/harvest_cooldown = 10 MINUTES + // How long does it take to harvest? + var/harvest_delay = 30 SECONDS + // What world.time was the last harvest? + var/harvest_recent = 0 + // How many times can we roll at max on the chance table? + var/harvest_per_hit = 1 + // Verb for harvesting. "sheared" "clipped" etc. + var/harvest_verb = "harvested" + // Associative list of paths and their chances. path = straws in the lot + var/list/harvest_results + +/mob/living/simple_mob/examine(mob/user) + . = ..() + if(user && harvest_tool && (get_dist(user, src) <= 3)) + . += "\The [src] can be [harvest_verb] with a [initial(harvest_tool.name)] every [round(harvest_cooldown, 0.1)] minutes." + var/time_to_harvest = (harvest_recent + harvest_cooldown) - world.time + if(time_to_harvest > 0) + . += "It can be [harvest_verb] in [time_to_harvest / (1 MINUTE)] second(s)." + else + . += "It can be [harvest_verb] now." + +/mob/living/simple_mob/proc/livestock_harvest(var/obj/item/tool, var/mob/living/user) + if(!LAZYLEN(harvest_results)) // Might be a unique interaction of an object using the proc to do something weird, or just someone's a donk. + harvest_recent = world.time + return + + if(istype(tool, harvest_tool)) // Sanity incase something incorrect is passed in. + harvest_recent = world.time + + var/max_harvests = rand(1,harvest_per_hit) + + for(var/I = 1 to max_harvests) + var/new_path = pickweight(harvest_results) + new new_path(get_turf(user)) + + return diff --git a/code/modules/mob/living/simple_mob/simple_mob.dm b/code/modules/mob/living/simple_mob/simple_mob.dm index c9030b0860..71e7736ebb 100644 --- a/code/modules/mob/living/simple_mob/simple_mob.dm +++ b/code/modules/mob/living/simple_mob/simple_mob.dm @@ -194,12 +194,6 @@ . = ..() to_chat(src,"You are \the [src]. [player_msg]") - -/mob/living/simple_mob/emote(var/act, var/type, var/desc) - if(act) - ..(act, type, desc) - - /mob/living/simple_mob/SelfMove(turf/n, direct) var/turf/old_turf = get_turf(src) var/old_dir = dir @@ -264,14 +258,11 @@ update_icon() -/mob/living/simple_mob/say(var/message,var/datum/language/language) - var/verb = "says" +/mob/living/simple_mob/say_quote(var/message, var/datum/language/speaking = null) if(speak_emote.len) - verb = pick(speak_emote) - - message = sanitize(message) - - ..(message, null, verb) + . = pick(speak_emote) + else if(speaking) + . = ..() /mob/living/simple_mob/get_speech_ending(verb, var/ending) return verb diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm index 6ea44df66d..e1f7535bf8 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm @@ -205,7 +205,7 @@ return // This is awful but its literally say code. -/mob/living/simple_mob/animal/borer/say(message) +/mob/living/simple_mob/animal/borer/say(var/message, var/datum/language/speaking = null, var/whispering = 0) message = sanitize(message) message = capitalize(message) @@ -224,10 +224,11 @@ if(copytext(message, 1, 2) == "*") return emote(copytext(message, 2)) - var/datum/language/L = parse_language(message) - if(L && L.flags & HIVEMIND) - L.broadcast(src,trim(copytext(message,3)), src.true_name) - return + var/list/message_pieces = parse_languages(message) + for(var/datum/multilingual_say_piece/S in message_pieces) + if(S.speaking && S.speaking.flags & HIVEMIND) + S.speaking.broadcast(src, trim(copytext(message, 3)), src.true_name) + return if(!host) if(chemicals >= 30) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm index 4f117d485c..618efee6dc 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm @@ -5,7 +5,7 @@ real_name = "host brain" universal_understand = 1 -/mob/living/captive_brain/say(var/message) +/mob/living/captive_brain/say(var/message, var/datum/language/speaking = null, var/whispering = 0) if (src.client) if(client.prefs.muted & MUTE_IC) @@ -31,7 +31,12 @@ else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears)) to_chat(M, "The captive mind of [src] whispers, \"[message]\"") +/mob/living/captive_brain/me_verb(message as text) + to_chat(src, "You cannot emote as a captive mind.") + return + /mob/living/captive_brain/emote(var/message) + to_chat(src, "You cannot emote as a captive mind.") return /mob/living/captive_brain/process_resist() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm index 7ff82a8160..1e7991d6a2 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm @@ -54,8 +54,8 @@ var/step = get_step_to(src, food, 0) Move(step) -/mob/living/simple_mob/animal/goat/Move() - ..() +/mob/living/simple_mob/animal/goat/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() if(!stat) for(var/obj/effect/plant/SV in loc) SV.die_off(1) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm index c39559899c..f0c47be7f8 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm @@ -100,6 +100,12 @@ say_list_type = /datum/say_list/spider + tame_items = list( + /obj/item/weapon/reagent_containers/food/snacks/xenomeat = 10, + /obj/item/weapon/reagent_containers/food/snacks/meat/crab = 40, + /obj/item/weapon/reagent_containers/food/snacks/meat = 20 + ) + var/poison_type = "spidertoxin" // The reagent that gets injected when it attacks. var/poison_chance = 10 // Chance for injection to occur. var/poison_per_bite = 5 // Amount added per injection. diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm index 39e2edcb7d..94bb77ee71 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm @@ -45,6 +45,11 @@ poison_per_bite = 0.5 poison_type = "phoron" + tame_items = list( + /obj/item/weapon/tank/phoron = 20, + /obj/item/stack/material/phoron = 30 + ) + var/exploded = FALSE var/explosion_dev_range = 1 var/explosion_heavy_range = 2 diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm index 06d4eb4caa..87c05b317d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm @@ -47,7 +47,7 @@ /mob/living/simple_mob/animal/passive/crab/sif/Initialize() ..() - adjust_scale(rand(5,15) / 10) + adjust_scale(rand(5,12) / 10) // Meat! diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm index 790681a3fc..198f99a3f4 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm @@ -166,11 +166,15 @@ /mob/living/simple_mob/animal/passive/fish/icebass/update_icon() overlays.Cut() ..() + if(!dorsal_image) dorsal_image = image(icon, "[icon_state]_mask-body") if(!belly_image) belly_image = image(icon, "[icon_state]_mask-belly") + dorsal_image.icon_state = "[icon_state]_mask-body" + belly_image.icon_state = "[icon_state]_mask-belly" + dorsal_image.color = dorsal_color belly_image.color = belly_color @@ -237,6 +241,8 @@ if(!head_image) head_image = image(icon, "[icon_state]_mask") + head_image.icon_state = "[icon_state]_mask" + head_image.color = head_color overlays += head_image diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse_vr.dm index 3c74e3784f..26c15f9c17 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse_vr.dm @@ -22,7 +22,7 @@ //No longer in use, as mice create a holder/micro object instead /obj/item/weapon/holder/mouse/attack_self(var/mob/U) for(var/mob/living/simple_mob/M in src.contents) - if((I_HELP) && U.canClick()) //a little snowflakey, but makes it use the same cooldown as interacting with non-inventory objects + if((I_HELP) && U.checkClickCooldown()) //a little snowflakey, but makes it use the same cooldown as interacting with non-inventory objects U.setClickCooldown(U.get_attack_speed()) //if there's a cleaner way in baycode, I'll change this U.visible_message("[U] [M.response_help] \the [M].") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm index dc611e3831..8d09b18fea 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm @@ -41,7 +41,7 @@ return say(message) // Ugly saycode so parrots can use their headsets. -/mob/living/simple_mob/animal/passive/bird/parrot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) +/mob/living/simple_mob/animal/passive/bird/parrot/handle_message_mode(message_mode, message, verb, speaking, used_radios) ..() if(message_mode) if(my_headset && istype(my_headset, /obj/item/device/radio)) @@ -90,9 +90,9 @@ my_headset = null /mob/living/simple_mob/animal/passive/bird/parrot/examine(mob/user) - ..() + . = ..() if(my_headset) - to_chat(user, "It is wearing \a [my_headset].") + . += "It is wearing \a [my_headset]." /mob/living/simple_mob/animal/passive/bird/parrot/Initialize() if(my_headset) @@ -109,7 +109,7 @@ icon_rest = "poly-held" icon_dead = "poly-dead" tt_desc = "E Ara macao" - //my_headset = /obj/item/device/radio/headset/headset_eng //VOREStation Removal: shut up + //my_headset = /obj/item/device/radio/headset/headset_eng //VOREStation Removal say_list_type = /datum/say_list/bird/poly // Best Bird with best headset. diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm index cb21ec8272..dcdfdf04f0 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm @@ -40,6 +40,23 @@ say_list_type = /datum/say_list/diyaab ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative + // What do you hit the mob with (on help) to get something from it? + harvest_tool = /obj/item/weapon/tool/wirecutters + // How long do we have to wait until it's harvestable again? + harvest_cooldown = 10 MINUTES + // How long does it take to harvest? + harvest_delay = 30 SECONDS + // What world.time was the last harvest? + harvest_recent = 0 + // How many times do we roll on the chance table? + harvest_per_hit = 1 + // Verb for harvesting. "sheared" "clipped" etc. + harvest_verb = "sheared" + // Associative list of paths and their chances. path = straws in the lot + harvest_results = list( + /obj/item/stack/material/cloth/diyaab = 10 + ) + /datum/say_list/diyaab speak = list("Awrr?", "Aowrl!", "Worrl.") emote_see = list("sniffs the air cautiously","looks around") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/duck.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/duck.dm index 0aa74f9e6b..10f7ddc2cf 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/duck.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/duck.dm @@ -10,7 +10,7 @@ Family units have been observed to form gangs and scavenge from Sivian domeciles and \ various food transports during stressful months. \ It is advised to seal and hide any form of food near even lone individuals, as they will become \ - increasingly aggressive." + increasingly aggressive in order to acquire it." value = CATALOGUER_REWARD_EASY /mob/living/simple_mob/animal/sif/duck @@ -38,6 +38,11 @@ attack_edge = 1 // Razor-edged wings, and 'claws' made for digging through ice. attacktext = list("nipped", "bit", "cut", "clawed") + tame_items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread = 90, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread = 25 + ) + say_list_type = /datum/say_list/duck ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/frostfly.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/frostfly.dm index 7258f397d6..5f7aaa479b 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/frostfly.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/frostfly.dm @@ -83,7 +83,7 @@ return 1 // It literally produces a cryogenic mist inside itself. Cold doesn't bother it. /mob/living/simple_mob/animal/sif/frostfly/Initialize() - ..() + . = ..() //VOREStation Edit smoke_special = new verbs += /mob/living/proc/ventcrawl verbs += /mob/living/proc/hide diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/glitterfly.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/glitterfly.dm index ae1abb363f..3687a67c51 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/glitterfly.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/glitterfly.dm @@ -52,6 +52,12 @@ attacktext = list("bit", "buffeted", "slashed") + tame_items = list( + /obj/item/weapon/reagent_containers/food/snacks/grown = 90, + /obj/item/weapon/reagent_containers/food/snacks/meat/crab = 10, + /obj/item/weapon/reagent_containers/food/snacks/meat = 5 + ) + say_list_type = /datum/say_list/glitterfly ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/glitterfly @@ -81,6 +87,17 @@ /mob/living/simple_mob/animal/sif/glitterfly/rare/Initialize() ..() +/mob/living/simple_mob/animal/sif/glitterfly/unique_tame_check(var/obj/O, var/mob/user) + . = ..() + + if(.) + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown)) + var/obj/item/weapon/reagent_containers/food/snacks/grown/G = O + + if(G.seed && G.seed.kitchen_tag == "berries") + return TRUE + return FALSE + /datum/say_list/glitterfly speak = list("Pi..","Po...", "Pa...") emote_see = list("vibrates","flutters", "twirls") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm index 60d5b62dfa..ee5a573a30 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm @@ -28,7 +28,7 @@ icon_state = "bigcat" icon_living = "bigcat" icon_dead = "bigcat_dead" - icon_rest = "bigcat_rest" + icon_rest = "bigcat_sleep" icon = 'icons/mob/64x64.dmi' default_pixel_x = -16 @@ -42,7 +42,7 @@ movement_cooldown = 1 melee_damage_lower = 15 - melee_damage_upper = 25 + melee_damage_upper = 20 attack_armor_pen = 40 base_attack_cooldown = 2 SECONDS attacktext = list("gouged", "bit", "cut", "clawed", "whipped") @@ -72,7 +72,7 @@ special_attack_min_range = 0 special_attack_max_range = 4 - special_attack_cooldown = 30 SECONDS + special_attack_cooldown = 1 MINUTE // Players have 2 seperate cooldowns for these, while the AI must choose one. Both respect special_attack_cooldown var/last_strike_time = 0 @@ -108,11 +108,11 @@ var/mob/living/carbon/human/H = L if(H.get_active_hand()) var/obj/item/I = H.get_active_hand() - if(I.force >= 1.20 * melee_damage_upper) + if(I.force <= 1.25 * melee_damage_upper) return TRUE else if(istype(L, /mob/living/simple_mob)) var/mob/living/simple_mob/S = L - if(S.melee_damage_upper > 1.20 * melee_damage_upper) + if(S.melee_damage_upper > 1.5 * melee_damage_upper) return TRUE /mob/living/simple_mob/animal/sif/kururak/handle_special() @@ -122,7 +122,7 @@ /mob/living/simple_mob/animal/sif/kururak/apply_melee_effects(atom/A) // Only gains instinct. instinct += rand(1, 2) - return + return ..() /mob/living/simple_mob/animal/sif/kururak/should_special_attack(atom/A) return has_modifier_of_type(/datum/modifier/ace) @@ -136,6 +136,8 @@ set_AI_busy(TRUE) rending_strike(A) set_AI_busy(FALSE) + a_intent = I_HURT + return ..() /mob/living/simple_mob/animal/sif/kururak/verb/do_flash() set category = "Abilities" @@ -186,11 +188,8 @@ flash_strength *= H.species.flash_mod if(flash_strength > 0) to_chat(H, span("alien","You are disoriented by \the [src]!")) - H.Confuse(flash_strength + 5) - H.Blind(flash_strength) H.eye_blurry = max(H.eye_blurry, flash_strength + 5) H.flash_eyes() - H.adjustHalLoss(flash_strength / 5) H.apply_damage(flash_strength * H.species.flash_burn/5, BURN, BP_HEAD, 0, 0, "Photon burns") else if(issilicon(L)) @@ -280,9 +279,11 @@ visible_message(span("danger","\The [src] rakes its claws against \the [A].")) var/obj/mecha/M = A M.take_damage(damage_to_apply) - if(prob(3) && do_after(src, 5)) - visible_message(span("critical","\The [src]'s strike ripped \the [M]'s access hatch open, allowing it to drag [M.occupant] out!")) - M.go_out() + if(prob(3)) + visible_message(span("critical","\The [src] begins digging its claws into \the [M]'s hatch!")) + if(do_after(src, 1 SECOND)) + visible_message(span("critical","\The [src] rips \the [M]'s access hatch open, dragging [M.occupant] out!")) + M.go_out() else A.attack_generic(src, damage_to_apply, "rakes its claws against") // Well it's not a mob, and it's not a mech. @@ -329,6 +330,15 @@ else remove_modifiers_of_type(/datum/modifier/ace) +/mob/living/simple_mob/animal/sif/kururak/hibernate/Initialize() + ..() + lay_down() + instinct = 0 + +/* + * Kururak AI + */ + /datum/ai_holder/simple_mob/intentional/kururak hostile = FALSE retaliate = TRUE @@ -359,6 +369,8 @@ else hostile = initial(hostile) + return ..() + /datum/ai_holder/simple_mob/intentional/kururak/pre_special_attack(atom/A) holder.a_intent = I_HURT if(isliving(A)) @@ -378,9 +390,16 @@ else if(istype(A, /obj/mecha)) holder.a_intent = I_GRAB + return ..() + +/datum/ai_holder/simple_mob/intentional/kururak/post_special_attack(atom/A) + holder.a_intent = I_HURT + return ..() + /datum/ai_holder/simple_mob/intentional/kururak/post_melee_attack() if(holder.has_modifier_of_type(/datum/modifier/ace)) request_help() + return ..() // Kururak Ace modifier, given to the one with the highest Instinct. diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm index 8c3120aa47..55e27d86b8 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm @@ -187,6 +187,7 @@ desc = "What appears to be an oversized rodent with hands. This one has a curious look in its eyes." ai_holder_type = /datum/ai_holder/simple_mob/intentional/sakimm randomize_size = FALSE // Most likely to have a hat. + melee_attack_delay = 0 // For some reason, having a delay makes item pick-up not work. /datum/ai_holder/simple_mob/intentional/sakimm hostile = FALSE @@ -256,14 +257,10 @@ for(var/possible_target in possible_targets) var/atom/A = possible_target - if(found(A)) - . = list(A) - break if(istype(A, /mob/living) && !can_pick_mobs) continue if(can_attack(A)) // Can we attack it? . += A - continue for(var/obj/item/I in .) last_search = world.time diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/savik.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/savik.dm index 5104227c8b..78c9b1f362 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/savik.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/savik.dm @@ -45,6 +45,12 @@ player_msg = "You have the ability to berserk at will, which will grant strong physical bonuses for \ a short period of time, however it will tire you and you will be much weaker for awhile after it expires." + tame_items = list( + /obj/item/organ = 70, + /obj/item/weapon/reagent_containers/food/snacks/meat/crab = 30, + /obj/item/weapon/reagent_containers/food/snacks/meat = 20 + ) + say_list_type = /datum/say_list/savik ai_holder_type = /datum/ai_holder/simple_mob/savik @@ -58,6 +64,12 @@ if(health <= (maxHealth * 0.5)) // At half health, and fighting someone currently. berserk() +/mob/living/simple_mob/animal/sif/savik/fail_tame(var/obj/O, var/mob/user) + ..() + + if(prob(30)) // They don't like people messing with them and their food. + berserk() + /datum/ai_holder/simple_mob/savik mauling = TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm index e8918845ac..66f6b3c34f 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm @@ -94,14 +94,16 @@ rally_pack() return ..() - -// These ones only retaliate. Used for a PoI. +// These ones only retaliate. Used for PoIs. /mob/living/simple_mob/animal/sif/shantak/retaliate ai_holder_type = /datum/ai_holder/simple_mob/retaliate +/mob/living/simple_mob/animal/sif/shantak/leader/autofollow/retaliate + ai_holder_type = /datum/ai_holder/simple_mob/retaliate + //Vorestation Addition /mob/living/simple_mob/animal/sif/shantak/scruffy name = "Scruffy" ai_holder_type = /datum/ai_holder/simple_mob/passive makes_dirt = 0 - faction = "neutral" \ No newline at end of file + faction = "neutral" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm index 8d19324cf2..dab82b850b 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm @@ -2,4 +2,9 @@ /mob/living/simple_mob/animal/sif minbodytemp = 175 cold_resist = 0.75 - heat_resist = -0.5 \ No newline at end of file + heat_resist = -0.5 + + tame_items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat/crab = 20, + /obj/item/weapon/reagent_containers/food/snacks/meat = 10 + ) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm index 9fbb2926bb..b2ff320b52 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm @@ -196,29 +196,15 @@ next = null ..() -/mob/living/simple_mob/animal/space/space_worm/Move() - var/attachementNextPosition = loc +/mob/living/simple_mob/animal/space/space_worm/Moved(atom/old_loc, direction, forced = FALSE) . = ..() - if(.) - if(previous) - if(previous.z != z) - previous.z_transitioning = TRUE - else - previous.z_transitioning = FALSE - previous.forceMove(attachementNextPosition) // None of this 'ripped in half by an airlock' business. - update_icon() - -/mob/living/simple_mob/animal/space/space_worm/forceMove() - var/attachementNextPosition = loc - . = ..() - if(.) - if(previous) - if(previous.z != z) - previous.z_transitioning = TRUE - else - previous.z_transitioning = FALSE - previous.forceMove(attachementNextPosition) // None of this 'ripped in half by an airlock' business. x 2 - update_icon() + if(previous) + if(previous.z != z) + previous.z_transitioning = TRUE + else + previous.z_transitioning = FALSE + previous.forceMove(old_loc) // None of this 'ripped in half by an airlock' business. + update_icon() /mob/living/simple_mob/animal/space/space_worm/head/Bump(atom/obstacle) if(open_maw && !stat && obstacle != previous) diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm index 3973a17add..5bdddb9542 100644 --- a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm @@ -89,6 +89,11 @@ firing_lanes = TRUE // But not your buddies! conserve_ammo = TRUE // And don't go wasting bullets! +/datum/ai_holder/simple_mob/merc/ranged/sniper + vision_range = 14 // We're a person with a long-ranged gun. + +/datum/ai_holder/simple_mob/merc/ranged/sniper/max_range(atom/movable/AM) + return holder.ICheckRangedAttack(AM) ? 14 : 1 //////////////////////////////// // Melee @@ -174,6 +179,27 @@ base_attack_cooldown = 5 // Two attacks a second or so. reload_max = 20 +// Rifles +/mob/living/simple_mob/humanoid/merc/ranged/rifle + icon_state = "syndicateranged_rifle" + icon_living = "syndicateranged_rifle" + + loot_list = list(/obj/item/weapon/gun/projectile/automatic/z8 = 100) + + projectilesound = 'sound/weapons/Gunshot_heavy.ogg' + projectiletype = /obj/item/projectile/bullet/rifle/a762 + projectile_dispersion = 8 + projectile_accuracy = -15 + base_attack_cooldown = 5 + reload_max = 30 + +/mob/living/simple_mob/humanoid/merc/ranged/rifle/mag + loot_list = list(/obj/item/weapon/gun/magnetic/railgun/flechette = 100) + projectiletype = /obj/item/projectile/bullet/magnetic/flechette + + projectilesound = 'sound/weapons/rapidslice.ogg' + reload_max = 10 + // Laser Rifle /mob/living/simple_mob/humanoid/merc/ranged/laser icon_state = "syndicateranged_laser" @@ -214,6 +240,89 @@ projectile_accuracy = -40 special_attack_charges = 5 +// Technician, also kind of a miniboss. Carries a dartgun and manhack launcher. +/mob/living/simple_mob/humanoid/merc/ranged/technician + icon_state = "syndicateranged_technician" + icon_living = "syndicateranged_technician" + projectiletype = /obj/item/projectile/fake_syringe/poison // Toxin dart. + projectilesound = 'sound/weapons/Gunshot_old.ogg' + + loot_list = list(/obj/item/weapon/gun/projectile/dartgun = 100, + /obj/item/weapon/gun/launcher/grenade = 100, + /obj/item/weapon/grenade/spawnergrenade/manhacks/mercenary = 50, + /obj/item/weapon/grenade/spawnergrenade/manhacks/mercenary = 30 + ) + + reload_max = 5 + reload_time = 1 SECOND + + // Manhacks. + grenade_type = /obj/item/weapon/grenade/spawnergrenade/manhacks/mercenary + + projectile_dispersion = 8 + projectile_accuracy = -40 + special_attack_charges = 5 + +// Sniper, definitely a miniboss, based on its massive range advantage, and method of battle. +// Creates a beam for 2 seconds, fire after another .5, then a 5 second reload. +/mob/living/simple_mob/humanoid/merc/ranged/sniper + icon_state = "syndicateranged_sniper" + icon_living = "syndicateranged_sniper" + projectiletype = /obj/item/projectile/bullet/rifle/a145/highvel // Really scary bullet. + projectilesound = 'sound/weapons/Gunshot_cannon.ogg' + + projectile_accuracy = 75 + + reload_max = 1 + reload_time = 5 SECONDS + + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/sniper + + ranged_attack_delay = 2.5 SECONDS + + loot_list = list(/obj/item/sniper_rifle_part/barrel = 50, + /obj/item/sniper_rifle_part/stock = 50, + /obj/item/sniper_rifle_part/trigger_group = 50, + /obj/item/weapon/grenade/spawnergrenade/manhacks/mercenary = 90 + ) + + // Babyfrags. + grenade_type = /obj/item/weapon/grenade/explosive/mini + // Babyfrags go a long way. + special_attack_min_range = 6 + special_attack_max_range = 10 + +/mob/living/simple_mob/humanoid/merc/ranged/sniper/ranged_pre_animation(atom/A) + Beam(get_turf(A), icon_state = "sniper_beam", time = 2 SECONDS, maxdistance = 15) + . = ..() + +/mob/living/simple_mob/humanoid/merc/ranged/sniper/shoot_target(atom/A) + set waitfor = FALSE + setClickCooldown(get_attack_speed()) + + face_atom(A) + + var/atom/orig_targ = A + + if(ranged_attack_delay) + A = get_turf(orig_targ) + ranged_pre_animation(A) + handle_attack_delay(A, ranged_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false. + + if(needs_reload) + if(reload_count >= reload_max) + try_reload() + return FALSE + + visible_message("\The [src] fires at \the [orig_targ]!") + shoot(A) + if(casingtype) + new casingtype(loc) + + if(ranged_attack_delay) + ranged_post_animation(A) + + return TRUE //////////////////////////////// // Space Mercs @@ -274,24 +383,39 @@ // PoI Mercs //////////////////////////////// -// None of these drop weapons, until we have a better way to balance them +// Most likely to drop a broken weapon matching them, if it's a gun. /mob/living/simple_mob/humanoid/merc/melee/poi - loot_list = list() + loot_list = list(/obj/item/weapon/material/knife/tacknife/combatknife = 100) /mob/living/simple_mob/humanoid/merc/melee/sword/poi - loot_list = list() + loot_list = list(/obj/item/weapon/melee/energy/sword/color = 20, + /obj/item/weapon/shield/energy = 40 + ) /mob/living/simple_mob/humanoid/merc/ranged/poi - loot_list = list() + loot_list = list(/obj/random/projectile/scrapped_pistol = 100) /mob/living/simple_mob/humanoid/merc/ranged/smg/poi - loot_list = list() + loot_list = list(/obj/random/projectile/scrapped_smg = 100) /mob/living/simple_mob/humanoid/merc/ranged/laser/poi - loot_list = list() + loot_list = list(/obj/random/projectile/scrapped_laser = 100) -/mob/living/simple_mob/humanoid/merc/ranged/ionrifle - loot_list = list() +/mob/living/simple_mob/humanoid/merc/ranged/ionrifle/poi + loot_list = list(/obj/random/projectile/scrapped_ionrifle = 100) /mob/living/simple_mob/humanoid/merc/ranged/grenadier/poi - loot_list = list() \ No newline at end of file + loot_list = list(/obj/random/projectile/scrapped_shotgun = 100) + +/mob/living/simple_mob/humanoid/merc/ranged/rifle/poi + loot_list = list(/obj/random/projectile/scrapped_bulldog = 100) + +/mob/living/simple_mob/humanoid/merc/ranged/rifle/mag/poi + loot_list = list(/obj/random/projectile/scrapped_flechette = 100) + +/mob/living/simple_mob/humanoid/merc/ranged/technician/poi + loot_list = list(/obj/random/projectile/scrapped_dartgun = 100, + /obj/random/projectile/scrapped_grenadelauncher = 100, + /obj/item/weapon/grenade/spawnergrenade/manhacks/mercenary = 50, + /obj/item/weapon/grenade/spawnergrenade/manhacks/mercenary = 30 + ) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm index 19ee1e3a9d..0b1dea13ff 100644 --- a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm +++ b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm @@ -41,9 +41,9 @@ // this is to prevent easy checks from the opposing force. /mob/living/simple_mob/illusion/examine(mob/user) if(copying) - copying.examine(user) - return - ..() + return copying.examine(user) + else + return list("???") /mob/living/simple_mob/illusion/bullet_act(obj/item/projectile/P) if(!P) diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/combat_drone.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/drones/combat_drone.dm similarity index 100% rename from code/modules/mob/living/simple_mob/subtypes/mechanical/combat_drone.dm rename to code/modules/mob/living/simple_mob/subtypes/mechanical/drones/combat_drone.dm diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/drones/mining_drone.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/drones/mining_drone.dm new file mode 100644 index 0000000000..5c6660e67c --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/drones/mining_drone.dm @@ -0,0 +1,126 @@ +/* + Mining drones have a slow-firing, armor-piercing beam that can destroy rocks. + They will, if "tamed", collect ore and deposit it into nearby oreboxes when adjacent. +*/ + +/datum/category_item/catalogue/technology/drone/mining_drone + name = "Drone - Mining Drone" + desc = "A crude modification of the commonly seen combat drone model, usually created\ + from the salvaged husks that litter debris fields. Capable of crude problem solving,\ + the drone's targeting system has been repurposed for locating suitable ores, though even\ + that is only functional in certain conditions.\ +

\ + These drones are armed with high-power mining emitters, which makes their decrepit forms\ + just as lethal as they were in their prime. Modified thrust vectoring devices allow them\ + to gather ore effectively without expending mechanical energy." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/mechanical/mining_drone + name = "mining drone" + desc = "An automated drone with a worn-out appearance, but an ominous gaze." + catalogue_data = list(/datum/category_item/catalogue/technology/drone/mining_drone) + + icon_state = "miningdrone" + icon_living = "miningdrone" + icon_dead = "miningdrone_dead" + has_eye_glow = TRUE + + faction = "malf_drone" + + maxHealth = 50 + health = 50 + movement_cooldown = 5 + hovering = TRUE + + base_attack_cooldown = 5 + projectiletype = /obj/item/projectile/energy/excavate + projectilesound = 'sound/weapons/pulse3.ogg' + + response_help = "pokes" + response_disarm = "gently pushes aside" + response_harm = "hits" + + ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening + say_list_type = /datum/say_list/malf_drone + + tame_items = list( + /obj/item/weapon/ore/verdantium = 90, + /obj/item/weapon/ore/hydrogen = 90, + /obj/item/weapon/ore/osmium = 70, + /obj/item/weapon/ore/diamond = 70, + /obj/item/weapon/ore/gold = 55, + /obj/item/weapon/ore/silver = 55, + /obj/item/weapon/ore/lead = 40, + /obj/item/weapon/ore/marble = 30, + /obj/item/weapon/ore/coal = 25, + /obj/item/weapon/ore/iron = 25, + /obj/item/weapon/ore/glass = 15, + /obj/item/weapon/ore = 5 + ) + + var/datum/effect/effect/system/ion_trail_follow/ion_trail = null + var/obj/item/shield_projector/shields = null + var/obj/item/weapon/storage/bag/ore/my_storage = null + + var/last_search = 0 + var/search_cooldown = 5 SECONDS + +/mob/living/simple_mob/mechanical/mining_drone/Initialize() + ion_trail = new + ion_trail.set_up(src) + ion_trail.start() + + my_storage = new /obj/item/weapon/storage/bag/ore(src) + shields = new /obj/item/shield_projector/rectangle/automatic/drone(src) + return ..() + +/mob/living/simple_mob/mechanical/mining_drone/Destroy() + QDEL_NULL(ion_trail) + QDEL_NULL(shields) + QDEL_NULL(my_storage) + return ..() + +/mob/living/simple_mob/mechanical/mining_drone/death() + my_storage.forceMove(get_turf(src)) + my_storage = null + ..(null,"suddenly breaks apart.") + qdel(src) + +/mob/living/simple_mob/mechanical/mining_drone/Process_Spacemove(var/check_drift = 0) + return TRUE + +/mob/living/simple_mob/mechanical/mining_drone/IIsAlly(mob/living/L) + . = ..() + + var/mob/living/carbon/human/H = L + if(!istype(H)) + return . + + if(!.) + var/has_tool = FALSE + var/obj/item/I = H.get_active_hand() + if(istype(I,/obj/item/weapon/pickaxe)) + has_tool = TRUE + return has_tool + +/mob/living/simple_mob/mechanical/mining_drone/handle_special() + if(my_storage && (get_AI_stance() in list(STANCE_APPROACH, STANCE_IDLE, STANCE_FOLLOW)) && !is_AI_busy() && isturf(loc) && (world.time > last_search + search_cooldown) && (my_storage.contents.len < my_storage.max_storage_space)) + last_search = world.time + + for(var/turf/T in view(world.view,src)) + if(my_storage.contents.len >= my_storage.max_storage_space) + break + + if((locate(/obj/item/weapon/ore) in T) && prob(40)) + src.Beam(T, icon_state = "holo_beam", time = 0.5 SECONDS) + my_storage.rangedload(T, src) + + if(my_storage.contents.len >= my_storage.max_storage_space) + visible_message("\The [src] emits a shrill beep, indicating its storage is full.") + + var/obj/structure/ore_box/OB = locate() in view(2, src) + + if(istype(OB) && my_storage && my_storage.contents.len) + src.Beam(OB, icon_state = "rped_upgrade", time = 1 SECONDS) + for(var/obj/item/I in my_storage) + my_storage.remove_from_storage(I, OB) diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm index f5baafcc24..df0984878e 100644 --- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm @@ -67,4 +67,12 @@ // Variant that starts in defense mode, perhaps for PoIs. /mob/living/simple_mob/mechanical/mecha/combat/durand/defensive/Initialize() set_defense_mode(TRUE) - return ..() + return ..() + +/mob/living/simple_mob/mechanical/mecha/combat/durand/defensive/mercenary + desc = "An aging combat exosuit utilized by many corporations. It was originally developed to fight in the First Contact War.\ + This one has been retrofitted into a turret." + + projectiletype = /obj/item/projectile/beam/heavylaser/fakeemitter + + pilot_type = /mob/living/simple_mob/humanoid/merc/ranged diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm index fde974026f..ac9e3d20ff 100644 --- a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm +++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm @@ -133,18 +133,13 @@ return ..() /mob/living/simple_mob/construct/examine(mob/user) - ..(user) - var/msg = "*---------*\nThis is [bicon(src)] \a [src]!\n" - if (src.health < src.getMaxHealth()) - msg += "" - if (src.health >= src.getMaxHealth()/2) - msg += "It looks slightly dented.\n" + . = ..(user) + var/max = getMaxHealth() + if (health < max) + if (health >= max/2) + . += "It looks slightly dented." else - msg += "It looks severely dented!\n" - msg += "" - msg += "*---------*" - - to_chat(user,msg) + . += "It looks severely dented!" //Constructs levitate, can fall from a shuttle with no harm, and are piloted by either damned spirits or some otherworldly entity. Let 'em float in space. /mob/living/simple_mob/construct/Process_Spacemove() diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm index 13764d20fd..7b43a09b2b 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm @@ -1,8 +1,7 @@ // Handles hunger, starvation, growth, and eatting humans. -// Might be best to make this a /mob/living proc and override. -/mob/living/simple_mob/slime/xenobio/proc/adjust_nutrition(input, var/heal = 1) - nutrition = between(0, nutrition + input, get_max_nutrition()) +/mob/living/simple_mob/slime/xenobio/adjust_nutrition(input, var/heal = 1) + ..(input) if(input > 0) // Gain around one level per 50 nutrition. @@ -19,10 +18,6 @@ adjustOxyLoss(-input * 0.2) adjustCloneLoss(-input * 0.2) - -/mob/living/simple_mob/slime/xenobio/proc/get_max_nutrition() // Can't go above it - return is_adult ? 1200 : 1000 - /mob/living/simple_mob/slime/xenobio/proc/get_grow_nutrition() // Above it we grow, below it we can eat return is_adult ? 1000 : 800 diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm index 8103abf0d8..ba2d76b39f 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm @@ -4,6 +4,7 @@ desc = "The most basic of slimes. The grey slime has no remarkable qualities, however it remains one of the most useful colors for scientists." layer = MOB_LAYER + 1 // Need them on top of other mobs or it looks weird when consuming something. ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime // This should never be changed for xenobio slimes. + max_nutrition = 1000 var/is_adult = FALSE // Slimes turn into adults when fed enough. Adult slimes are somewhat stronger, and can reproduce if fed enough. var/maxHealth_adult = 200 var/power_charge = 0 // Disarm attacks can shock someone if high/lucky enough. @@ -73,25 +74,25 @@ ..() /mob/living/simple_mob/slime/xenobio/examine(mob/user) - ..() + . = ..() if(hat) - to_chat(user, "It is wearing \a [hat].") + . += "It is wearing \a [hat]." if(stat == DEAD) - to_chat(user, "It appears to be dead.") + . += "It appears to be dead." else if(incapacitated(INCAPACITATION_DISABLED)) - to_chat(user, "It appears to be incapacitated.") + . += "It appears to be incapacitated." else if(harmless) - to_chat(user, "It appears to have been pacified.") + . += "It appears to have been pacified." else if(has_AI()) var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder if(AI.rabid) - to_chat(user, "It seems very, very angry and upset.") + . += "It seems very, very angry and upset." else if(AI.obedience >= 5) - to_chat(user, "It looks rather obedient.") + . += "It looks rather obedient." else if(AI.discipline) - to_chat(user, "It has been subjugated by force, at least for now.") + . += "It has been subjugated by force, at least for now." /mob/living/simple_mob/slime/xenobio/proc/make_adult() if(is_adult) @@ -101,6 +102,7 @@ melee_damage_lower = round(melee_damage_lower * 2) // 20 melee_damage_upper = round(melee_damage_upper * 2) // 30 maxHealth = maxHealth_adult + max_nutrition = 1200 amount_grown = 0 update_icon() update_name() diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm b/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm index 6f96b5e3e0..f5004db3c1 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm @@ -60,17 +60,20 @@ verbs += /mob/living/proc/ventcrawl return ..() +/mob/living/simple_mob/vore/hostile/morph/Destroy() + form = null + return ..() + /mob/living/simple_mob/vore/hostile/morph/proc/allowed(atom/movable/A) return !is_type_in_typecache(A, blacklist_typecache) && (isobj(A) || ismob(A)) /mob/living/simple_mob/vore/hostile/morph/examine(mob/user) if(morphed) - form.examine(user) - if(get_dist(user,src)<=3) - to_chat(user, "It doesn't look quite right...") + . = form.examine(user) + if(get_dist(user, src) <= 3) + . += "[form] doesn't look quite right..." else - ..() - return + . = ..() /mob/living/simple_mob/vore/hostile/morph/ShiftClickOn(atom/movable/A) if(Adjacent(A)) @@ -93,19 +96,16 @@ form = target visible_message("[src] suddenly twists and changes shape, becoming a copy of [target]!") - var/mutable_appearance/ma = new(target) - ma.alpha = max(ma.alpha, 150) //fucking chameleons - ma.transform = initial(target.transform) //will this ever be non-null? - - //copy_overlays(target, TRUE) //Overlays should be a part of ma, no? + name = target.name + desc = target.desc + icon = target.icon + icon_state = target.icon_state + alpha = max(target.alpha, 150) + copy_overlays(target, TRUE) our_size_multiplier = size_multiplier - ma.pixel_x = initial(target.pixel_x) - ma.pixel_y = initial(target.pixel_y) - - //MA changes end - appearance = ma - //Non-MA changes + pixel_x = initial(target.pixel_x) + pixel_y = initial(target.pixel_y) density = target.density @@ -157,7 +157,6 @@ density = initial(density) cut_overlays(TRUE) //ALL of zem - overlays.Cut() //Annoying. ANNOYING. maptext = null diff --git a/code/modules/mob/living/simple_mob/taming.dm b/code/modules/mob/living/simple_mob/taming.dm new file mode 100644 index 0000000000..e24b675c5b --- /dev/null +++ b/code/modules/mob/living/simple_mob/taming.dm @@ -0,0 +1,62 @@ + +/mob/living/simple_mob + // Assoc list of items that can be given to a mob to befriend it, and the percent success. + var/list/tame_items + // List of mobs who are 'friends'. + var/list/tamers + +/mob/living/simple_mob/IIsAlly(mob/living/L) + . = ..() + + if(!. && LAZYLEN(tamers)) + listclearnulls(tamers) + if(L in tamers) + return TRUE + +/mob/living/simple_mob/proc/can_tame(var/obj/O, var/mob/user) + if(!LAZYLEN(tame_items)) + return FALSE + + if(!user) + return FALSE + + if(!O) + return FALSE + + for(var/path in tame_items) + if(istype(O, path) && unique_tame_check(O,user)) + return TRUE + + return FALSE + +/mob/living/simple_mob/proc/unique_tame_check(var/obj/O, var/mob/user) + if(do_after(user, 0.5 SECONDS, src)) + return TRUE + return FALSE + +/mob/living/simple_mob/proc/tame_prob(var/obj/O, var/mob/user) + for(var/path in tame_items) + if(istype(O, path)) + if(prob(tame_items[path])) + return TRUE + return FALSE + +/mob/living/simple_mob/proc/do_tame(var/obj/O, var/mob/user) + if(!user) + return + + if(!LAZYLEN(tamers)) + tamers = list() + + handle_tame_item(O, user) + + tamers |= user + ai_holder.forget_everything() + +/mob/living/simple_mob/proc/handle_tame_item(var/obj/O, var/mob/user) + user.drop_from_inventory(O) + qdel(O) + +/mob/living/simple_mob/proc/fail_tame(var/obj/O, var/mob/user) + user.drop_from_inventory(O) + qdel(O) diff --git a/code/modules/mob/living/voice/voice.dm b/code/modules/mob/living/voice/voice.dm index 92270dc145..919e302bcf 100644 --- a/code/modules/mob/living/voice/voice.dm +++ b/code/modules/mob/living/voice/voice.dm @@ -104,7 +104,7 @@ // Proc: say() // Parameters: 4 (generic say() arguments) // Description: Adds a speech bubble to the communicator device, then calls ..() to do the real work. -/mob/living/voice/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering=0) +/mob/living/voice/say(var/message, var/datum/language/speaking = null, var/whispering = 0) //Speech bubbles. if(comm) var/speech_bubble_test = say_test(message) @@ -118,7 +118,7 @@ M << speech_bubble src << speech_bubble - ..(message, speaking, verb, alt_name, whispering) //mob/living/say() can do the actual talking. + ..() //mob/living/say() can do the actual talking. // Proc: speech_bubble_appearance() // Parameters: 0 @@ -126,15 +126,15 @@ /mob/living/voice/speech_bubble_appearance() return "comm" -/mob/living/voice/say_understands(var/other,var/datum/language/speaking = null) +/mob/living/voice/say_understands(var/other, var/datum/language/speaking = null) //These only pertain to common. Languages are handled by mob/say_understands() - if (!speaking) - if (istype(other, /mob/living/carbon)) - return 1 - if (istype(other, /mob/living/silicon)) - return 1 - if (istype(other, /mob/living/carbon/brain)) - return 1 + if(!speaking) + if(iscarbon(other)) + return TRUE + if(issilicon(other)) + return TRUE + if(isbrain(other)) + return TRUE return ..() /mob/living/voice/custom_emote(var/m_type=1,var/message = null,var/range=world.view) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3c6f9b12df..315a80702b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -45,6 +45,7 @@ dead_mob_list += src else living_mob_list += src + lastarea = get_area(src) hook_vr("mob_new",list(src)) //VOREStation Code update_transform() // Some mobs may start bigger or smaller than normal. return ..() @@ -237,7 +238,10 @@ return 1 face_atom(A) - A.examine(src) + var/list/results = A.examine(src) + if(!results || !results.len) + results = list("You were unable to examine that. Tell a developer!") + to_chat(src, jointext(results, "
")) /mob/verb/pointed(atom/A as mob|obj|turf in view()) set name = "Point To" @@ -512,15 +516,6 @@ /mob/proc/pull_damage() - if(ishuman(src)) - var/mob/living/carbon/human/H = src - if(H.health - H.halloss <= config.health_threshold_softcrit) - for(var/name in H.organs_by_name) - var/obj/item/organ/external/e = H.organs_by_name[name] - if(e && H.lying) - if((e.status & ORGAN_BROKEN && (!e.splinted || (e.splinted && e.splinted in e.contents && prob(30))) || e.status & ORGAN_BLEEDING) && (H.getBruteLoss() + H.getFireLoss() >= 100)) - return 1 - break return 0 /mob/MouseDrop(mob/M as mob) @@ -741,12 +736,12 @@ /mob/proc/facedir(var/ndir) - if(!canface() || (client && (client.moving || (world.time < move_delay)))) + if(!canface() || (client && (client.moving || !checkMoveCooldown()))) return 0 set_dir(ndir) if(buckled && buckled.buckle_movable) buckled.set_dir(ndir) - move_delay += movement_delay() + setMoveCooldown(movement_delay()) return 1 @@ -909,7 +904,7 @@ mob/proc/yank_out_object() set desc = "Remove an embedded item at the cost of bleeding and pain." set src in view(1) - if(!isliving(usr) || !usr.canClick()) + if(!isliving(usr) || !usr.checkClickCooldown()) return usr.setClickCooldown(20) @@ -1225,3 +1220,6 @@ mob/proc/yank_out_object() selfimage.loc = src return selfimage + +/mob/proc/GetAltName() + return "" diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 6fab127084..111bcab799 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -7,8 +7,7 @@ var/datum/mind/mind var/stat = 0 //Whether a mob is alive or dead. TODO: Move this to living - Nodrak - var/move_delay = null // For movement speed delays. - var/next_move = null // For click delay, despite the misleading name. + var/next_move = null // world.time when mob is next allowed to self-move. //Not in use yet var/obj/effect/organstructure/organStructure = null @@ -112,9 +111,7 @@ var/bodytemperature = 310.055 //98.7 F var/drowsyness = 0.0//Carbon var/charges = 0.0 - var/nutrition = 400.0//Carbon - var/overeatduration = 0 // How long this guy is overeating //Carbon var/paralysis = 0.0 var/stunned = 0.0 var/weakened = 0.0 @@ -233,3 +230,5 @@ var/attack_icon_state //State for above var/registered_z + + var/list/progressbars = null //for stacking do_after bars \ No newline at end of file diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 6333d7a363..cd883b1c96 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -174,6 +174,14 @@ assailant.visible_message("[assailant] covers [affecting]'s eyes!") if(affecting.eye_blind < 3) affecting.Blind(3) + /*YW Change start, Nope + //VOREStation Edit + if(BP_HEAD) + if(force_down) + if(announce) + assailant.visible_message("[assailant] sits on [target]'s face!") + //VOREStation Edit End + YW Change stop*/ /obj/item/weapon/grab/attack_self() return s_click(hud) @@ -233,8 +241,6 @@ return if(state == GRAB_UPGRADING) return - if(!assailant.canClick()) - return if(world.time < (last_action + UPGRADE_COOLDOWN)) return if(!assailant.canmove || assailant.lying) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 5450ced7ee..7c1034a77d 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -184,6 +184,12 @@ proc/getsensorlevel(A) p++ return t +/proc/stars_all(list/message_pieces, pr) + // eugh, we have to clone the list to avoid collateral damage due to the nature of these messages + . = list() + for(var/datum/multilingual_say_piece/S in message_pieces) + . += new /datum/multilingual_say_piece(S.speaking, stars(S.message)) + proc/slur(phrase) phrase = html_decode(phrase) var/leng=length(phrase) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 0e4a326cab..c7a4a94ce8 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -1,8 +1,8 @@ /mob/proc/setMoveCooldown(var/timeout) - move_delay = max(world.time + timeout, move_delay) + next_move = max(world.time + timeout, next_move) -/mob/proc/check_move_cooldown() - if(world.time < src.move_delay) +/mob/proc/checkMoveCooldown() + if(world.time < next_move) return FALSE // Need to wait more. return TRUE @@ -108,206 +108,218 @@ mob.control_object.forceMove(get_step(mob.control_object,direct)) return - +// NB: This is called for 'self movement', not for being pulled or things like that, which COULD be the case for /mob/Move +// But to be honest, A LOT OF THIS CODE should be in /mob/Move /client/Move(n, direct) - if(!mob) - return // Moved here to avoid nullrefs below + // Prevents a double-datum lookup each time this is referenced + // May seem dumb, but it's faster to look up a var on my_mob than dereferencing mob on client, then dereferencing the var on that mob + // Having it in a var here means it's more available to look up things on. It won't speed up that second dereference, though. + var/mob/my_mob = mob - if(mob.control_object) Move_object(direct) + // Nothing to do in nullspace + if(!my_mob.loc) + return - if(mob.incorporeal_move && isobserver(mob)) + // Used many times below, faster reference. + var/atom/loc = my_mob.loc + + // We're controlling an object which is SOMEHOW DIFFERENT FROM AN EYE?? + if(my_mob.control_object) + Move_object(direct) + + // Ghosty mob movement + if(my_mob.incorporeal_move && isobserver(my_mob)) Process_Incorpmove(direct) return - if(moving) return 0 + // We're in the middle of another move we've already decided to do + if(moving) + return 0 - if(!mob.check_move_cooldown()) + // We're still cooling down from the last move + if(!my_mob.checkMoveCooldown()) return - if(locate(/obj/effect/stop/, mob.loc)) - for(var/obj/effect/stop/S in mob.loc) - if(S.victim == mob) - return - - if(mob.stat==DEAD && isliving(mob) && !mob.forbid_seeing_deadchat) - mob.ghostize() + // If dead and we try to move in our mob, it leaves our body + if(my_mob.stat == DEAD && isliving(my_mob) && !my_mob.forbid_seeing_deadchat) + my_mob.ghostize() return - // handle possible Eye movement - if(mob.eyeobj) - return mob.EyeMove(n,direct) + // If we have an eyeobj, it moves instead + if(my_mob.eyeobj) + return my_mob.EyeMove(n,direct) - if(mob.transforming) return//This is sota the goto stop mobs from moving var + // This is sota the goto stop mobs from moving var (for some reason) + if(my_mob.transforming) + return - if(isliving(mob)) - var/mob/living/L = mob + if(isliving(my_mob)) + var/mob/living/L = my_mob if(L.incorporeal_move)//Move though walls Process_Incorpmove(direct) return - if(mob.client) - if(mob.client.view != world.view) // If mob moves while zoomed in with device, unzoom them. - for(var/obj/item/item in mob.contents) - if(item.zoom) - item.zoom() - break - /* - if(locate(/obj/item/weapon/gun/energy/sniperrifle, mob.contents)) // If mob moves while zoomed in with sniper rifle, unzoom them. - var/obj/item/weapon/gun/energy/sniperrifle/s = locate() in mob - if(s.zoom) - s.zoom() - if(locate(/obj/item/device/binoculars, mob.contents)) // If mob moves while zoomed in with binoculars, unzoom them. - var/obj/item/device/binoculars/b = locate() in mob - if(b.zoom) - b.zoom() - */ + /* TODO observer unzoom + if(view != world.view) // If mob moves while zoomed in with device, unzoom them. + for(var/obj/item/item in mob.contents) + if(item.zoom) + item.zoom() + break + */ - if(Process_Grab()) return - - if(!mob.canmove) + if(Process_Grab()) return - //if(istype(mob.loc, /turf/space) || (mob.flags & NOGRAV)) - // if(!mob.Process_Spacemove(0)) return 0 + // Can't move + if(!my_mob.canmove) + return - if(!mob.lastarea) - mob.lastarea = get_area(mob.loc) + // Relaymove could handle it + if(my_mob.machine) + var/result = my_mob.machine.relaymove(my_mob, direct) + if(result) + return result - if((istype(mob.loc, /turf/space)) || (mob.lastarea.has_gravity == 0)) - if(!mob.Process_Spacemove(0)) return 0 - - if(isobj(mob.loc) || ismob(mob.loc))//Inside an object, tell it we moved - var/atom/O = mob.loc - return O.relaymove(mob, direct) - - if(isturf(mob.loc)) - - if(mob.restrained())//Why being pulled while cuffed prevents you from moving - for(var/mob/M in range(mob, 1)) - if(M.pulling == mob) - if(!M.restrained() && M.stat == 0 && M.canmove && mob.Adjacent(M)) - to_chat(src, "You're restrained! You can't move!") - return 0 - else - M.stop_pulling() - - if(mob.pinned.len) - to_chat(src, "You're pinned to a wall by [mob.pinned[1]]!") + // Can't control ourselves when drifting + if(isspace(loc) || my_mob.lastarea?.has_gravity == 0) + if(!my_mob.Process_Spacemove(0)) return 0 - mob.move_delay = world.time//set move delay + // Inside an object, tell it we moved + if(isobj(loc) || ismob(loc)) + return loc.relaymove(my_mob, direct) - switch(mob.m_intent) - if("run") - if(mob.drowsyness > 0) - mob.move_delay += 6 - mob.move_delay += config.run_speed - if("walk") - mob.move_delay += config.walk_speed - mob.move_delay += mob.movement_delay(n, direct) + // Can't move unless you're in the world somewhere + if(!isturf(loc)) + return - if(istype(mob.buckled, /obj/vehicle) || istype(mob.buckled, /mob)) //VOREStation Edit: taur riding. I think. - //manually set move_delay for vehicles so we don't inherit any mob movement penalties - //specific vehicle move delays are set in code\modules\vehicles\vehicle.dm - mob.move_delay = world.time - //drunk driving - if(mob.confused && prob(20)) //vehicles tend to keep moving in the same direction - direct = turn(direct, pick(90, -90)) - if(istype(mob.buckled, /mob)) //VOREStation Edit to prevent mob riding speed exploit. - var/mob/M = mob.buckled - if(M.move_delay > mob.move_delay - 10) - return - return mob.buckled.relaymove(mob,direct) - - if(istype(mob.machine, /obj/machinery)) - if(mob.machine.relaymove(mob,direct)) - return - - if(mob.pulledby || mob.buckled) // Wheelchair driving! - if(istype(mob.loc, /turf/space)) - return // No wheelchair driving in space - if(istype(mob.pulledby, /obj/structure/bed/chair/wheelchair)) - return mob.pulledby.relaymove(mob, direct) - else if(istype(mob.buckled, /obj/structure/bed/chair/wheelchair)) - if(ishuman(mob)) - var/mob/living/carbon/human/driver = mob - var/obj/item/organ/external/l_hand = driver.get_organ("l_hand") - var/obj/item/organ/external/r_hand = driver.get_organ("r_hand") - if((!l_hand || l_hand.is_stump()) && (!r_hand || r_hand.is_stump())) - return // No hands to drive your chair? Tough luck! - //drunk wheelchair driving - else if(mob.confused) - switch(mob.m_intent) - if("run") - if(prob(50)) direct = turn(direct, pick(90, -90)) - if("walk") - if(prob(25)) direct = turn(direct, pick(90, -90)) - mob.move_delay += 2 - return mob.buckled.relaymove(mob,direct) - - //We are now going to move - moving = 1 - //Something with pulling things - if(locate(/obj/item/weapon/grab, mob)) - mob.move_delay = max(mob.move_delay, world.time + 7) - var/list/L = mob.ret_grab() - if(istype(L, /list)) - if(L.len == 2) - L -= mob - var/mob/M = L[1] - if(M) - if ((get_dist(mob, M) <= 1 || M.loc == mob.loc)) - var/turf/T = mob.loc - . = ..() - if (isturf(M.loc)) - var/diag = get_dir(mob, M) - if ((diag - 1) & diag) - else - diag = null - if ((get_dist(mob, M) > 1 || diag)) - step(M, get_dir(M.loc, T)) + // Why being pulled while cuffed prevents you from moving + if(my_mob.restrained()) + for(var/mob/M in range(my_mob, 1)) + if(M.pulling == my_mob) + if(!M.restrained() && M.stat == 0 && M.canmove && my_mob.Adjacent(M)) + to_chat(src, "You're restrained! You can't move!") + return 0 else - for(var/mob/M in L) - M.other_mobs = 1 - if(mob != M) - M.animate_movement = 3 - for(var/mob/M in L) - spawn( 0 ) - step(M, direct) - return - spawn( 1 ) - M.other_mobs = null - M.animate_movement = 2 - return + M.stop_pulling() - else - if(mob.confused) - switch(mob.m_intent) + if(my_mob.pinned.len) + to_chat(src, "You're pinned to a wall by [my_mob.pinned[1]]!") + return 0 + + if(istype(my_mob.buckled, /obj/vehicle) || ismob(my_mob.buckled)) + //manually set move_delay for vehicles so we don't inherit any mob movement penalties + //specific vehicle move delays are set in code\modules\vehicles\vehicle.dm + my_mob.next_move = world.time + //drunk driving + if(my_mob.confused && prob(20)) //vehicles tend to keep moving in the same direction + direct = turn(direct, pick(90, -90)) + if(ismob(my_mob.buckled)) + var/mob/M = my_mob.buckled + if(M.next_move > my_mob.next_move) // Don't let piggyback riders move their mob IN ADDITION TO the mob moving + return + return my_mob.buckled.relaymove(my_mob,direct) + + if(my_mob.pulledby || my_mob.buckled) // Wheelchair driving! + if(isspace(loc)) + return // No wheelchair driving in space + if(istype(my_mob.pulledby, /obj/structure/bed/chair/wheelchair)) + my_mob.setMoveCooldown(3) + return my_mob.pulledby.relaymove(my_mob, direct) + else if(istype(my_mob.buckled, /obj/structure/bed/chair/wheelchair)) + if(ishuman(my_mob)) + var/mob/living/carbon/human/driver = my_mob + var/obj/item/organ/external/l_hand = driver.get_organ("l_hand") + var/obj/item/organ/external/r_hand = driver.get_organ("r_hand") + if((!l_hand || l_hand.is_stump()) && (!r_hand || r_hand.is_stump())) + return // No hands to drive your chair? Tough luck! + //drunk wheelchair driving + else if(my_mob.confused) + switch(my_mob.m_intent) if("run") - if(prob(75)) + if(prob(50)) direct = turn(direct, pick(90, -90)) - n = get_step(mob, direct) if("walk") if(prob(25)) direct = turn(direct, pick(90, -90)) - n = get_step(mob, direct) - . = mob.SelfMove(n, direct) + my_mob.setMoveCooldown(3) + return my_mob.buckled.relaymove(my_mob,direct) - for (var/obj/item/weapon/grab/G in mob) - if (G.state == GRAB_NECK) - mob.set_dir(reverse_dir[direct]) - G.adjust_position() - for (var/obj/item/weapon/grab/G in mob.grabbed_by) - G.adjust_position() + // We are now going to move + moving = 1 + var/total_delay = 0 + var/pre_move_loc = loc - moving = 0 + // Start tally'ing when we can next move + // Grabs slow you down + if(locate(/obj/item/weapon/grab) in my_mob) + total_delay += 7 + + // Movespeed delay based on movement mode + switch(my_mob.m_intent) + if("run") + if(my_mob.drowsyness > 0) + total_delay += 6 + total_delay += config.run_speed + if("walk") + total_delay += config.walk_speed + + // A billion other things can slow you down, ask the mob + total_delay += my_mob.movement_delay(n, direct) - return . + // Confused direction randomization + if(my_mob.confused) + switch(my_mob.m_intent) + if("run") + if(prob(75)) + direct = turn(direct, pick(90, -90)) + n = get_step(my_mob, direct) + if("walk") + if(prob(25)) + direct = turn(direct, pick(90, -90)) + n = get_step(my_mob, direct) + + total_delay = TICKS2DS(-round(-(DS2TICKS(total_delay)))) //Rounded to the next tick in equivalent ds + my_mob.setMoveCooldown(total_delay) + . = my_mob.SelfMove(n, direct, total_delay) - return + // If we have a grab + var/list/grablist = my_mob.ret_grab() + if(grablist.len) + grablist -= my_mob // Just in case we're in a circular grab chain + + // It's just us and another person + if(grablist.len == 1) + var/mob/M = grablist[1] + if(!my_mob.Adjacent(M)) //Oh no, we moved away + M.Move(pre_move_loc, get_dir(M, pre_move_loc), total_delay) //Have them step towards where we were + + // It's a grab chain + else + for(var/mob/M in grablist) + my_mob.other_mobs = 1 + M.other_mobs = 1 //Has something to do with people being able or unable to pass a chain of mobs + + //Ugly! + spawn(0) //Step + M.Move(pre_move_loc, get_dir(M, pre_move_loc), total_delay) + spawn(1) //Unstep + M.other_mobs = null + spawn(1) //Unset + my_mob.other_mobs = null -/mob/proc/SelfMove(turf/n, direct) - return Move(n, direct) + // Update all the grabs! + for (var/obj/item/weapon/grab/G in my_mob) + if (G.state == GRAB_NECK) + mob.set_dir(reverse_dir[direct]) + G.adjust_position() + for (var/obj/item/weapon/grab/G in my_mob.grabbed_by) + G.adjust_position() + + // We're not in the middle of a move anymore + moving = 0 +/mob/proc/SelfMove(turf/n, direct, movetime) + return Move(n, direct, movetime) ///Process_Incorpmove ///Called by client/Move() @@ -366,17 +378,7 @@ anim(mobloc,mob,'icons/mob/mob.dmi',,"shadow",,mob.dir) mob.forceMove(get_step(mob, direct)) mob.dir = direct - // Crossed is always a bit iffy - for(var/obj/S in mob.loc) - if(istype(S,/obj/effect/step_trigger) || istype(S,/obj/effect/beam)) - S.Crossed(mob) - var/area/A = get_area_master(mob) - if(A) - A.Entered(mob) - if(isturf(mob.loc)) - var/turf/T = mob.loc - T.Entered(mob) mob.Post_Incorpmove() return 1 @@ -468,16 +470,11 @@ /mob/proc/update_gravity() return -/* -// The real Move() proc is above, but touching that massive block just to put this in isn't worth it. -/mob/Move(var/newloc, var/direct) - . = ..(newloc, direct) - if(.) - post_move(newloc, direct) -*/ + // Called when a mob successfully moves. // Would've been an /atom/movable proc but it caused issues. /mob/Moved(atom/oldloc) + . = ..() for(var/obj/O in contents) O.on_loc_moved(oldloc) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index bfdc39b25e..314186936b 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -371,7 +371,7 @@ //Find our spawning point. var/list/join_props = job_master.LateSpawn(client, rank) - + if(!join_props) return @@ -459,7 +459,7 @@ dat += "Choose from the following open/valid positions:
" dat += "[show_hidden_jobs ? "Hide":"Show"] Hidden Jobs.
" - + var/deferred = "" for(var/datum/job/job in job_master.occupations) if(job && IsJobAvailable(job.title)) @@ -476,9 +476,9 @@ // Only players with the job assigned and AFK for less than 10 minutes count as active for(var/mob/M in player_list) if(M.mind && M.client && M.mind.assigned_role == job.title && M.client.inactivity <= 10 MINUTES) active++ - + var/string = "[job.title] ([job.current_positions]) (Active: [active])
" - + if(job.offmap_spawn) //At the bottom deferred += string else @@ -511,8 +511,6 @@ if(!new_character) new_character = new(T) - new_character.lastarea = get_area(T) - if(ticker.random_players) new_character.gender = pick(MALE, FEMALE) client.prefs.real_name = random_name(new_character.gender) @@ -605,7 +603,7 @@ return ready && ..() // Prevents lobby players from seeing say, even with ghostears -/mob/new_player/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null) +/mob/new_player/hear_say(var/list/message_pieces, var/verb = "says", var/italics = 0, var/mob/speaker = null) return // Prevents lobby players from seeing emotes, even with ghosteyes diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index d11cc80594..2bf54878b2 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -1560,6 +1560,11 @@ icon_state = "backstripe" body_parts = list(BP_TORSO) + heterochromia + name = "Heterochromia (right eye)" + icon_state = "heterochromia" + body_parts = list(BP_HEAD) + //Taj specific stuff taj_belly name = "Belly Fur (Taj)" @@ -1642,6 +1647,12 @@ body_parts = list(BP_HEAD, BP_TORSO, BP_GROIN, BP_R_LEG, BP_L_LEG) species_allowed = list(SPECIES_TESHARI) + teshi_heterochromia + name = "Heterochromia (Teshari) (right eye)" + icon_state = "teshi_heterochromia" + body_parts = list(BP_HEAD) + species_allowed = list(SPECIES_TESHARI) + //skin styles - WIP //going to have to re-integrate this with surgery //let the icon_state hold an icon preview for now diff --git a/code/modules/mob/new_player/sprite_accessories_vr.dm b/code/modules/mob/new_player/sprite_accessories_vr.dm index ec3cb570b2..c720b96b6d 100644 --- a/code/modules/mob/new_player/sprite_accessories_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_vr.dm @@ -623,6 +623,12 @@ color_blend_mode = ICON_MULTIPLY body_parts = list(BP_HEAD) + vulp_short_nose + name = "nose, short (Vulp)" + icon_state = "vulp_short_nose" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + snoutstripe name = "snout stripe (Vulp)" icon_state = "snoutstripe" @@ -635,6 +641,12 @@ color_blend_mode = ICON_MULTIPLY body_parts = list(BP_HEAD) + vulp_facealt + name = "face, alt. (Vulp)" + icon_state = "vulp_facealt" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + vulp_earsface name = "ears and face (Vulp)" icon_state = "vulp_earsface" @@ -1086,12 +1098,6 @@ icon_state = "rosette" body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD) - heterochromia - name = "Heterochromia" - icon_state = "heterochromia" - body_parts = list(BP_HEAD) - species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST) //This lets all races use the default hairstyles. - werewolf_nose name = "Werewolf nose" icon = 'icons/mob/species/werebeast/werebeast_markings.dmi' @@ -1129,4 +1135,22 @@ icon_state = "shadekin-snoot" color_blend_mode = ICON_MULTIPLY body_parts = list(BP_HEAD) - species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_SHADEKIN_YW) //YW edits \ No newline at end of file + species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_SHADEKIN_YW) //YW edits + + taj_nose_alt + name = "Nose Color, alt. (Taj)" + icon_state = "taj_nosealt" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + + talons + name = "Talons" + icon_state = "talons" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG) + + claws + name = "Claws" + icon_state = "claws" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_HAND,BP_R_HAND) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 25d506d91a..6db108fa6f 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -1,4 +1,4 @@ -/mob/proc/say() +/mob/proc/say(var/message, var/datum/language/speaking = null, var/whispering = 0) return /mob/verb/whisper(message as text) @@ -30,7 +30,7 @@ set_typing_indicator(FALSE) if(use_me) - usr.emote("me",usr.emote_type,message) + custom_emote(usr.emote_type, message) else usr.emote(message) @@ -42,7 +42,7 @@ if(!client) return // Clientless mobs shouldn't be trying to talk in deadchat. - if(!src.client.holder) + if(!client.holder) if(!config.dsay_allowed) to_chat(src, "Deadchat is globally muted.") return @@ -55,55 +55,55 @@ say_dead_direct("[pick("complains","moans","whines","laments","blubbers")], \"[message]\"", src) -/mob/proc/say_understands(var/mob/other,var/datum/language/speaking = null) - - if (src.stat == DEAD) - return 1 +/mob/proc/say_understands(var/mob/other, var/datum/language/speaking = null) + if(stat == DEAD) + return TRUE //Universal speak makes everything understandable, for obvious reasons. - else if(src.universal_speak || src.universal_understand) - return 1 + else if(universal_speak || universal_understand) + return TRUE //Languages are handled after. - if (!speaking) + if(!speaking) if(!other) - return 1 + return TRUE if(other.universal_speak) - return 1 + return TRUE if(isAI(src) && ispAI(other)) - return 1 - if (istype(other, src.type) || istype(src, other.type)) - return 1 - return 0 + return TRUE + if(istype(other, type) || istype(src, other.type)) + return TRUE + return FALSE if(speaking.flags & INNATE) - return 1 + return TRUE + + //non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet. + if(speaking.flags & NONVERBAL) + if(sdisabilities & BLIND || blinded) + return FALSE + if(!other || !(other in view(src))) + return FALSE //Language check. - for(var/datum/language/L in src.languages) + for(var/datum/language/L in languages) if(speaking.name == L.name) - return 1 + return TRUE - return 0 - -/* - ***Deprecated*** - let this be handled at the hear_say or hear_radio proc - This is left in for robot speaking when humans gain binary channel access until I get around to rewriting - robot_talk() proc. - There is no language handling build into it however there is at the /mob level so we accept the call - for it but just ignore it. -*/ + return FALSE /mob/proc/say_quote(var/message, var/datum/language/speaking = null) - var/verb = "says" - var/ending = copytext(message, length(message)) - if(ending=="!") - verb=pick("exclaims","shouts","yells") - else if(ending=="?") - verb="asks" + var/verb = "says" + var/ending = copytext(message, length(message)) - return verb + if(speaking) + verb = speaking.get_spoken_verb(ending) + else + if(ending == "!") + verb = pick("exclaims", "shouts", "yells") + else if(ending == "?") + verb = "asks" + return verb /mob/proc/emote(var/act, var/type, var/message) @@ -120,38 +120,123 @@ /mob/proc/say_test(var/text) var/ending = copytext(text, length(text)) - if (ending == "?") + if(ending == "?") return "1" - else if (ending == "!") + else if(ending == "!") return "2" return "0" //parses the message mode code (e.g. :h, :w) from text, such as that supplied to say. //returns the message mode string or null for no message mode. //standard mode is the mode returned for the special ';' radio code. -/mob/proc/parse_message_mode(var/message, var/standard_mode="headset") - if(length(message) >= 1 && copytext(message,1,2) == ";") +/mob/proc/parse_message_mode(var/message, var/standard_mode = "headset") + if(length(message) >= 1 && copytext(message, 1, 2) == ";") return standard_mode if(length(message) >= 2) - var/channel_prefix = copytext(message, 1 ,3) + var/channel_prefix = copytext(message, 1, 3) return department_radio_keys[channel_prefix] return null -//parses the language code (e.g. :j) from text, such as that supplied to say. -//returns the language object only if the code corresponds to a language that src can speak, otherwise null. -/mob/proc/parse_language(var/message) - var/prefix = copytext(message,1,2) - // This is for audible emotes - if(length(message) >= 1 && prefix == "!") - return GLOB.all_languages["Noise"] +/datum/multilingual_say_piece + var/datum/language/speaking = null + var/message = "" - if(length(message) >= 2 && is_language_prefix(prefix)) - var/language_prefix = copytext(message, 2 ,3) - var/datum/language/L = GLOB.language_keys[language_prefix] - if (can_speak(L)) - return L +/datum/multilingual_say_piece/New(datum/language/new_speaking, new_message) + . = ..() + speaking = new_speaking + if(new_message) + message = new_message + +/mob/proc/find_valid_prefixes(message) + var/list/prefixes = list() // [["Common", start, end], ["Gutter", start, end]] + for(var/i in 1 to length(message)) + // This grabs trimmed 3 character substrings, to allow for up to 1 prefix and 1 letter language keys + var/selection = trim_right(copytext(message, i, i + 2)) // VOREStation Edit: We use uppercase keys to avoid Polaris key duplication, but this had lowertext() in it + // The first character in the selection will always be the prefix (if this is a valid language invocation) + var/prefix = copytext(selection, 1, 2) + var/language_key = copytext(selection, 2, 3) + if(is_language_prefix(prefix)) + // Okay, we're definitely now trying to invoke a language (probably) + // This "[]" is probably unnecessary but BYOND will runtime if a number is used + var/datum/language/L = GLOB.language_keys["[language_key]"] + // It's kinda silly that we have to check L != null and this isn't done for us by can_speak (it runtimes instead), but w/e + if(L && can_speak(L)) + // So we have a valid language invocation, and we can speak that language, let's make a piece for it + // This language will be the language until the next prefixes[] index, or the end of the message if there are none. + prefixes[++prefixes.len] = list(L, i, i + length(selection)) + else if(L) + // We found a valid language, but they can't speak it. Let's make them speak gibberish instead. + prefixes[++prefixes.len] = list(GLOB.all_languages[LANGUAGE_GIBBERISH], i, i + length(selection)) + continue + if(i == 1) + // This covers the case of "no prefixes in use." + prefixes[++prefixes.len] = list(get_default_language(), i, i) + + return prefixes + +/mob/proc/strip_prefixes(message, mob/prefixer = null) + . = "" + var/last_index = 1 + for(var/i in 1 to length(message)) + var/selection = trim_right(lowertext(copytext(message, i, i + 2))) + // The first character in the selection will always be the prefix (if this is a valid language invocation) + var/prefix = copytext(selection, 1, 2) + var/language_key = copytext(selection, 2, 3) + if(is_language_prefix(prefix)) + var/datum/language/L = GLOB.language_keys["[language_key]"] + if(L) + . += copytext(message, last_index, i) + last_index = i + 2 + if(i + 1 > length(message)) + . += copytext(message, last_index) + +// this returns a structured message with language sections +// list(/datum/multilingual_say_piece(common, "hi"), /datum/multilingual_say_piece(farwa, "squik"), /datum/multilingual_say_piece(common, "meow!")) +/mob/proc/parse_languages(message) + . = list() + + // Noise language is a snowflake. + if(copytext(message, 1, 2) == "!" && length(message) > 1) + // Note that list() here is intended + // Returning a raw /datum/multilingual_say_piece is supported, but only for hivemind languages + // What we actually want is a normal say piece that's all noise lang + return list(new /datum/multilingual_say_piece(GLOB.all_languages["Noise"], trim(strip_prefixes(copytext(message, 2))))) + + // Scan the message for prefixes + var/list/prefix_locations = find_valid_prefixes(message) + if(!LAZYLEN(prefix_locations)) // There are no prefixes... or at least, no _valid_ prefixes. + . += new /datum/multilingual_say_piece(get_default_language(), trim(strip_prefixes(message))) // So we'll just strip those pesky things and still make the message. + + for(var/i in 1 to length(prefix_locations)) + var/current = prefix_locations[i] // ["Common", start, end] + + // There are a few things that will make us want to ignore all other languages in - namely, HIVEMIND languages. + var/datum/language/L = current[1] + if(L && (L.flags & HIVEMIND || L.flags & SIGNLANG)) + return new /datum/multilingual_say_piece(L, trim(sanitize(strip_prefixes(message)))) + + if(i + 1 > length(prefix_locations)) // We are out of lookaheads, that means the rest of the message is in cur lang + var/spoke_message = sanitize(handle_autohiss(trim(copytext(message, current[3])), L)) + . += new /datum/multilingual_say_piece(current[1], spoke_message) else - return GLOB.all_languages[LANGUAGE_GIBBERISH] - return null + var/next = prefix_locations[i + 1] // We look ahead at the next message to see where we need to stop. + var/spoke_message = sanitize(handle_autohiss(trim(copytext(message, current[3], next[2])), L)) + . += new /datum/multilingual_say_piece(current[1], spoke_message) + +/* These are here purely because it would be hell to try to convert everything over to using the multi-lingual system at once */ +/proc/message_to_multilingual(message, datum/language/speaking = null) + . = list(new /datum/multilingual_say_piece(speaking, message)) + +/proc/multilingual_to_message(list/message_pieces, var/requires_machine_understands = FALSE, var/with_capitalization = FALSE) + . = "" + for(var/datum/multilingual_say_piece/S in message_pieces) + var/message_to_append = S.message + if(S.speaking) + if(with_capitalization) + message_to_append = S.speaking.format_message_plain(S.message) + if(requires_machine_understands && !S.speaking.machine_understands) + message_to_append = S.speaking.scramble(S.message) + . += message_to_append + " " + . = trim_right(.) diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 5dbf853745..05642705a1 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -42,6 +42,7 @@ return if (message) + var/undisplayed_message = "[src] does something too subtle for you to see." message = encode_html_emphasis(message) var/list/vis = get_mobs_and_objs_in_view_fast(get_turf(src),1,2) //Turf, Range, and type 2 is emote @@ -50,8 +51,12 @@ for(var/vismob in vis_mobs) var/mob/M = vismob - spawn(0) - M.show_message(message, 2) + if(isobserver(M) && !is_preference_enabled(/datum/client_preference/whisubtle_vis) && !M.client?.holder) + spawn(0) + M.show_message(undisplayed_message, 2) + else + spawn(0) + M.show_message(message, 2) for(var/visobj in vis_objs) var/obj/O = visobj @@ -79,6 +84,13 @@ else return message +// returns true if it failed +/proc/reflect_if_needed(message, user) + if(length(message) > MAX_HUGE_MESSAGE_LEN) + fail_to_chat(user) + return TRUE + return FALSE + /proc/fail_to_chat(user,message) if(!message) to_chat(user, "Your message was NOT SENT, either because it was FAR too long, or sanitized to nothing at all.") diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/modular_computers/NTNet/NTNet_relay.dm index 2e4d43c731..3af78db247 100644 --- a/code/modules/modular_computers/NTNet/NTNet_relay.dm +++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm @@ -5,7 +5,8 @@ use_power = USE_POWER_ACTIVE active_power_usage = 20000 //20kW, apropriate for machine that keeps massive cross-Zlevel wireless network operational. idle_power_usage = 100 - icon_state = "bus" + icon = 'icons/obj/stationobjs_vr.dmi' //VOREStation Add + icon_state = "ntnet" //VOREStation Edit anchored = 1 density = 1 circuit = /obj/item/weapon/circuitboard/ntnet_relay @@ -31,10 +32,12 @@ return 1 /obj/machinery/ntnet_relay/update_icon() + //VOREStation Edit if(operable()) - icon_state = "bus" + icon_state = initial(icon_state) else - icon_state = "bus_off" + icon_state = "[initial(icon_state)]_off" + //VOREStation Edit End /obj/machinery/ntnet_relay/process() if(operable()) diff --git a/code/modules/modular_computers/computers/modular_computer/core.dm b/code/modules/modular_computers/computers/modular_computer/core.dm index 2848468da8..db15e841ca 100644 --- a/code/modules/modular_computers/computers/modular_computer/core.dm +++ b/code/modules/modular_computers/computers/modular_computer/core.dm @@ -255,6 +255,18 @@ else return ..() +/obj/item/modular_computer/apply_visual(var/mob/user) + if(active_program) + return active_program.apply_visual(user) + +/obj/item/modular_computer/remove_visual(var/mob/user) + if(active_program) + return active_program.remove_visual(user) + +/obj/item/modular_computer/relaymove(var/mob/user, direction) + if(active_program) + return active_program.relaymove(user, direction) + /obj/item/modular_computer/proc/set_autorun(program) if(!hard_drive) return diff --git a/code/modules/modular_computers/computers/modular_computer/damage.dm b/code/modules/modular_computers/computers/modular_computer/damage.dm index 9084bad735..2c7e357cda 100644 --- a/code/modules/modular_computers/computers/modular_computer/damage.dm +++ b/code/modules/modular_computers/computers/modular_computer/damage.dm @@ -1,9 +1,9 @@ /obj/item/modular_computer/examine(var/mob/user) . = ..() if(damage > broken_damage) - to_chat(user, "It is heavily damaged!") + . += "It is heavily damaged!" else if(damage) - to_chat(user, "It is damaged.") + . += "It is damaged." /obj/item/modular_computer/proc/break_apart() visible_message("\The [src] breaks apart!") diff --git a/code/modules/modular_computers/computers/modular_computer/power.dm b/code/modules/modular_computers/computers/modular_computer/power.dm index b3746d55d4..5d12d2e174 100644 --- a/code/modules/modular_computers/computers/modular_computer/power.dm +++ b/code/modules/modular_computers/computers/modular_computer/power.dm @@ -38,7 +38,7 @@ power_usage += tesla_link.passive_charging_rate battery_module.battery.give(tesla_link.passive_charging_rate * CELLRATE) - A.use_power(power_usage, EQUIP) + A.use_power_oneoff(power_usage, EQUIP) return TRUE // Handles power-related things, such as battery interaction, recharging, shutdown when it's discharged diff --git a/code/modules/modular_computers/computers/subtypes/preset_console.dm b/code/modules/modular_computers/computers/subtypes/preset_console.dm index 5670c37522..03e86c5338 100644 --- a/code/modules/modular_computers/computers/subtypes/preset_console.dm +++ b/code/modules/modular_computers/computers/subtypes/preset_console.dm @@ -15,6 +15,7 @@ hard_drive.store_file(new/datum/computer_file/program/atmos_control()) hard_drive.store_file(new/datum/computer_file/program/rcon_console()) hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) + hard_drive.store_file(new/datum/computer_file/program/shutoff_monitor()) // Medical /obj/item/modular_computer/console/preset/medical/install_default_programs() diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 895b73b5fa..ef7eece062 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -203,8 +203,12 @@ /datum/computer_file/program/apply_visual(mob/M) if(NM) - NM.apply_visual(M) + return NM.apply_visual(M) /datum/computer_file/program/remove_visual(mob/M) if(NM) - NM.remove_visual(M) + return NM.remove_visual(M) + +/datum/computer_file/program/proc/relaymove(var/mob/M, direction) + if(NM) + return NM.relaymove(M, direction) \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/engineering/shutoff_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/shutoff_monitor.dm new file mode 100644 index 0000000000..c46bb9c667 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/engineering/shutoff_monitor.dm @@ -0,0 +1,63 @@ +/datum/computer_file/program/shutoff_monitor + filename = "shutoffmonitor" + filedesc = "Shutoff Valve Monitoring" + nanomodule_path = /datum/nano_module/shutoff_monitor + program_icon_state = "atmos_control" + program_key_state = "atmos_key" + program_menu_icon = "wrench" + extended_desc = "This program allows for remote monitoring and control of emergency shutoff valves." + required_access = access_engine + requires_ntnet = 1 + network_destination = "shutoff valve control computer" + size = 5 + var/has_alert = 0 + +/datum/nano_module/shutoff_monitor + name = "Shutoff Valve Monitoring" + +/datum/nano_module/shutoff_monitor/Topic(ref, href_list) + if(..()) + return 1 + + if(href_list["toggle_enable"]) + var/obj/machinery/atmospherics/valve/shutoff/S = locate(href_list["toggle_enable"]) + if(!istype(S)) + return 0 + S.close_on_leaks = !S.close_on_leaks + return 1 + + if(href_list["toggle_open"]) + var/obj/machinery/atmospherics/valve/shutoff/S = locate(href_list["toggle_open"]) + if(!istype(S)) + return 0 + if(S.open) + S.close() + else + S.open() + return 1 + +/datum/nano_module/shutoff_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + var/list/valves = list() + + for(var/obj/machinery/atmospherics/valve/shutoff/S in GLOB.shutoff_valves) + valves.Add(list(list( + "name" = S.name, + "enabled" = S.close_on_leaks, + "open" = S.open, + "x" = S.x, + "y" = S.y, + "z" = S.z, + "ref" = "\ref[S]" + ))) + + data["valves"] = valves + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "shutoff_monitor.tmpl", "Shutoff Valve Monitoring", 627, 700, state = state) + if(host.update_layout()) // This is necessary to ensure the status bar remains updated along with rest of the UI. + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm index 6939a44dff..421bb65047 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm @@ -77,6 +77,7 @@ data["SM_power"] = active.power data["SM_ambienttemp"] = air.temperature data["SM_ambientpressure"] = air.return_pressure() + data["SM_EPR"] = active.get_epr() //data["SM_EPR"] = active.get_epr() if(air.total_moles) data["SM_gas_O2"] = round(100*air.gas["oxygen"]/air.total_moles,0.01) diff --git a/code/modules/modular_computers/file_system/programs/generic/uav.dm b/code/modules/modular_computers/file_system/programs/generic/uav.dm new file mode 100644 index 0000000000..8e4909ab04 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/uav.dm @@ -0,0 +1,266 @@ +/obj/item/modular_computer + var/list/paired_uavs //Weakrefs, don't worry about it! + +/datum/computer_file/program/uav + filename = "rigger" + filedesc = "UAV Control" + nanomodule_path = /datum/nano_module/uav + program_icon_state = "comm_monitor" + program_key_state = "generic_key" + program_menu_icon = "link" + extended_desc = "This program allows remote control of certain drones, but only when paired with this device." + size = 12 + available_on_ntnet = 1 + //requires_ntnet = 1 + +/datum/nano_module/uav + name = "UAV Control program" + var/obj/item/device/uav/current_uav = null //The UAV we're watching + var/signal_strength = 0 //Our last signal strength report (cached for a few seconds) + var/signal_test_counter = 0 //How long until next signal strength check + var/list/viewers //Who's viewing a UAV through us + var/adhoc_range = 30 //How far we can operate on a UAV without NTnet + +/datum/nano_module/uav/Destroy() + if(LAZYLEN(viewers)) + for(var/weakref/W in viewers) + var/M = W.resolve() + if(M) + unlook(M) + . = ..() + +/datum/nano_module/uav/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, state = default_state) + var/list/data = host.initial_data() + + if(current_uav) + if(QDELETED(current_uav)) + set_current(null) + else if(signal_test_counter-- <= 0) + signal_strength = get_signal_to(current_uav) + if(!signal_strength) + set_current(null) + else // Don't reset counter until we find a UAV that's actually in range we can stay connected to + signal_test_counter = 20 + + data["current_uav"] = null + if(current_uav) + data["current_uav"] = list("status" = current_uav.get_status_string(), "power" = current_uav.state == 1 ? 1 : null) + data["signal_strength"] = signal_strength ? signal_strength >= 2 ? "High" : "Low" : "None" + data["in_use"] = LAZYLEN(viewers) + + var/list/paired_map = list() + var/obj/item/modular_computer/mc_host = nano_host() + if(istype(mc_host)) + for(var/puav in mc_host.paired_uavs) + var/weakref/wr = puav + var/obj/item/device/uav/U = wr.resolve() + paired_map[++paired_map.len] = list("name" = "[U ? U.nickname : "!!Missing!!"]", "uavref" = "\ref[U]") + + data["paired_uavs"] = paired_map + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "mod_uav.tmpl", "UAV Control", 600, 500, state = state) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/datum/nano_module/uav/Topic(var/href, var/href_list = list(), var/datum/topic_state/state) + if((. = ..())) + return + state = state || DefaultTopicState() || global.default_state + if(CanUseTopic(usr, state, href_list) == STATUS_INTERACTIVE) + CouldUseTopic(usr) + return OnTopic(usr, href_list, state) + CouldNotUseTopic(usr) + return TRUE + +/datum/nano_module/uav/proc/OnTopic(var/mob/user, var/list/href_list) + if(href_list["switch_uav"]) + var/obj/item/device/uav/U = locate(href_list["switch_uav"]) //This is a \ref to the UAV itself + if(!istype(U)) + to_chat(usr,"Something is blocking the connection to that UAV. In-person investigation is required.") + return TOPIC_NOACTION + + if(!get_signal_to(U)) + to_chat(usr,"The screen freezes for a moment, before returning to the UAV selection menu. It's not able to connect to that UAV.") + return TOPIC_NOACTION + + set_current(U) + return TOPIC_REFRESH + + if(href_list["del_uav"]) + var/refstring = href_list["del_uav"] //This is a \ref to the UAV itself + var/obj/item/modular_computer/mc_host = nano_host() + //This is so we can really scrape up any weakrefs that can't resolve + for(var/weakref/wr in mc_host.paired_uavs) + if(wr.ref == refstring) + if(current_uav?.weakref == wr) + set_current(null) + LAZYREMOVE(mc_host.paired_uavs, wr) + + else if(href_list["view_uav"]) + if(!current_uav) + return TOPIC_NOACTION + + if(current_uav.check_eye(user) < 0) + to_chat(usr,"The screen freezes for a moment, before returning to the UAV selection menu. It's not able to connect to that UAV.") + else + viewing_uav(user) ? unlook(user) : look(user) + return TOPIC_NOACTION + + else if(href_list["power_uav"]) + if(!current_uav) + return TOPIC_NOACTION + else if(current_uav.toggle_power()) + //Clean up viewers faster + if(LAZYLEN(viewers)) + for(var/weakref/W in viewers) + var/M = W.resolve() + if(M) + unlook(M) + return TOPIC_REFRESH + +/datum/nano_module/uav/proc/DefaultTopicState() + return global.default_state + +/datum/nano_module/uav/proc/CouldNotUseTopic(mob/user) + . = ..() + unlook(user) + +/datum/nano_module/uav/proc/CouldUseTopic(mob/user) + . = ..() + if(viewing_uav(user)) + look(user) + +/datum/nano_module/uav/proc/set_current(var/obj/item/device/uav/U) + if(current_uav == U) + return + + signal_strength = 0 + current_uav = U + + if(LAZYLEN(viewers)) + for(var/weakref/W in viewers) + var/M = W.resolve() + if(M) + if(current_uav) + to_chat(M, "You're disconnected from the UAV's camera!") + unlook(M) + else + look(M) + +//// +//// Finding signal strength between us and the UAV +//// +/datum/nano_module/uav/proc/get_signal_to(var/atom/movable/AM) + // Following roughly the ntnet signal levels + // 0 is none + // 1 is weak + // 2 is strong + var/obj/item/modular_computer/host = nano_host() //Better not add this to anything other than modular computers. + if(!istype(host)) + return + var/our_signal = host.get_ntnet_status() //1 low, 2 good, 3 wired, 0 none + var/their_z = get_z(AM) + + //If we have no NTnet connection don't bother getting theirs + if(!our_signal) + if(get_z(host) == their_z && (get_dist(host, AM) < adhoc_range)) + return 1 //We can connect (with weak signal) in same z without ntnet, within 30 turfs + else + return 0 + + var/list/zlevels_in_range = using_map.get_map_levels(their_z, FALSE) + var/list/zlevels_in_long_range = using_map.get_map_levels(their_z, TRUE) - zlevels_in_range + var/their_signal = 0 + for(var/relay in ntnet_global.relays) + var/obj/machinery/ntnet_relay/R = relay + if(!R.operable()) + continue + if(R.z == their_z) + their_signal = 2 + break + if(R.z in zlevels_in_range) + their_signal = 2 + break + if(R.z in zlevels_in_long_range) + their_signal = 1 + break + + if(!their_signal) //They have no NTnet at all + if(get_z(host) == their_z && (get_dist(host, AM) < adhoc_range)) + return 1 //We can connect (with weak signal) in same z without ntnet, within 30 turfs + else + return 0 + else + return max(our_signal, their_signal) + +//// +//// UAV viewer handling +//// +/datum/nano_module/uav/proc/viewing_uav(mob/user) + return (weakref(user) in viewers) + +/datum/nano_module/uav/proc/look(var/mob/user) + if(issilicon(user)) //Too complicated for me to want to mess with at the moment + to_chat(user, "Regulations prevent you from controlling several corporeal forms at the same time!") + return + + if(!current_uav) + return + + user.set_machine(nano_host()) + user.reset_view(current_uav) + current_uav.add_master(user) + LAZYDISTINCTADD(viewers, weakref(user)) + +/datum/nano_module/uav/proc/unlook(var/mob/user) + user.unset_machine() + user.reset_view() + if(current_uav) + current_uav.remove_master(user) + LAZYREMOVE(viewers, weakref(user)) + +/datum/nano_module/uav/check_eye(var/mob/user) + if(get_dist(user, nano_host()) > 1 || user.blinded || !current_uav) + unlook(user) + return -1 + + var/viewflag = current_uav.check_eye(user) + if (viewflag < 0) //camera doesn't work + unlook(user) + return -1 + + return viewflag + +//// +//// Relaying movements to the UAV +//// +/datum/nano_module/uav/relaymove(var/mob/user, direction) + if(current_uav) + return current_uav.relaymove(user, direction, signal_strength) + +//// +//// The effects when looking through a UAV +//// +/datum/nano_module/uav/apply_visual(var/mob/M) + if(!M.client) + return + if(weakref(M) in viewers) + M.overlay_fullscreen("fishbed",/obj/screen/fullscreen/fishbed) + M.overlay_fullscreen("scanlines",/obj/screen/fullscreen/scanline) + + if(signal_strength <= 1) + M.overlay_fullscreen("whitenoise",/obj/screen/fullscreen/noise) + else + M.clear_fullscreen("whitenoise", 0) + else + remove_visual(M) + +/datum/nano_module/uav/remove_visual(mob/M) + if(!M.client) + return + M.clear_fullscreen("fishbed",0) + M.clear_fullscreen("scanlines",0) + M.clear_fullscreen("whitenoise",0) diff --git a/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm index 2b25951926..894173ec72 100644 --- a/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm +++ b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm @@ -46,7 +46,7 @@ to_chat(user, "The crew monitor doesn't seem like it'll work here.") if(program) program.kill_program() - else if(ui) + if(ui) ui.close() return diff --git a/code/modules/modular_computers/file_system/programs/ships/navigation.dm b/code/modules/modular_computers/file_system/programs/ships/navigation.dm index dbe7aed5de..88db90598b 100644 --- a/code/modules/modular_computers/file_system/programs/ships/navigation.dm +++ b/code/modules/modular_computers/file_system/programs/ships/navigation.dm @@ -4,7 +4,7 @@ nanomodule_path = /datum/nano_module/program/ship/nav program_icon_state = "helm" program_key_state = "generic_key" - program_menu_icon = "search" + program_menu_icon = "pin-s" extended_desc = "Displays a ship's location in the sector." required_access = null requires_ntnet = 1 diff --git a/code/modules/modular_computers/hardware/_hardware.dm b/code/modules/modular_computers/hardware/_hardware.dm index 95b020ca01..e82ab5b634 100644 --- a/code/modules/modular_computers/hardware/_hardware.dm +++ b/code/modules/modular_computers/hardware/_hardware.dm @@ -75,11 +75,11 @@ /obj/item/weapon/computer_hardware/examine(var/mob/user) . = ..() if(damage > damage_failure) - to_chat(user, "It seems to be severely damaged!") + . += "It seems to be severely damaged!" else if(damage > damage_malfunction) - to_chat(user, "It seems to be damaged!") + . += "It seems to be damaged!" else if(damage) - to_chat(user, "It seems to be slightly damaged.") + . += "It seems to be slightly damaged." // Damages the component. Contains necessary checks. Negative damage "heals" the component. /obj/item/weapon/computer_hardware/take_damage(var/amount) diff --git a/code/modules/modular_computers/hardware/network_card.dm b/code/modules/modular_computers/hardware/network_card.dm index 2f382e0f4d..1447c5008e 100644 --- a/code/modules/modular_computers/hardware/network_card.dm +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -39,6 +39,27 @@ var/global/ntnet_card_uid = 1 icon_state = "netcard_advanced" hardware_size = 1 +/obj/item/weapon/computer_hardware/network_card/quantum + name = "quantum NTNet network card" + desc = "A network card that can connect to NTnet from anywhere, using quantum entanglement." + long_range = 1 + origin_tech = list(TECH_DATA = 6, TECH_ENGINEERING = 7) + power_usage = 200 // Infinite range but higher power usage. + icon_state = "netcard_advanced" + hardware_size = 1 + +/obj/item/weapon/computer_hardware/network_card/quantum/get_signal(var/specific_action = 0) + if(!holder2) + return 0 + + if(!enabled) + return 0 + + if(!check_functionality() || !ntnet_global || is_banned()) + return 0 + + return 2 + /obj/item/weapon/computer_hardware/network_card/wired name = "wired NTNet network card" desc = "An advanced network card for usage with standard NTNet frequencies. This one also supports wired connection." @@ -82,7 +103,8 @@ var/global/ntnet_card_uid = 1 var/holderz = get_z(holder2) if(!holderz) //no reception in nullspace return 0 - var/list/zlevels_in_range = using_map.get_map_levels(holderz, long_range) + var/list/zlevels_in_range = using_map.get_map_levels(holderz, FALSE) + var/list/zlevels_in_long_range = using_map.get_map_levels(holderz, TRUE) - zlevels_in_range var/best = 0 for(var/relay in ntnet_global.relays) var/obj/machinery/ntnet_relay/R = relay @@ -91,11 +113,16 @@ var/global/ntnet_card_uid = 1 continue //We're on the same z if(R.z == holderz) - best = 2 + best = 2 //Every network card gets high signal on the same z as the relay break // No point in going further //Not on the same z but within range anyway if(R.z in zlevels_in_range) - best = 1 + best = long_range ? 2 : 1 //High-power network cards get good signal further away + break + //Only in long range + if(long_range && (R.z in zlevels_in_long_range)) + best = 1 //High-power network cards can get low signal even at long range + break return best return 0 // No computer! diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index c293e2f263..842e71d588 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -48,6 +48,7 @@ var/area/area = get_area(src) if(direction == UP && area.has_gravity() && !can_overcome_gravity()) var/obj/structure/lattice/lattice = locate() in destination.contents + var/obj/structure/catwalk/catwalk = locate() in destination.contents if(lattice) var/pull_up_time = max(5 SECONDS + (src.movement_delay() * 10), 1) to_chat(src, "You grab \the [lattice] and start pulling yourself upward...") @@ -57,6 +58,15 @@ else to_chat(src, "You gave up on pulling yourself up.") return 0 + else if(catwalk?.hatch_open) + var/pull_up_time = max(5 SECONDS + (src.movement_delay() * 10), 1) + to_chat(src, "You grab the edge of \the [catwalk] and start pulling yourself upward...") + destination.audible_message("You hear something climbing up \the [catwalk].") + if(do_after(src, pull_up_time)) + to_chat(src, "You pull yourself up.") + else + to_chat(src, "You gave up on pulling yourself up.") + return 0 else if(ismob(src)) //VOREStation Edit Start. Are they a mob, and are they currently flying?? var/mob/H = src if(H.flying) @@ -205,38 +215,33 @@ if(throwing) return - if(ismob(src)) - var/mob/H = src //VOREStation Edit Start. Flight on mobs. - if(H.flying) //Some other checks are done in the wings_toggle proc - //if(H.nutrition > 2) YAWNedit: Removing nutritional costs. leaving code commented for integrity incase it should be brought back. - // H.nutrition -= 2 //You use up 2 nutrition per TILE and tick of flying above open spaces. If people wanna flap their wings in the hallways, shouldn't penalize them for it. - if(H.incapacitated(INCAPACITATION_ALL)) - H.stop_flying() + //VOREStation Edit Start. Flight on mobs. + if(isliving(src)) + var/mob/living/L = src //VOREStation Edit Start. Flight on mobs. + if(L.flying) //Some other checks are done in the wings_toggle proc + if(L.nutrition > 2) + L.adjust_nutrition(-2) //You use up 2 nutrition per TILE and tick of flying above open spaces. If people wanna flap their wings in the hallways, shouldn't penalize them for it. + if(L.incapacitated(INCAPACITATION_ALL)) + L.stop_flying() //Just here to see if the person is KO'd, stunned, etc. If so, it'll move onto can_fall. - else if (H.nutrition > 1000) //Eat too much while flying? Get fat and fall. - to_chat(H, "You're too heavy! Your wings give out and you plummit to the ground!") - H.stop_flying() //womp womp. - else if(H.nutrition < 300 && H.nutrition > 289) //290 would be risky, as metabolism could mess it up. Let's do 289. - to_chat(H, "You are starting to get fatigued... You probably have a good minute left in the air, if that. Even less if you continue to fly around! You should get to the ground soon!") //Ticks are, on average, 3 seconds. So this would most likely be 90 seconds, but lets just say 60. - //H.nutrition -= 10 YAWNedit: im sorry..10 nuticost a tick in this area? what? O_o + else if (L.nutrition > 1000) //Eat too much while flying? Get fat and fall. + to_chat(L, "You're too heavy! Your wings give out and you plummit to the ground!") + L.stop_flying() //womp womp. + else if(L.nutrition < 300 && L.nutrition > 289) //290 would be risky, as metabolism could mess it up. Let's do 289. + to_chat(L, "You are starting to get fatigued... You probably have a good minute left in the air, if that. Even less if you continue to fly around! You should get to the ground soon!") //Ticks are, on average, 3 seconds. So this would most likely be 90 seconds, but lets just say 60. + L.adjust_nutrition(-10) return - else if(H.nutrition < 100 && H.nutrition > 89) - to_chat(H, "You're seriously fatigued! You need to get to the ground immediately and eat before you fall!") + else if(L.nutrition < 100 && L.nutrition > 89) + to_chat(L, "You're seriously fatigued! You need to get to the ground immediately and eat before you fall!") return - else if(H.nutrition < 2) //Should have listened to the warnings! - to_chat(H, "You lack the strength to keep yourself up in the air...") - H.stop_flying() + else if(L.nutrition < 2) //Should have listened to the warnings! + to_chat(L, "You lack the strength to keep yourself up in the air...") + L.stop_flying() else return - else if(ishuman(H)) //Needed to prevent 2 people from grabbing eachother in the air. - var/mob/living/carbon/human/F = H - if(F.grabbed_by.len) //If you're grabbed (presumably by someone flying) let's not have you fall. This also allows people to grab onto you while you jump over a railing to prevent you from falling! - var/obj/item/weapon/grab/G = F.get_active_hand() - var/obj/item/weapon/grab/J = F.get_inactive_hand() - if(istype(G) || istype(J)) - //fall - else - return + if(LAZYLEN(L.grabbed_by)) //If you're grabbed (presumably by someone flying) let's not have you fall. This also allows people to grab onto you while you jump over a railing to prevent you from falling! + return + //VOREStation Edit End if(can_fall()) // We spawn here to let the current move operation complete before we start falling. fall() is normally called from @@ -299,7 +304,7 @@ // Things that prevent objects standing on them from falling into turf below /obj/structure/catwalk/CanFallThru(atom/movable/mover as mob|obj, turf/target as turf) - if(target.z < z) + if((target.z < z) && !hatch_open) return FALSE // TODO - Technically should be density = 1 and flags |= ON_BORDER if(!isturf(mover.loc)) return FALSE // Only let loose floor items fall. No more snatching things off people's hands. diff --git a/code/modules/multiz/structures.dm b/code/modules/multiz/structures.dm index 331588183e..0708426511 100644 --- a/code/modules/multiz/structures.dm +++ b/code/modules/multiz/structures.dm @@ -159,7 +159,7 @@ A.forceMove(target) if(isliving(A)) var/mob/living/L = A - if(L.pulling) + if(L.pulling && !L.pulling.anchored) L.pulling.forceMove(target) /obj/structure/stairs/proc/upperStep(var/turf/T) diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index 2b280eaac1..1a1d4081a7 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -70,11 +70,12 @@ O.hide(0) /turf/simulated/open/examine(mob/user, distance, infix, suffix) - if(..(user, 2)) + . = ..() + if(Adjacent(user)) var/depth = 1 for(var/T = GetBelow(src); isopenspace(T); T = GetBelow(T)) depth += 1 - to_chat(user, "It is about [depth] levels deep.") + . += "It is about [depth] levels deep." /** * Update icon and overlays of open space to be that of the turf below, plus any visible objects on that turf. @@ -82,8 +83,13 @@ /turf/simulated/open/update_icon() cut_overlays() // Edit - Overlays are being crashy when modified. update_icon_edge()// Add - Get grass into open spaces and whatnot. - var/turf/below = GetBelow(src) if(below) + // Skybox lives on its own plane, if we don't set it to see that, then open space tiles over true space tiles see white nothingness below + if(is_space()) + plane = SPACE_PLANE + else + plane = OPENSPACE_PLANE + src.z + var/below_is_open = isopenspace(below) if(below_is_open) diff --git a/code/modules/multiz/zshadow.dm b/code/modules/multiz/zshadow.dm index 99b5314ade..49953e07a2 100644 --- a/code/modules/multiz/zshadow.dm +++ b/code/modules/multiz/zshadow.dm @@ -37,16 +37,16 @@ if(!owner) // The only time we should have a null owner is if we are in nullspace. Help figure out why we were examined. crash_with("[src] ([type]) @ [log_info_line()] was examined by [user] @ [global.log_info_line(user)]") - return + return list() return owner.examine(user, distance, infix, suffix) // Relay some stuff they hear -/mob/zshadow/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) +/mob/zshadow/hear_say(var/list/message_pieces, var/verb = "says", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) if(speaker && speaker.z != src.z) return // Only relay speech on our acutal z, otherwise we might relay sounds that were themselves relayed up! if(isliving(owner)) verb += " from above" - return owner.hear_say(message, verb, language, alt_name, italics, speaker, speech_sound, sound_vol) + return owner.hear_say(message_pieces, verb, italics, speaker, speech_sound, sound_vol) /mob/zshadow/proc/sync_icon(var/mob/M) name = M.name @@ -61,7 +61,7 @@ if(shadow) shadow.sync_icon(src) -/mob/living/Move() +/mob/living/Moved() . = ..() check_shadow() diff --git a/code/modules/nano/modules/nano_module.dm b/code/modules/nano/modules/nano_module.dm index 90c213da1c..75c38c9ed3 100644 --- a/code/modules/nano/modules/nano_module.dm +++ b/code/modules/nano/modules/nano_module.dm @@ -62,3 +62,6 @@ /datum/proc/update_layout() return FALSE + +/datum/nano_module/proc/relaymove(var/mob/user, direction) + return FALSE diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index 03d482648f..b38f2cccfa 100644 --- a/code/modules/nifsoft/nif.dm +++ b/code/modules/nifsoft/nif.dm @@ -381,7 +381,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable return FALSE //Was enough, reduce and return. - human.nutrition -= use_charge + human.adjust_nutrition(-use_charge) return TRUE //Install a piece of software diff --git a/code/modules/nifsoft/nif_softshop.dm b/code/modules/nifsoft/nif_softshop.dm index 2af77f43ad..3bb661678b 100644 --- a/code/modules/nifsoft/nif_softshop.dm +++ b/code/modules/nifsoft/nif_softshop.dm @@ -19,6 +19,10 @@ /obj/machinery/vending/nifsoft_shop/Initialize() . = ..() + + if(wires) + qdel(wires) + wires = new /datum/wires/vending/no_contraband(src) //These wires can't be hacked for contraband. entopic = new(aholder = src, aicon = icon, aicon_state = "beacon") /obj/machinery/vending/nifsoft_shop/Destroy() @@ -70,9 +74,9 @@ list(premium, CAT_COIN)) for(var/current_list in all_products) - var/category = current_list[2] + var/category = current_list[CAT_HIDDEN] - for(var/entry in current_list[1]) + for(var/entry in current_list[CAT_NORMAL]) var/datum/nifsoft/NS = entry var/applies_to = initial(NS.applies_to) var/context = "" @@ -139,7 +143,7 @@ if(initial(path.access)) var/list/soft_access = list(initial(path.access)) var/list/usr_access = usr.GetAccess() - if(!has_access(soft_access, list(), usr_access) && !emagged) + if(scan_id && !has_access(soft_access, list(), usr_access) && !emagged) to_chat(usr, "You aren't authorized to buy [initial(path.name)].") flick("[icon_state]-deny",entopic.my_image) return @@ -220,3 +224,18 @@ /obj/machinery/vending/nifsoft_shop/throw_item() //TODO: Make it throw disks at people with random software? That might be fun. EVEN THE ILLEGAL ONES? ;o return 0 + +/datum/wires/vending/no_contraband + +/datum/wires/vending/no_contraband/UpdatePulsed(index) //Can't hack for contraband, need emag. + if(index != VENDING_WIRE_CONTRABAND) + ..(index) + else + return + +/obj/machinery/vending/nifsoft_shop/emag_act(remaining_charges, mob/user) //Yeees, YEEES! Give me that black market tech. + if(!emagged || !(categories & CAT_HIDDEN)) + emagged = 1 + categories |= CAT_HIDDEN + to_chat(user, "You short out [src]'s access lock & stock restrictions.") + return 1 diff --git a/code/modules/nifsoft/software/14_commlink.dm b/code/modules/nifsoft/software/14_commlink.dm index 66773dd711..f156e3ffb5 100644 --- a/code/modules/nifsoft/software/14_commlink.dm +++ b/code/modules/nifsoft/software/14_commlink.dm @@ -58,17 +58,18 @@ nif.save_data["commlink_name"] = owner //So that only the owner's chat is relayed to others. -/obj/item/device/communicator/commlink/hear_talk(mob/living/M, text, verb, datum/language/speaking) - if(M != nif.human) return - for(var/obj/item/device/communicator/comm in communicating) +/obj/item/device/communicator/commlink/hear_talk(mob/living/M, list/message_pieces, verb) + if(M != nif.human) + return + for(var/obj/item/device/communicator/comm in communicating) var/turf/T = get_turf(comm) if(!T) return var/icon_object = src var/list/mobs_to_relay - if(istype(comm,/obj/item/device/communicator/commlink)) + if(istype(comm, /obj/item/device/communicator/commlink)) var/obj/item/device/communicator/commlink/CL = comm mobs_to_relay = list(CL.nif.human) icon_object = CL.nif.big_icon @@ -77,18 +78,10 @@ mobs_to_relay = in_range["mobs"] for(var/mob/mob in mobs_to_relay) - //Can whoever is hearing us understand? - if(!mob.say_understands(M, speaking)) - if(speaking) - text = speaking.scramble(text) - else - text = stars(text) + var/message = mob.combine_message(message_pieces, verb, M) var/name_used = M.GetVoice() var/rendered = null - if(speaking) //Language being used - rendered = "[bicon(icon_object)] [name_used] [speaking.format_message(text, verb)]" - else - rendered = "[bicon(icon_object)] [name_used] [verb], \"[text]\"" + rendered = "[bicon(icon_object)] [name_used] [message]" mob.show_message(rendered, 2) //Not supported by the internal one diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 0a3685d61e..931eaab0cb 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -133,9 +133,9 @@ var/const/CE_STABLE_THRESHOLD = 0.5 // Without enough blood you slowly go hungry. if(blood_volume < BLOOD_VOLUME_SAFE) if(nutrition >= 300) - nutrition -= 10 + adjust_nutrition(-10) else if(nutrition >= 200) - nutrition -= 3 + adjust_nutrition(-3) //Bleeding out var/blood_max = 0 diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index c697f9bea5..094d3eb32a 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -113,11 +113,11 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain) callHook("debrain", list(brainmob)) /obj/item/organ/internal/brain/examine(mob/user) // -- TLE - ..(user) + . = ..() if(brainmob && brainmob.client)//if thar be a brain inside... the brain. - to_chat(user, "You can feel the small spark of life still left in this one.") + . += "You can feel the small spark of life still left in this one." else - to_chat(user, "This one seems particularly lifeless. Perhaps it will regain some of its luster later..") + . += "This one seems particularly lifeless. Perhaps it will regain some of its luster later..." /obj/item/organ/internal/brain/removed(var/mob/living/user) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 41b7a0ba39..c12d548235 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -158,9 +158,9 @@ var/list/organ_cache = list() handle_germ_effects() /obj/item/organ/examine(mob/user) - ..(user) + . = ..() if(status & ORGAN_DEAD) - to_chat(user, "The decay has set in.") + . += "Decay appears to have set in." //A little wonky: internal organs stop calling this (they return early in process) when dead, but external ones cause further damage when dead /obj/item/organ/proc/handle_germ_effects() diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 6ca1c97486..22249811c8 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -146,13 +146,12 @@ return ..() /obj/item/organ/external/examine() - ..() + . = ..() if(in_range(usr, src) || istype(usr, /mob/observer/dead)) for(var/obj/item/I in contents) if(istype(I, /obj/item/organ)) continue - to_chat(usr, "There is \a [I] sticking out of it.") - return + . += "There is \a [I] sticking out of it." /obj/item/organ/external/attackby(obj/item/weapon/W as obj, mob/living/user as mob) switch(stage) diff --git a/code/modules/organs/robolimbs_vr.dm b/code/modules/organs/robolimbs_vr.dm index a5ab8994cf..7f85cf642d 100644 --- a/code/modules/organs/robolimbs_vr.dm +++ b/code/modules/organs/robolimbs_vr.dm @@ -204,6 +204,7 @@ /datum/robolimb/dsi_teshari/New() species_cannot_use = GLOB.all_species.Copy() species_cannot_use -= SPECIES_TESHARI + species_cannot_use -= SPECIES_CUSTOM ..() /obj/item/weapon/disk/limb/dsi_teshari diff --git a/code/modules/organs/subtypes/machine.dm b/code/modules/organs/subtypes/machine.dm index 0e3a60fdd5..6bb76bbd5e 100644 --- a/code/modules/organs/subtypes/machine.dm +++ b/code/modules/organs/subtypes/machine.dm @@ -18,8 +18,8 @@ owner.visible_message("\The [owner] twitches visibly!") /obj/item/organ/internal/cell/emp_act(severity) - // ..() // VOREStation Edit - Don't take damage - owner.nutrition = max(0, owner.nutrition - rand(10/severity, 50/severity)) + ..() + owner.adjust_nutrition(-rand(10 / severity, 50 / severity)) // Used for an MMI or posibrain being installed into a human. /obj/item/organ/internal/mmi_holder diff --git a/code/modules/overmap/disperser/disperser.dm b/code/modules/overmap/disperser/disperser.dm new file mode 100644 index 0000000000..b51c0fb709 --- /dev/null +++ b/code/modules/overmap/disperser/disperser.dm @@ -0,0 +1,65 @@ +//Most interesting stuff happens in disperser_fire.dm +//This is just basic construction and deconstruction and the like + +/obj/machinery/disperser + name = "abstract parent for disperser" + desc = "You should never see one of these, bap your mappers." + icon = 'icons/obj/disperser.dmi' + idle_power_usage = 200 + density = TRUE + anchored = TRUE + +/obj/machinery/disperser/Initialize() + . = ..() + // TODO - Remove this bit once machines are converted to Initialize + if(ispath(circuit)) + circuit = new circuit(src) + default_apply_parts() + +/obj/machinery/disperser/examine(mob/user) + . = ..() + if(panel_open) + to_chat(user, "The maintenance panel is open.") + +/obj/machinery/disperser/attackby(obj/item/I, mob/user) + if(I && I.is_wrench()) + if(panel_open) + user.visible_message("\The [user] rotates \the [src] with \the [I].", + "You rotate \the [src] with \the [I].") + set_dir(turn(dir, 90)) + playsound(src, 'sound/items/jaws_pry.ogg', 50, 1) + else + to_chat(user, "The maintenance panel must be screwed open for this!") + return + if(default_deconstruction_screwdriver(user, I)) + return + if(default_deconstruction_crowbar(user, I)) + return + if(default_part_replacement(user, I)) + return + return ..() + +/obj/machinery/disperser/front + name = "obstruction removal ballista beam generator" + desc = "A complex machine which shoots concentrated material beams.\ +
A sign on it reads: STAY CLEAR! DO NOT BLOCK!" + icon_state = "front" + circuit = /obj/item/weapon/circuitboard/disperserfront + +/obj/machinery/disperser/middle + name = "obstruction removal ballista fusor" + desc = "A complex machine which transmits immense amount of data \ + from the material deconstructor to the particle beam generator.\ +
A sign on it reads: EXPLOSIVE! DO NOT OVERHEAT!" + icon_state = "middle" + circuit = /obj/item/weapon/circuitboard/dispersermiddle + // maximum_component_parts = list(/obj/item/weapon/stock_parts = 15) + +/obj/machinery/disperser/back + name = "obstruction removal ballista material deconstructor" + desc = "A prototype machine which can deconstruct materials atom by atom.\ +
A sign on it reads: KEEP AWAY FROM LIVING MATERIAL!" + icon_state = "back" + circuit = /obj/item/weapon/circuitboard/disperserback + density = FALSE + layer = UNDER_JUNK_LAYER //So the charges go above us. diff --git a/code/modules/overmap/disperser/disperser_charge.dm b/code/modules/overmap/disperser/disperser_charge.dm new file mode 100644 index 0000000000..b09557ebd1 --- /dev/null +++ b/code/modules/overmap/disperser/disperser_charge.dm @@ -0,0 +1,51 @@ +/obj/structure/ship_munition/disperser_charge + name = "unknown disperser charge" + desc = "A charge to power the obstruction removal ballista with. It looks impossibly round and shiny. This charge does not have a defined purpose." + icon = 'icons/obj/munitions.dmi' + icon_state = "slug" + w_class = ITEMSIZE_HUGE + density = TRUE + // atom_flags = ATOM_FLAG_NO_TEMP_CHANGE | ATOM_FLAG_CLIMBABLE + var/chargetype + var/chargedesc + var/static/list/move_sounds = list( // some nasty sounds to make when moving the board + 'sound/effects/metalscrape1.ogg', + 'sound/effects/metalscrape2.ogg', + 'sound/effects/metalscrape3.ogg' + ) + +// make a screeching noise to drive people mad +/obj/structure/ship_munition/disperser_charge/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + if(prob(50)) + var/turf/T = get_turf(src) + if(!isspace(T) && !istype(T, /turf/simulated/floor/carpet)) + playsound(T, pick(move_sounds), 50, 1) + +/obj/structure/ship_munition/disperser_charge/fire + name = "FR1-ENFER charge" + color = "#b95a00" + desc = "A charge to power the obstruction removal ballista with. It looks impossibly round and shiny. This charge is designed to release a localised fire on impact." + chargetype = OVERMAP_WEAKNESS_FIRE + chargedesc = "ENFER" + +/obj/structure/ship_munition/disperser_charge/emp + name = "EM2-QUASAR charge" + color = "#6a97b0" + desc = "A charge to power the obstruction removal ballista with. It looks impossibly round and shiny. This charge is designed to release a blast of electromagnetic pulse on impact." + chargetype = OVERMAP_WEAKNESS_EMP + chargedesc = "QUASAR" + +/obj/structure/ship_munition/disperser_charge/mining + name = "MN3-BERGBAU charge" + color = "#cfcf55" + desc = "A charge to power the obstruction removal ballista with. It looks impossibly round and shiny. This charge is designed to mine ores on impact." + chargetype = OVERMAP_WEAKNESS_MINING + chargedesc = "BERGBAU" + +/obj/structure/ship_munition/disperser_charge/explosive + name = "XP4-INDARRA charge" + color = "#aa5f61" + desc = "A charge to power the obstruction removal ballista with. It looks impossibly round and shiny. This charge is designed to explode on impact." + chargetype = OVERMAP_WEAKNESS_EXPLOSIVE + chargedesc = "INDARRA" diff --git a/code/modules/overmap/disperser/disperser_circuit.dm b/code/modules/overmap/disperser/disperser_circuit.dm new file mode 100644 index 0000000000..7ecf4ebf1b --- /dev/null +++ b/code/modules/overmap/disperser/disperser_circuit.dm @@ -0,0 +1,35 @@ +#ifndef T_BOARD +#error T_BOARD macro is not defined but we need it! +#endif + +/obj/item/weapon/circuitboard/disperser + name = T_BOARD("obstruction removal ballista control") + build_path = /obj/machinery/computer/ship/disperser + origin_tech = list(TECH_ENGINEERING = 2, TECH_COMBAT = 2, TECH_BLUESPACE = 2) + +/obj/item/weapon/circuitboard/disperserfront + name = T_BOARD("obstruction removal ballista beam generator") + build_path = /obj/machinery/disperser/front + board_type = new /datum/frame/frame_types/machine + origin_tech = list(TECH_ENGINEERING = 2, TECH_COMBAT = 2, TECH_BLUESPACE = 2) + req_components = list ( + /obj/item/weapon/stock_parts/manipulator/pico = 5 + ) + +/obj/item/weapon/circuitboard/dispersermiddle + name = T_BOARD("obstruction removal ballista fusor") + build_path = /obj/machinery/disperser/middle + board_type = new /datum/frame/frame_types/machine + origin_tech = list(TECH_ENGINEERING = 2, TECH_COMBAT = 2, TECH_BLUESPACE = 2) + req_components = list ( + /obj/item/weapon/stock_parts/subspace/crystal = 10 + ) + +/obj/item/weapon/circuitboard/disperserback + name = T_BOARD("obstruction removal ballista material deconstructor") + build_path = /obj/machinery/disperser/back + board_type = new /datum/frame/frame_types/machine + origin_tech = list(TECH_ENGINEERING = 2, TECH_COMBAT = 2, TECH_BLUESPACE = 2) + req_components = list ( + /obj/item/weapon/stock_parts/capacitor/super = 5 + ) diff --git a/code/modules/overmap/disperser/disperser_console.dm b/code/modules/overmap/disperser/disperser_console.dm new file mode 100644 index 0000000000..7ed212c8ac --- /dev/null +++ b/code/modules/overmap/disperser/disperser_console.dm @@ -0,0 +1,192 @@ +//Amazing disperser from Bxil(tm). Some icons, sounds, and some code shamelessly stolen from ParadiseSS13. + +/obj/machinery/computer/ship/disperser + name = "obstruction removal ballista control" + icon = 'icons/obj/computer.dmi' + icon_state = "computer" + circuit = /obj/item/weapon/circuitboard/disperser + + core_skill = /datum/skill/pilot + var/skill_offset = SKILL_ADEPT - 1 //After which skill level it starts to matter. -1, because we have to index from zero + + icon_keyboard = "rd_key" + icon_screen = "teleport" + + var/obj/machinery/disperser/front/front + var/obj/machinery/disperser/middle/middle + var/obj/machinery/disperser/back/back + var/const/link_range = 16 //How far can the above stuff be maximum before we start complaining + + var/overmapdir = 0 + + var/caldigit = 4 //number of digits that needs calibration + var/list/calibration //what it is + var/list/calexpected //what is should be + + var/range = 1 //range of the explosion + var/strength = 1 //strength of the explosion + var/next_shot = 0 //round time where the next shot can start from + var/const/coolinterval = 2 MINUTES //time to wait between safe shots in deciseconds + +/obj/machinery/computer/ship/disperser/Initialize() + . = ..() + link_parts() + reset_calibration() + +/obj/machinery/computer/ship/disperser/Destroy() + release_links() + . = ..() + +/obj/machinery/computer/ship/disperser/proc/link_parts() + if(is_valid_setup()) + return TRUE + + for(var/obj/machinery/disperser/front/F in global.machines) + if(get_dist(src, F) >= link_range) + continue + var/backwards = turn(F.dir, 180) + var/obj/machinery/disperser/middle/M = locate() in get_step(F, backwards) + if(!M || get_dist(src, M) >= link_range) + continue + var/obj/machinery/disperser/back/B = locate() in get_step(M, backwards) + if(!B || get_dist(src, B) >= link_range) + continue + front = F + middle = M + back = B + if(is_valid_setup()) + GLOB.destroyed_event.register(F, src, .proc/release_links) + GLOB.destroyed_event.register(M, src, .proc/release_links) + GLOB.destroyed_event.register(B, src, .proc/release_links) + return TRUE + return FALSE + +obj/machinery/computer/ship/disperser/proc/is_valid_setup() + if(front && middle && back) + var/everything_in_range = (get_dist(src, front) < link_range) && (get_dist(src, middle) < link_range) && (get_dist(src, back) < link_range) + var/everything_in_order = (middle.Adjacent(front) && middle.Adjacent(back)) && (front.dir == middle.dir && middle.dir == back.dir) + return everything_in_order && everything_in_range + return FALSE + +/obj/machinery/computer/ship/disperser/proc/release_links() + GLOB.destroyed_event.unregister(front, src, .proc/release_links) + GLOB.destroyed_event.unregister(middle, src, .proc/release_links) + GLOB.destroyed_event.unregister(back, src, .proc/release_links) + front = null + middle = null + back = null + +/obj/machinery/computer/ship/disperser/proc/get_calibration() + var/list/calresult[caldigit] + for(var/i = 1 to caldigit) + if(calibration[i] == calexpected[i]) + calresult[i] = 2 + else if(calibration[i] in calexpected) + calresult[i] = 1 + else + calresult[i] = 0 + return calresult + +/obj/machinery/computer/ship/disperser/proc/reset_calibration() + calexpected = new /list(caldigit) + calibration = new /list(caldigit) + for(var/i = 1 to caldigit) + calexpected[i] = rand(0,9) + calibration[i] = 0 + +/obj/machinery/computer/ship/disperser/proc/cal_accuracy() + var/top = 0 + var/divisor = caldigit * 2 //maximum possible value, aka 100% accuracy + for(var/i in get_calibration()) + top += i + return round(top * 100 / divisor) + +/obj/machinery/computer/ship/disperser/proc/get_next_shot_seconds() + return max(0, (next_shot - world.time) / 10) + +/obj/machinery/computer/ship/disperser/proc/cool_failchance() + return get_next_shot_seconds() * 1000 / coolinterval + +/obj/machinery/computer/ship/disperser/proc/get_charge_type() + var/obj/structure/ship_munition/disperser_charge/B = locate() in get_turf(back) + if(B) + return B.chargetype + return OVERMAP_WEAKNESS_NONE + +/obj/machinery/computer/ship/disperser/proc/get_charge() + var/obj/structure/ship_munition/disperser_charge/B = locate() in get_turf(back) + if(B) + return B + +/obj/machinery/computer/ship/disperser/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = TRUE) + if(!linked) + display_reconnect_dialog(user, "disperser synchronization") + return + + var/data[0] + + if (!link_parts()) + data["faillink"] = TRUE + else + data["calibration"] = calibration + data["overmapdir"] = overmapdir + data["cal_accuracy"] = cal_accuracy() + data["strength"] = strength + data["range"] = range + data["next_shot"] = round(get_next_shot_seconds()) + data["nopower"] = !data["faillink"] && (!front.powered() || !middle.powered() || !back.powered()) + data["skill"] = user.get_skill_value(core_skill) > skill_offset + + var/charge = "UNKNOWN ERROR" + if(get_charge_type() == OVERMAP_WEAKNESS_NONE) + charge = "ERROR: No valid charge detected." + else + var/obj/structure/ship_munition/disperser_charge/B = get_charge() + charge = B.chargedesc + data["chargeload"] = charge + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "disperser.tmpl", "[linked.name] ORB control", 400, 550) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/computer/ship/disperser/OnTopic(mob/user, list/href_list, state) + . = ..() + if(.) + return + + if(!linked) + return TOPIC_HANDLED + + if (href_list["choose"]) + overmapdir = sanitize_integer(text2num(href_list["choose"]), 0, 9, 0) + reset_calibration() + + if(href_list["calibration"]) + var/input = input("0-9", "disperser calibration", 0) as num|null + if(!isnull(input)) //can be zero so we explicitly check for null + var/calnum = sanitize_integer(text2num(href_list["calibration"]), 0, caldigit)//sanitiiiiize + calibration[calnum + 1] = sanitize_integer(input, 0, 9, 0)//must add 1 because nanoui indexes from 0 + + if(href_list["skill_calibration"]) + for(var/i = 1 to min(caldigit, user.get_skill_value(core_skill) - skill_offset)) + calibration[i] = calexpected[i] + + if(href_list["strength"]) + var/input = input("1-5", "disperser strength", 1) as num|null + if(input && CanInteract(user, state)) + strength = sanitize_integer(input, 1, 5, 1) + middle.update_idle_power_usage(strength * range * 100) + + if(href_list["range"]) + var/input = input("1-5", "disperser radius", 1) as num|null + if(input && CanInteract(user, state)) + range = sanitize_integer(input, 1, 5, 1) + middle.update_idle_power_usage(strength * range * 100) + + if(href_list["fire"]) + fire(user) + + return TOPIC_REFRESH diff --git a/code/modules/overmap/disperser/disperser_fire.dm b/code/modules/overmap/disperser/disperser_fire.dm new file mode 100644 index 0000000000..421c9b4a20 --- /dev/null +++ b/code/modules/overmap/disperser/disperser_fire.dm @@ -0,0 +1,100 @@ +/obj/machinery/computer/ship/disperser/proc/fire(mob/user) + log_and_message_admins("attempted to launch a disperser beam.") + if(!link_parts()) + return FALSE //no disperser, no service + if(!front.powered() || !middle.powered() || !back.powered()) + return FALSE //no power, no boom boom + var/chargetype = get_charge_type() + if(chargetype <= 0) + return FALSE //no dear, you cannot fire the captain out of a cannon... unless you put him in a box of course + + var/atom/movable/atomcharge = get_charge() + + var/turf/start = front + var/direction = front.dir + + var/distance = 0 + for(var/turf/T in getline(get_step(front,front.dir), get_target_turf(start, direction))) + distance++ + if(T.density) + if(distance < 7) + explosion(T,1,2,3) + continue + else + T.ex_act(1) + for(var/atom/A in T) + if(A.density) + if(distance < 7) + explosion(A,1,2,3) + break + else + A.ex_act(1) + + var/list/relevant_z = GetConnectedZlevels(start.z) + for(var/mob/M in global.player_list) + var/turf/T = get_turf(M) + if(!T || !(T.z in relevant_z)) + continue + shake_camera(M, 25) + if(!isdeaf(M)) + M << sound('sound/effects/explosionfar.ogg', volume=10) + + if(front) //Meanwhile front might have exploded + front.layer = ABOVE_JUNK_LAYER //So the beam goes below us. Looks a lot better + playsound(start, 'sound/machines/disperser_fire.ogg', 100, 1) + handle_beam(start, direction) + handle_overbeam() + qdel(atomcharge) + + //Some moron disregarded the cooldown warning. Let's blow in their face. + if(prob(cool_failchance())) + explosion(middle,rand(1,2),rand(2,3),rand(3,4)) + next_shot = coolinterval + world.time + + //Success, but we missed. + if(prob(100 - cal_accuracy())) + return TRUE + + reset_calibration() + + var/list/candidates = list() + + for(var/obj/effect/overmap/event/O in get_step(linked, overmapdir)) + candidates += O + + //Way to waste a charge + if(!length(candidates)) + return TRUE + + var/obj/effect/overmap/event/finaltarget = pick(candidates) + log_and_message_admins("A type [chargetype] disperser beam was launched at [finaltarget].", location=finaltarget) + + fire_at_event(finaltarget, chargetype) + return TRUE + +/obj/machinery/computer/ship/disperser/proc/fire_at_event(obj/effect/overmap/event/finaltarget, chargetype) + if(chargetype & finaltarget.weaknesses) + var/turf/T = finaltarget.loc + qdel(finaltarget) + GLOB.overmap_event_handler.update_hazards(T) + +/obj/machinery/computer/ship/disperser/proc/handle_beam(turf/start, direction) + set waitfor = FALSE + start.Beam(get_target_turf(start, direction), "bsa_beam", time = 50, maxdistance = world.maxx) + if(front) + front.layer = initial(front.layer) + +/obj/machinery/computer/ship/disperser/proc/handle_overbeam() + set waitfor = FALSE + linked.Beam(get_step(linked, overmapdir), "bsa_beam", time = 150, maxdistance = world.maxx) + +/obj/machinery/computer/ship/disperser/proc/get_target_turf(turf/start, direction) + switch(direction) + if(NORTH) + return locate(start.x,world.maxy,start.z) + if(SOUTH) + return locate(start.x,1,start.z) + if(WEST) + return locate(1,start.y,start.z) + if(EAST) + return locate(world.maxx,start.y,start.z) \ No newline at end of file diff --git a/code/modules/overmap/events/overmap_event.dm b/code/modules/overmap/events/overmap_event.dm index 9add25a5c1..ff1b4ae105 100644 --- a/code/modules/overmap/events/overmap_event.dm +++ b/code/modules/overmap/events/overmap_event.dm @@ -19,19 +19,10 @@ icon_state = pick(event_icon_states) GLOB.overmap_event_handler.update_hazards(loc) -/obj/effect/overmap/event/Move() - var/turf/old_loc = loc +/obj/effect/overmap/event/Moved(atom/old_loc, direction, forced = FALSE) . = ..() - if(.) - GLOB.overmap_event_handler.update_hazards(old_loc) - GLOB.overmap_event_handler.update_hazards(loc) - -/obj/effect/overmap/event/forceMove(atom/destination) - var/old_loc = loc - . = ..() - if(.) - GLOB.overmap_event_handler.update_hazards(old_loc) - GLOB.overmap_event_handler.update_hazards(loc) + GLOB.overmap_event_handler.update_hazards(old_loc) + GLOB.overmap_event_handler.update_hazards(loc) /obj/effect/overmap/event/Destroy()//takes a look at this one as well, make sure everything is A-OK var/turf/T = loc diff --git a/code/modules/overmap/overmap_object.dm b/code/modules/overmap/overmap_object.dm index fd2798e7d6..25d088fb56 100644 --- a/code/modules/overmap/overmap_object.dm +++ b/code/modules/overmap/overmap_object.dm @@ -5,13 +5,49 @@ var/known = 1 //shows up on nav computers automatically var/scannable //if set to TRUE will show up on ship sensors for detailed scans + var/scanner_name //name for scans, replaces name once scanned + var/scanner_desc //description for scans + + var/skybox_icon //Icon file to use for skybox + var/skybox_icon_state //Icon state to use for skybox + var/skybox_pixel_x //Shift from lower left corner of skybox + var/skybox_pixel_y //Shift from lower left corner of skybox + var/image/cached_skybox_image //Cachey //Overlay of how this object should look on other skyboxes /obj/effect/overmap/proc/get_skybox_representation() - return + if(!cached_skybox_image) + build_skybox_representation() + return cached_skybox_image + +/obj/effect/overmap/proc/build_skybox_representation() + if(!skybox_icon) + return + var/image/I = image(icon = skybox_icon, icon_state = skybox_icon_state) + if(isnull(skybox_pixel_x)) + skybox_pixel_x = rand(200,600) + if(isnull(skybox_pixel_y)) + skybox_pixel_y = rand(200,600) + I.pixel_x = skybox_pixel_x + I.pixel_y = skybox_pixel_y + cached_skybox_image = I + +/obj/effect/overmap/proc/expire_skybox_representation() + cached_skybox_image = null + +/obj/effect/overmap/proc/update_skybox_representation() + expire_skybox_representation() + build_skybox_representation() + for(var/obj/effect/overmap/visitable/O in loc) + SSskybox.rebuild_skyboxes(O.map_z) /obj/effect/overmap/proc/get_scan_data(mob/user) - return desc + if(scanner_name && (name != scanner_name)) //A silly check, but 'name' is part of appearance, so more expensive than you might think + name = scanner_name + + var/dat = {"\[b\]Scan conducted at\[/b\]: [stationtime2text()] [stationdate2text()]\n\[b\]Grid coordinates\[/b\]: [x],[y]\n\n[scanner_desc]"} + + return dat /obj/effect/overmap/Initialize() . = ..() diff --git a/code/modules/overmap/overmap_shuttle.dm b/code/modules/overmap/overmap_shuttle.dm index b614137db4..d009c53847 100644 --- a/code/modules/overmap/overmap_shuttle.dm +++ b/code/modules/overmap/overmap_shuttle.dm @@ -42,7 +42,7 @@ if(moving_status == SHUTTLE_INTRANSIT) return FALSE //already going somewhere, current_location may be an intransit location instead of in a sector var/our_sector = waypoint_sector(current_location) - if(!our_sector && myship?.landmark && next_location == myship.landmark) + if(myship?.landmark && next_location == myship.landmark) return TRUE //We're not on the overmap yet (admin spawned probably), and we're trying to hook up with our openspace sector return get_dist(our_sector, waypoint_sector(next_location)) <= range diff --git a/code/modules/overmap/sectors.dm b/code/modules/overmap/sectors.dm index 9c3408eabf..3282fadc43 100644 --- a/code/modules/overmap/sectors.dm +++ b/code/modules/overmap/sectors.dm @@ -4,6 +4,7 @@ /obj/effect/overmap/visitable name = "map object" scannable = TRUE + scanner_desc = "!! No Data Available !!" var/list/map_z = list() var/list/extra_z_levels //if you need to manually insist that these z-levels are part of this sector, for things like edge-of-map step trigger transitions rather than multi-z complexes @@ -69,10 +70,12 @@ global.using_map.player_levels |= map_z if(!in_space) global.using_map.sealed_levels |= map_z + /* VOREStation Removal - We have a map system that does this already. if(base) global.using_map.station_levels |= map_z global.using_map.contact_levels |= map_z global.using_map.map_levels |= map_z + */ /obj/effect/overmap/visitable/proc/get_space_zlevels() if(in_space) @@ -150,7 +153,7 @@ var/area/overmap/A = new for (var/square in block(locate(1,1,global.using_map.overmap_z), locate(global.using_map.overmap_size,global.using_map.overmap_size,global.using_map.overmap_z))) var/turf/T = square - if(T.x == global.using_map.overmap_size || T.y == global.using_map.overmap_size) + if(T.x == 1 || T.y == 1 || T.x == global.using_map.overmap_size || T.y == global.using_map.overmap_size) T = T.ChangeTurf(/turf/unsimulated/map/edge) else T = T.ChangeTurf(/turf/unsimulated/map) diff --git a/code/modules/overmap/ships/computers/computer_shims.dm b/code/modules/overmap/ships/computers/computer_shims.dm index c685acc49d..5dbb61405d 100644 --- a/code/modules/overmap/ships/computers/computer_shims.dm +++ b/code/modules/overmap/ships/computers/computer_shims.dm @@ -12,17 +12,13 @@ // Power // -// This will have this machine have its area eat this much power next tick, and not afterwards. Do not use for continued power draw. -/obj/machinery/proc/use_power_oneoff(var/amount, var/chan = -1) - return use_power(amount, chan) - // Change one of the power consumption vars /obj/machinery/proc/change_power_consumption(new_power_consumption, use_power_mode = USE_POWER_IDLE) switch(use_power_mode) if(USE_POWER_IDLE) - idle_power_usage = new_power_consumption + update_idle_power_usage(new_power_consumption) if(USE_POWER_ACTIVE) - active_power_usage = new_power_consumption + update_active_power_usage(new_power_consumption) // No need to do anything else in our power scheme. // Defining directly here to avoid conflicts with existing set_broken procs in our codebase that behave differently. @@ -95,10 +91,13 @@ /obj/machinery/computer/ship/attack_ghost(mob/user) interface_interact(user) -// If you don't call parent in this proc, you must make all appropriate checks yourself. +// If you don't call parent in this proc, you must make all appropriate checks yourself. // If you do, you must respect the return value. /obj/machinery/computer/ship/attack_hand(mob/user) if((. = ..())) return + if(!allowed(user)) + to_chat(user, "Access Denied.") + return 1 if(CanUseTopic(user, DefaultTopicState()) > STATUS_CLOSE) return interface_interact(user) diff --git a/code/modules/overmap/ships/computers/sensors.dm b/code/modules/overmap/ships/computers/sensors.dm index c1571c12ef..b359f552d5 100644 --- a/code/modules/overmap/ships/computers/sensors.dm +++ b/code/modules/overmap/ships/computers/sensors.dm @@ -165,13 +165,13 @@ /obj/machinery/shipsensors/examine(mob/user) . = ..() if(health <= 0) - to_chat(user, "\The [src] is wrecked.") + . += "It is wrecked." else if(health < max_health * 0.25) - to_chat(user, "\The [src] looks like it's about to break!") + . += "It looks like it's about to break!" else if(health < max_health * 0.5) - to_chat(user, "\The [src] looks seriously damaged!") + . += "It looks seriously damaged!" else if(health < max_health * 0.75) - to_chat(user, "\The [src] shows signs of damage!") + . += "It shows signs of damage!" /obj/machinery/shipsensors/bullet_act(var/obj/item/projectile/Proj) take_damage(Proj.get_structure_damage()) diff --git a/code/modules/overmap/ships/engines/gas_thruster.dm b/code/modules/overmap/ships/engines/gas_thruster.dm index 04101984c4..d111c2614e 100644 --- a/code/modules/overmap/ships/engines/gas_thruster.dm +++ b/code/modules/overmap/ships/engines/gas_thruster.dm @@ -150,7 +150,7 @@ /obj/machinery/atmospherics/unary/engine/proc/burn() if(!is_on()) return 0 - if(!check_fuel() || (0 < use_power_oneoff(charge_per_burn)) || check_blockage()) + if(!check_fuel() || (use_power_oneoff(charge_per_burn) < charge_per_burn) || check_blockage()) audible_message(src,"[src] coughs once and goes silent!") update_use_power(USE_POWER_OFF) return 0 diff --git a/code/modules/overmap/ships/engines/gas_thruster_vr.dm b/code/modules/overmap/ships/engines/gas_thruster_vr.dm new file mode 100644 index 0000000000..c3deb55c47 --- /dev/null +++ b/code/modules/overmap/ships/engines/gas_thruster_vr.dm @@ -0,0 +1,71 @@ +//These connect at the corner 2 steps and 3 steps in the dir from their loc +/obj/machinery/atmospherics/unary/engine/bigger + name = "large rocket nozzle" + desc = "Advanced rocket nozzle, expelling gas at hypersonic velocities to propel the ship." + icon = 'icons/turf/shuttle_parts64.dmi' + icon_state = "engine_off" + + volume_per_burn = 30 + charge_per_burn = 6000 + boot_time = 70 + + bound_width = 64 + bound_height = 64 + +/obj/machinery/atmospherics/unary/engine/bigger/atmos_init() + if(node) + return + + var/node_connect = dir + var/turf/one_step = get_step(src,node_connect) + + for(var/obj/machinery/atmospherics/target in get_step(one_step,node_connect)) + if(can_be_node(target, 1)) + node = target + break + + update_icon() + update_underlays() + +/obj/machinery/atmospherics/unary/engine/bigger/burn() + . = ..() + if(.) + icon_state = "engine_on" + spawn(2 SECONDS) + icon_state = initial(icon_state) + +/obj/machinery/atmospherics/unary/engine/biggest + name = "huge rocket nozzle" + desc = "Enormous rocket nozzle, expelling gas at hypersonic velocities to propel the ship." + icon = 'icons/turf/shuttle_parts96.dmi' + icon_state = "engine_off" + + volume_per_burn = 50 + charge_per_burn = 10000 + boot_time = 100 + + bound_width = 96 + bound_height = 96 + +/obj/machinery/atmospherics/unary/engine/biggest/burn() + . = ..() + if(.) + icon_state = "engine_on" + spawn(2 SECONDS) + icon_state = initial(icon_state) + +/obj/machinery/atmospherics/unary/engine/biggest/atmos_init() + if(node) + return + + var/node_connect = dir + var/turf/one_step = get_step(src,node_connect) + var/turf/two_step = get_step(one_step,node_connect) + + for(var/obj/machinery/atmospherics/target in get_step(two_step,node_connect)) + if(can_be_node(target, 1)) + node = target + break + + update_icon() + update_underlays() \ No newline at end of file diff --git a/code/modules/overmap/ships/engines/thermal.dm b/code/modules/overmap/ships/engines/thermal.dm deleted file mode 100644 index 9c4af11cc6..0000000000 --- a/code/modules/overmap/ships/engines/thermal.dm +++ /dev/null @@ -1,99 +0,0 @@ -//Thermal nozzle engine -/datum/ship_engine/thermal - name = "thermal engine" - -/datum/ship_engine/thermal/get_status() - ..() - var/obj/machinery/atmospherics/unary/engine/E = engine - return "Fuel pressure: [E.air_contents.return_pressure()]" - -/datum/ship_engine/thermal/get_thrust() - ..() - var/obj/machinery/atmospherics/unary/engine/E = engine - if(!is_on()) - return 0 - var/pressurized_coef = E.air_contents.return_pressure()/E.effective_pressure - return round(E.thrust_limit * E.nominal_thrust * pressurized_coef) - -/datum/ship_engine/thermal/burn() - ..() - var/obj/machinery/atmospherics/unary/engine/E = engine - return E.burn() - -/datum/ship_engine/thermal/set_thrust_limit(var/new_limit) - ..() - var/obj/machinery/atmospherics/unary/engine/E = engine - E.thrust_limit = new_limit - -/datum/ship_engine/thermal/get_thrust_limit() - ..() - var/obj/machinery/atmospherics/unary/engine/E = engine - return E.thrust_limit - -/datum/ship_engine/thermal/is_on() - ..() - var/obj/machinery/atmospherics/unary/engine/E = engine - return E.on - -/datum/ship_engine/thermal/toggle() - ..() - var/obj/machinery/atmospherics/unary/engine/E = engine - E.on = !E.on - -//Actual thermal nozzle engine object - -/obj/machinery/atmospherics/unary/engine - name = "engine nozzle" - desc = "Simple thermal nozzle, uses heated gast to propell the ship." - icon = 'icons/obj/ship_engine.dmi' - icon_state = "nozzle" - var/on = 1 - var/thrust_limit = 1 //Value between 1 and 0 to limit the resulting thrust - var/nominal_thrust = 3000 - var/effective_pressure = 3000 - var/datum/ship_engine/thermal/controller - -/obj/machinery/atmospherics/unary/engine/Initialize() - . = ..() - controller = new(src) - -/obj/machinery/atmospherics/unary/engine/Destroy() - ..() - controller.die() - -/obj/machinery/atmospherics/unary/engine/proc/burn() - if (!on) - return - if(air_contents.temperature > 0) - var/transfer_moles = 100 * air_contents.volume/max(air_contents.temperature * R_IDEAL_GAS_EQUATION, 0,01) - transfer_moles = round(thrust_limit * transfer_moles, 0.01) - if(transfer_moles > air_contents.total_moles) - on = !on - return 0 - - var/datum/gas_mixture/removed = air_contents.remove(transfer_moles) - - loc.assume_air(removed) - if(air_contents.temperature > PHORON_MINIMUM_BURN_TEMPERATURE) - var/exhaust_dir = reverse_direction(dir) - var/turf/T = get_step(src,exhaust_dir) - if(T) - new/obj/effect/engine_exhaust(T,exhaust_dir,air_contents.temperature) - return 1 - -//Exhaust effect -/obj/effect/engine_exhaust - name = "engine exhaust" - icon = 'icons/effects/effects.dmi' - icon_state = "exhaust" - anchored = 1 - - New(var/turf/nloc, var/ndir, var/temp) - set_dir(ndir) - ..(nloc) - - if(nloc) - nloc.hotspot_expose(temp,125) - - spawn(20) - loc = null \ No newline at end of file diff --git a/code/modules/overmap/ships/landable.dm b/code/modules/overmap/ships/landable.dm index 0a28eefd8d..fed030ba6f 100644 --- a/code/modules/overmap/ships/landable.dm +++ b/code/modules/overmap/ships/landable.dm @@ -11,6 +11,7 @@ moving_state = "shuttle_moving" /obj/effect/overmap/visitable/ship/landable/Destroy() + GLOB.shuttle_pre_move_event.unregister(SSshuttles.shuttles[shuttle], src) GLOB.shuttle_moved_event.unregister(SSshuttles.shuttles[shuttle], src) return ..() @@ -34,13 +35,18 @@ // We autobuild our z levels. /obj/effect/overmap/visitable/ship/landable/find_z_levels() + src.landmark = new(null, shuttle) // Create in nullspace since we lazy-create overmap z + add_landmark(landmark, shuttle) + +/obj/effect/overmap/visitable/ship/landable/proc/setup_overmap_location() + if(LAZYLEN(map_z)) + return // We're already set up! for(var/i = 0 to multiz) world.increment_max_z() map_z += world.maxz var/turf/center_loc = locate(round(world.maxx/2), round(world.maxy/2), world.maxz) - landmark = new (center_loc, shuttle) - add_landmark(landmark, shuttle) + landmark.forceMove(center_loc) var/visitor_dir = fore_dir for(var/landmark_name in list("FORE", "PORT", "AFT", "STARBOARD")) @@ -51,6 +57,8 @@ if(multiz) new /obj/effect/landmark/map_data(center_loc, (multiz + 1)) + register_z_levels() + testing("Setup overmap location for \"[name]\" containing Z [english_list(map_z)]") /obj/effect/overmap/visitable/ship/landable/get_areas() var/datum/shuttle/shuttle_datum = SSshuttles.shuttles[shuttle] @@ -64,13 +72,19 @@ if(istype(shuttle_datum,/datum/shuttle/autodock/overmap)) var/datum/shuttle/autodock/overmap/oms = shuttle_datum oms.myship = src + GLOB.shuttle_pre_move_event.register(shuttle_datum, src, .proc/pre_shuttle_jump) GLOB.shuttle_moved_event.register(shuttle_datum, src, .proc/on_shuttle_jump) on_landing(landmark, shuttle_datum.current_location) // We "land" at round start to properly place ourselves on the overmap. + +// +// Center Landmark +// + /obj/effect/shuttle_landmark/ship name = "Open Space" landmark_tag = "ship" - flags = SLANDMARK_FLAG_AUTOSET | SLANDMARK_FLAG_ZERO_G + flags = SLANDMARK_FLAG_ZERO_G // *Not* AUTOSET, these must be world.turf and world.area for lazy loading to work. var/shuttle_name var/list/visitors // landmark -> visiting shuttle stationed there @@ -78,6 +92,7 @@ landmark_tag += "_[shuttle_name]" src.shuttle_name = shuttle_name . = ..() + base_turf = world.turf /obj/effect/shuttle_landmark/ship/Destroy() var/obj/effect/overmap/visitable/ship/landable/ship = get_overmap_sector(z) @@ -85,10 +100,22 @@ ship.landmark = null . = ..() +/obj/effect/shuttle_landmark/ship/is_valid(datum/shuttle/shuttle) + return (isnull(loc) || ..()) // If it doesn't exist yet, its clear + +/obj/effect/shuttle_landmark/ship/create_warning_effect(var/datum/shuttle/shuttle) + if(isnull(loc)) + return + ..() + /obj/effect/shuttle_landmark/ship/cannot_depart(datum/shuttle/shuttle) if(LAZYLEN(visitors)) return "Grappled by other shuttle; cannot manouver." +// +// Visitor Landmark +// + /obj/effect/shuttle_landmark/visiting_shuttle flags = SLANDMARK_FLAG_AUTOSET | SLANDMARK_FLAG_ZERO_G var/obj/effect/shuttle_landmark/ship/core_landmark @@ -125,6 +152,17 @@ GLOB.shuttle_moved_event.unregister(shuttle, src) LAZYREMOVE(core_landmark.visitors, src) +// +// More ship procs +// + +/obj/effect/overmap/visitable/ship/landable/proc/pre_shuttle_jump(datum/shuttle/given_shuttle, obj/effect/shuttle_landmark/from, obj/effect/shuttle_landmark/into) + if(given_shuttle != SSshuttles.shuttles[shuttle]) + return + if(into == landmark) + setup_overmap_location() // They're coming boys, better actually exist! + GLOB.shuttle_pre_move_event.unregister(SSshuttles.shuttles[shuttle], src) + /obj/effect/overmap/visitable/ship/landable/proc/on_shuttle_jump(datum/shuttle/given_shuttle, obj/effect/shuttle_landmark/from, obj/effect/shuttle_landmark/into) if(given_shuttle != SSshuttles.shuttles[shuttle]) return diff --git a/code/modules/overmap/ships/ship.dm b/code/modules/overmap/ships/ship.dm index 4dcecc5d6e..94a19e36dc 100644 --- a/code/modules/overmap/ships/ship.dm +++ b/code/modules/overmap/ships/ship.dm @@ -10,20 +10,24 @@ // Uses Lorentzian dynamics to avoid going too fast. /obj/effect/overmap/visitable/ship - name = "generic ship" - desc = "Space faring vessel." + name = "spacecraft" + desc = "This marker represents a spaceship. Scan it for more information." + scanner_desc = "Unknown spacefaring vessel." + dir = NORTH icon_state = "ship" + appearance_flags = TILE_BOUND|KEEP_TOGETHER|LONG_GLIDE //VOREStation Edit var/moving_state = "ship_moving" var/vessel_mass = 10000 //tonnes, arbitrary number, affects acceleration provided by engines var/vessel_size = SHIP_SIZE_LARGE //arbitrary number, affects how likely are we to evade meteors - var/max_speed = 1/(1 SECOND) //"speed of light" for the ship, in turfs/tick. + var/max_speed = 1/(1 SECOND) //"speed of light" for the ship, in turfs/decisecond. var/min_speed = 1/(2 MINUTES) // Below this, we round speed to 0 to avoid math errors. + var/position_x // Pixel coordinates in the world + var/position_y // Pixel coordinates in the world. var/list/speed = list(0,0) //speed in x,y direction var/last_burn = 0 //worldtime when ship last acceleated var/burn_delay = 1 SECOND //how often ship can do burns - var/list/last_movement = list(0,0) //worldtime when ship last moved in x,y direction var/fore_dir = NORTH //what dir ship flies towards for purpose of moving stars effect procs var/list/engines = list() @@ -38,10 +42,11 @@ min_speed = round(min_speed, SHIP_MOVE_RESOLUTION) max_speed = round(max_speed, SHIP_MOVE_RESOLUTION) SSshuttles.ships += src - START_PROCESSING(SSobj, src) + position_x = ((loc.x - 1) * WORLD_ICON_SIZE) + (WORLD_ICON_SIZE/2) + pixel_x + 1 + position_y = ((loc.y - 1) * WORLD_ICON_SIZE) + (WORLD_ICON_SIZE/2) + pixel_y + 1 /obj/effect/overmap/visitable/ship/Destroy() - STOP_PROCESSING(SSobj, src) + STOP_PROCESSING(SSprocessing, src) SSshuttles.ships -= src . = ..() @@ -54,8 +59,19 @@ /obj/effect/overmap/visitable/ship/get_scan_data(mob/user) . = ..() + if(!is_still()) - . += "
Heading: [get_heading_degrees()], speed [get_speed() * 1000]" + . += {"\n\[i\]Heading\[/i\]: [get_heading_degrees()]\n\[i\]Velocity\[/i\]: [get_speed() * 1000]"} + else + . += {"\n\[i\]Vessel was stationary at time of scan.\[/i\]\n"} + + var/life = 0 + + for(var/mob/living/L in living_mob_list) + if(L.z in map_z) //Things inside things we'll consider shielded, otherwise we'd want to use get_z(L) + life++ + + . += {"\[i\]Life Signs\[/i\]: [life ? life : "None"]"} //Projected acceleration based on information from engines /obj/effect/overmap/visitable/ship/proc/get_acceleration() @@ -93,14 +109,22 @@ return (ATAN2(speed[2], speed[1]) + 360) % 360 // Yes ATAN2(y, x) is correct to get clockwise degrees /obj/effect/overmap/visitable/ship/proc/adjust_speed(n_x, n_y) + var/old_still = is_still() CHANGE_SPEED_BY(speed[1], n_x) CHANGE_SPEED_BY(speed[2], n_y) - for(var/zz in map_z) - if(is_still()) - toggle_move_stars(zz) - else - toggle_move_stars(zz, fore_dir) update_icon() + var/still = is_still() + if(still == old_still) + return + else if(still) + STOP_PROCESSING(SSprocessing, src) + for(var/zz in map_z) + toggle_move_stars(zz) + else + START_PROCESSING(SSprocessing, src) + glide_size = WORLD_ICON_SIZE/max(DS2TICKS(SSprocessing.wait), 1) //Down to whatever decimal + for(var/zz in map_z) + toggle_move_stars(zz, fore_dir) /obj/effect/overmap/visitable/ship/proc/get_brake_path() if(!get_acceleration()) @@ -136,26 +160,55 @@ if(direction & SOUTH) adjust_speed(0, -acceleration) -/obj/effect/overmap/visitable/ship/process() - if(!halted && !is_still()) - var/list/deltas = list(0,0) - for(var/i=1, i<=2, i++) - if(MOVING(speed[i]) && world.time > last_movement[i] + 1/abs(speed[i])) - deltas[i] = SIGN(speed[i]) - last_movement[i] = world.time - var/turf/newloc = locate(x + deltas[1], y + deltas[2], z) - if(newloc) - Move(newloc) - update_icon() +/obj/effect/overmap/visitable/ship/process(wait) + var/new_position_x = position_x + (speed[1] * WORLD_ICON_SIZE * wait) + var/new_position_y = position_y + (speed[2] * WORLD_ICON_SIZE * wait) + + // For simplicity we assume that you can't travel more than one turf per tick. That would be hella-fast. + var/new_turf_x = CEILING(new_position_x / WORLD_ICON_SIZE, 1) + var/new_turf_y = CEILING(new_position_y / WORLD_ICON_SIZE, 1) + + var/new_pixel_x = MODULUS(new_position_x, WORLD_ICON_SIZE) - (WORLD_ICON_SIZE/2) - 1 + var/new_pixel_y = MODULUS(new_position_y, WORLD_ICON_SIZE) - (WORLD_ICON_SIZE/2) - 1 + + var/new_loc = locate(new_turf_x, new_turf_y, z) + + position_x = new_position_x + position_y = new_position_y + + if(new_loc != loc) + var/turf/old_loc = loc + Move(new_loc, NORTH, wait) + if(get_dist(old_loc, loc) > 1) + pixel_x = new_pixel_x + pixel_y = new_pixel_y + return + animate(src, pixel_x = new_pixel_x, pixel_y = new_pixel_y, time = wait, flags = ANIMATION_END_NOW) + +// If we get moved, update our internal tracking to account for it +/obj/effect/overmap/visitable/ship/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + // If moving out of another sector start off centered in the turf. + if(!isturf(old_loc)) + position_x = (WORLD_ICON_SIZE/2) + 1 + position_y = (WORLD_ICON_SIZE/2) + 1 + pixel_x = 0 + pixel_y = 0 + position_x = ((loc.x - 1) * WORLD_ICON_SIZE) + MODULUS(position_x, WORLD_ICON_SIZE) + position_y = ((loc.y - 1) * WORLD_ICON_SIZE) + MODULUS(position_y, WORLD_ICON_SIZE) /obj/effect/overmap/visitable/ship/update_icon() if(!is_still()) icon_state = moving_state - dir = get_heading() + transform = matrix().Turn(get_heading_degrees()) else icon_state = initial(icon_state) + transform = null ..() +/obj/effect/overmap/visitable/ship/set_dir(new_dir) + return ..(NORTH) // NO! We always face north. + /obj/effect/overmap/visitable/ship/proc/burn() for(var/datum/ship_engine/E in engines) . += E.burn() @@ -175,10 +228,15 @@ //deciseconds to next step /obj/effect/overmap/visitable/ship/proc/ETA() . = INFINITY - for(var/i=1, i<=2, i++) - if(MOVING(speed[i])) - . = min(last_movement[i] - world.time + 1/abs(speed[i]), .) - . = max(.,0) + if(MOVING(speed[1])) + var/offset = MODULUS(position_x, WORLD_ICON_SIZE) + var/dist_to_go = (speed[1] > 0) ? (WORLD_ICON_SIZE - offset) : offset + . = min(., (dist_to_go / abs(speed[1])) * (1/WORLD_ICON_SIZE)) + if(MOVING(speed[2])) + var/offset = MODULUS(position_y, WORLD_ICON_SIZE) + var/dist_to_go = (speed[2] > 0) ? (WORLD_ICON_SIZE - offset) : offset + . = min(., (dist_to_go / abs(speed[2])) * (1/WORLD_ICON_SIZE)) + . = max(., 0) /obj/effect/overmap/visitable/ship/proc/halt() adjust_speed(-speed[1], -speed[2]) diff --git a/code/modules/overmap/spacetravel.dm b/code/modules/overmap/spacetravel.dm index aec5c06f75..a51cfc3f6d 100644 --- a/code/modules/overmap/spacetravel.dm +++ b/code/modules/overmap/spacetravel.dm @@ -29,14 +29,16 @@ var/list/cached_space = list() return 1 proc/get_deepspace(x,y) - var/obj/effect/overmap/visitable/sector/temporary/res = locate(x,y,global.using_map.overmap_z) + var/turf/unsimulated/map/overmap_turf = locate(x,y,global.using_map.overmap_z) + if(!istype(overmap_turf)) + CRASH("Attempt to get deepspace at ([x],[y]) which is not on overmap: [overmap_turf]") + var/obj/effect/overmap/visitable/sector/temporary/res = locate() in overmap_turf if(istype(res)) return res else if(cached_space.len) res = cached_space[cached_space.len] cached_space -= res - res.x = x - res.y = y + res.forceMove(overmap_turf) return res else return new /obj/effect/overmap/visitable/sector/temporary(x, y, global.using_map.get_empty_zlevel()) @@ -110,5 +112,5 @@ proc/overmap_spacetravel(var/turf/space/T, var/atom/movable/A) var/obj/effect/overmap/visitable/sector/temporary/source = M if (source.can_die()) testing("Caching [M] for future use") - source.loc = null + source.moveToNullspace() cached_space += source diff --git a/code/modules/overmap/turfs.dm b/code/modules/overmap/turfs.dm index fc9f0b16eb..bd31d6bc9a 100644 --- a/code/modules/overmap/turfs.dm +++ b/code/modules/overmap/turfs.dm @@ -19,7 +19,10 @@ var/global/list/map_sectors = list() var/turf/unsimulated/map/edge/wrap_buddy /turf/unsimulated/map/edge/Initialize() - . = ..() + ..() + return INITIALIZE_HINT_LATELOAD + +/turf/unsimulated/map/edge/LateInitialize() //This could be done by using the using_map.overmap_size much faster, HOWEVER, doing it programatically to 'find' // the edges this way allows for 'sub overmaps' elsewhere and whatnot. for(var/side in alldirs) //The order of this list is relevant: It should definitely break on finding a cardinal FIRST. diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index f247e2b2a3..f5722053eb 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -141,12 +141,11 @@ free_space -= length(strip_html_properly(new_text)) /obj/item/weapon/paper/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || istype(user, /mob/observer/dead)) show_content(usr) else - to_chat(user, "You have to go closer if you want to read it.") - return + . += "You have to go closer if you want to read it." /obj/item/weapon/paper/proc/show_content(var/mob/user, var/forceshow=0) if(!(istype(user, /mob/living/carbon/human) || istype(user, /mob/observer/dead) || istype(user, /mob/living/silicon)) && !forceshow) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 43b1a8c36d..28979b4154 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -96,11 +96,11 @@ to_chat(user, "You must hold \the [P] steady to burn \the [src].") /obj/item/weapon/paper_bundle/examine(mob/user) - if(..(user, 1)) - src.show_content(user) + . = ..() + if(Adjacent(user)) + show_content(user) else - to_chat(user, "It is too far away.") - return + . += "It is too far away." /obj/item/weapon/paper_bundle/proc/show_content(mob/user as mob) var/dat diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 65003ee71e..f7a726d60d 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -94,13 +94,12 @@ /obj/item/weapon/paper_bin/examine(mob/user) - if(get_dist(src, user) <= 1) + . = ..() + if(Adjacent(user)) if(amount) - to_chat(user, "There " + (amount > 1 ? "are [amount] papers" : "is one paper") + " in the bin.") + . += "There " + (amount > 1 ? "are [amount] papers" : "is one paper") + " in the bin." else - to_chat(user, "There are no papers in the bin.") - return - + . += "There are no papers in the bin." /obj/item/weapon/paper_bin/update_icon() if(amount < 1) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index dbfd7855ff..af51ebdf1f 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -26,6 +26,9 @@ drop_sound = 'sound/items/drop/accessory.ogg' /obj/item/weapon/pen/attack_self(var/mob/user) + if(!user.checkClickCooldown()) + return + user.setClickCooldown(1 SECOND) to_chat(user, "Click.") playsound(loc, 'sound/items/penclick.ogg', 50, 1) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index eab9984d0f..6dcadea0a6 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -26,8 +26,9 @@ RefreshParts() /obj/machinery/photocopier/examine(mob/user as mob) - if(..(user, 1)) - to_chat(user, "The screen shows there's [toner ? "[toner]" : "no"] toner left in the printer.") + . = ..() + if(Adjacent(user)) + . += "The screen shows there's [toner ? "[toner]" : "no"] toner left in the printer." /obj/machinery/photocopier/attack_ai(mob/user as mob) return attack_hand(user) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index e56063e0ba..3641f5c6f6 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -51,11 +51,12 @@ var/global/photo_count = 0 ..() /obj/item/weapon/photo/examine(mob/user) + //This is one time we're not going to call parent, because photos are 'secret' unless you're close enough. if(in_range(user, src)) show(user) - to_chat(user,desc) + return list(desc) else - to_chat(user, "It is too far away.") + return list("It is too far away to examine.") /obj/item/weapon/photo/proc/show(mob/user as mob) user << browse_rsc(img, "tmp_photo_[id].png") diff --git a/code/modules/planet/time.dm b/code/modules/planet/time.dm index d9c6642e6a..5194db91d7 100644 --- a/code/modules/planet/time.dm +++ b/code/modules/planet/time.dm @@ -11,27 +11,29 @@ /datum/time/New(new_time) if(new_time) + if(new_time >= seconds_in_day) + new_time = rollover(new_time) seconds_stored = new_time ..() /datum/time/proc/add_seconds(amount) var/answer = seconds_stored + amount * 10 if(answer >= seconds_in_day) - rollover(answer) + answer = rollover(answer) return new type(answer) /datum/time/proc/add_minutes(amount) var/real_amount = amount * seconds_in_minute var/answer = real_amount + seconds_stored if(answer >= seconds_in_day) - rollover(answer) + answer = rollover(answer) return new type(answer) /datum/time/proc/add_hours(amount) var/real_amount = amount * seconds_in_hour var/answer = real_amount + seconds_stored if(answer >= seconds_in_day) - rollover(answer) + answer = rollover(answer) return new type(answer) /datum/time/proc/rollover(time) diff --git a/code/modules/power/antimatter/fuel.dm b/code/modules/power/antimatter/fuel.dm index 4b0310f85f..e54f0eb0d7 100644 --- a/code/modules/power/antimatter/fuel.dm +++ b/code/modules/power/antimatter/fuel.dm @@ -68,8 +68,9 @@ /obj/item/weapon/fuel/examine(mob/user) - if(get_dist(src, user) <= 1) - to_chat(user, "A magnetic storage ring, it contains [fuel]kg of [content ? content : "nothing"].") + . = ..() + if(Adjacent(user)) + . += "It contains [fuel]kg of [content ? content : "nothing"]." /obj/item/weapon/fuel/proc/injest(mob/M as mob) switch(content) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index fc07078c96..92c8e7504d 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -34,10 +34,10 @@ // controls power to devices in that area // may be opened to change power cell // three different channels (lighting/equipment/environ) - may each be set to on, off, or auto -#define POWERCHAN_OFF 0 -#define POWERCHAN_OFF_AUTO 1 -#define POWERCHAN_ON 2 -#define POWERCHAN_ON_AUTO 3 +#define POWERCHAN_OFF 0 // Power channel is off and will stay that way dammit +#define POWERCHAN_OFF_AUTO 1 // Power channel is off until power rises above a threshold +#define POWERCHAN_ON 2 // Power channel is on until there is no power +#define POWERCHAN_ON_AUTO 3 // Power channel is on until power drops below a threshold //NOTE: STUFF STOLEN FROM AIRLOCK.DM thx @@ -119,6 +119,9 @@ var/global/list/status_overlays_lighting var/global/list/status_overlays_environ var/alarms_hidden = FALSE //If power alarms from this APC are visible on consoles + + var/nightshift_lights = FALSE + var/last_nightshift_switch = 0 /obj/machinery/power/apc/updateDialog() if (stat & (BROKEN|MAINT)) @@ -251,29 +254,30 @@ src.update() /obj/machinery/power/apc/examine(mob/user) - if(..(user, 1)) + . = ..() + if(Adjacent(user)) if(stat & BROKEN) - to_chat(user, "This APC is broken.") - return - if(opened) + . += "This APC is broken." + + else if(opened) if(has_electronics && terminal) - to_chat(user, "The cover is [opened==2?"removed":"open"] and [ cell ? "a power cell is installed" : "the power cell is missing"].") + . += "The cover is [opened == 2 ? "removed" : "open"] and [ cell ? "a power cell is installed" : "the power cell is missing"]." else if (!has_electronics && terminal) - to_chat(user, "The frame is wired, but the electronics are missing.") + . += "The frame is wired, but the electronics are missing." else if (has_electronics && !terminal) - to_chat(user, "The electronics are installed, but not wired.") + . += "The electronics are installed, but not wired." else /* if (!has_electronics && !terminal) */ - to_chat(user, "It's just an empty metal frame.") + . += "It's just an empty metal frame." else if (wiresexposed) - to_chat(user, "The cover is closed and the wires are exposed.") + . += "The cover is closed and the wires are exposed." else if ((locked && emagged) || hacker) //Some things can cause locked && emagged. Malf AI causes hacker. - to_chat(user, "The cover is closed, but the panel is unresponsive.") + . += "The cover is closed, but the panel is unresponsive." else if(!locked && emagged) //Normal emag does this. - to_chat(user, "The cover is closed, but the panel is flashing an error.") + . += "The cover is closed, but the panel is flashing an error." else - to_chat(user, "The cover is closed.") + . += "The cover is closed." // update the APC icon to show the three base states @@ -796,6 +800,7 @@ "coverLocked" = coverlocked, "siliconUser" = issilicon(user) || isobserver(user), //I add observer here so admins can have more control, even if it makes 'siliconUser' seem inaccurate. "emergencyLights" = !emergency_lights, + "nightshiftLights" = nightshift_lights, "powerChannels" = list( list( @@ -915,6 +920,14 @@ if(!can_use(usr, 1)) return 1 + if(href_list["nightshift"]) + if(last_nightshift_switch > world.time + 10 SECONDS) // don't spam... + to_chat(usr, "[src]'s night lighting circuit breaker is still cycling!") + return 0 + last_nightshift_switch = world.time + set_nightshift(!nightshift_lights) + return 1 + if(locked && !issilicon(usr) ) if(isobserver(usr) ) var/mob/observer/dead/O = usr //Added to allow admin nanoUI interactions. @@ -1036,10 +1049,9 @@ return 0 /obj/machinery/power/apc/process() - - if(stat & (BROKEN|MAINT)) - return if(!area.requires_power) + return PROCESS_KILL + if(stat & (BROKEN|MAINT)) return if(failure_timer) update() @@ -1048,9 +1060,9 @@ force_update = 1 return - lastused_light = area.usage(LIGHT) - lastused_equip = area.usage(EQUIP) - lastused_environ = area.usage(ENVIRON) + lastused_light = area.usage(LIGHT, lighting >= POWERCHAN_ON) + lastused_equip = area.usage(EQUIP, equipment >= POWERCHAN_ON) + lastused_environ = area.usage(ENVIRON, environ >= POWERCHAN_ON) area.clear_usage() lastused_total = lastused_light + lastused_equip + lastused_environ @@ -1254,7 +1266,7 @@ obj/machinery/power/apc/proc/autoset(var/cur_state, var/on) cell.ex_act(3) return -/obj/machinery/power/apc/disconnect_terminal() +/obj/machinery/power/apc/disconnect_terminal(var/obj/machinery/power/terminal/term) if(terminal) terminal.master = null terminal = null @@ -1365,4 +1377,13 @@ obj/machinery/power/apc/proc/autoset(var/cur_state, var/on) if(src && grid_check == TRUE) grid_check = FALSE +/obj/machinery/power/apc/proc/set_nightshift(on, var/automated) + set waitfor = FALSE + if(automated && istype(area, /area/shuttle)) + return + nightshift_lights = on + for(var/obj/machinery/light/L in area) + L.nightshift_mode(on) + CHECK_TICK + #undef APC_UPDATE_ICON_COOLDOWN diff --git a/code/modules/power/batteryrack.dm b/code/modules/power/batteryrack.dm index d897bb827a..d6fe46fa2b 100644 --- a/code/modules/power/batteryrack.dm +++ b/code/modules/power/batteryrack.dm @@ -1,234 +1,313 @@ -//The one that works safely. +// Cell rack PSU, similar to SMES, but uses power cells to store power. +// Lacks detailed control of input/output values, and has generally much worse capacity. +#define PSU_OFFLINE 0 +#define PSU_OUTPUT 1 +#define PSU_INPUT 2 +#define PSU_AUTO 3 + +#define PSU_MAXCELLS 9 // Capped to 9 cells due to sprite limitation + /obj/machinery/power/smes/batteryrack name = "power cell rack PSU" desc = "A rack of power cells working as a PSU." - charge = 0 //you dont really want to make a potato PSU which already is overloaded - output_attempt = 0 - input_level = 0 - output_level = 0 - input_level_max = 0 - output_level_max = 0 - icon_state = "gsmes" - circuit = /obj/item/weapon/circuitboard/batteryrack - var/cells_amount = 0 - var/capacitors_amount = 0 - var/global/list/br_cache = null + icon = 'icons/obj/cellrack.dmi' + icon_state = "rack" + capacity = 0 + charge = 0 + output_attempt = FALSE + input_attempt = FALSE + + var/max_transfer_rate = 0 // Maximal input/output rate. Determined by used capacitors when building the device. + var/mode = PSU_OFFLINE // Current inputting/outputting mode + var/list/internal_cells = list() // Cells stored in this PSU + var/max_cells = 3 // Maximal amount of stored cells at once. Capped at 9. + var/previous_charge = 0 // Charge previous tick. + var/equalise = 0 // If true try to equalise charge between cells + var/icon_update = 0 // Timer in ticks for icon update. + var/ui_tick = 0 + /obj/machinery/power/smes/batteryrack/New() ..() + add_parts() RefreshParts() - return -//Maybe this should be moved up to obj/machinery /obj/machinery/power/smes/batteryrack/proc/add_parts() component_parts = list() - component_parts += new /obj/item/weapon/cell/high - component_parts += new /obj/item/weapon/cell/high - component_parts += new /obj/item/weapon/cell/high - return + component_parts += new /obj/item/weapon/circuitboard/batteryrack + component_parts += new /obj/item/weapon/stock_parts/capacitor/ // Capacitors: Maximal I/O + component_parts += new /obj/item/weapon/stock_parts/capacitor/ + component_parts += new /obj/item/weapon/stock_parts/capacitor/ + component_parts += new /obj/item/weapon/stock_parts/matter_bin/ // Matter Bin: Max. amount of cells. /obj/machinery/power/smes/batteryrack/RefreshParts() - capacitors_amount = 0 - cells_amount = 0 - var/max_level = 0 //for both input and output + var/capacitor_efficiency = 0 + var/maxcells = 0 for(var/obj/item/weapon/stock_parts/capacitor/CP in component_parts) - max_level += CP.rating - capacitors_amount++ - input_level_max = 50000 + max_level * 20000 - output_level_max = 50000 + max_level * 20000 + capacitor_efficiency += CP.rating - var/C = 0 - for(var/obj/item/weapon/cell/PC in component_parts) - C += PC.maxcharge - cells_amount++ - capacity = C * 40 //Basic cells are such crap. Hyper cells needed to get on normal SMES levels. + for(var/obj/item/weapon/stock_parts/matter_bin/MB in component_parts) + maxcells += MB.rating * 3 + max_transfer_rate = 10000 * capacitor_efficiency // 30kw - 90kw depending on used capacitors. + max_cells = min(PSU_MAXCELLS, maxcells) + input_level = max_transfer_rate + output_level = max_transfer_rate + +/obj/machinery/power/smes/batteryrack/Destroy() + for(var/obj/item/weapon/cell/C in internal_cells) + qdel(C) + internal_cells = null + return ..() /obj/machinery/power/smes/batteryrack/update_icon() overlays.Cut() - if(stat & BROKEN) return + icon_update = 0 - if(!br_cache) - br_cache = list() - br_cache.len = 7 - br_cache[1] = image('icons/obj/power.dmi', "gsmes_outputting") - br_cache[2] = image('icons/obj/power.dmi', "gsmes_charging") - br_cache[3] = image('icons/obj/power.dmi', "gsmes_overcharge") - br_cache[4] = image('icons/obj/power.dmi', "gsmes_og1") - br_cache[5] = image('icons/obj/power.dmi', "gsmes_og2") - br_cache[6] = image('icons/obj/power.dmi', "gsmes_og3") - br_cache[7] = image('icons/obj/power.dmi', "gsmes_og4") - - if (output_attempt) - overlays += br_cache[1] - if(inputting) - overlays += br_cache[2] - - var/clevel = chargedisplay() - if(clevel>0) - overlays += br_cache[3+clevel] - return + var/cellcount = 0 + var/charge_level = between(0, round(Percentage() / 12), 7) -/obj/machinery/power/smes/batteryrack/chargedisplay() - return round(4 * charge/(capacity ? capacity : 5e6)) + overlays += "charge[charge_level]" + + for(var/obj/item/weapon/cell/C in internal_cells) + cellcount++ + overlays += "cell[cellcount]" + if(C.fully_charged()) + overlays += "cell[cellcount]f" + else if(!C.charge) + overlays += "cell[cellcount]e" + +// Recalculate maxcharge and similar variables. +/obj/machinery/power/smes/batteryrack/proc/update_maxcharge() + var/newmaxcharge = 0 + for(var/obj/item/weapon/cell/C in internal_cells) + newmaxcharge += C.maxcharge + + newmaxcharge /= CELLRATE // Convert to Joules + newmaxcharge *= SMESRATE // And to SMES charge units (which are for some reason different than CELLRATE) + capacity = newmaxcharge + charge = between(0, charge, newmaxcharge) -/obj/machinery/power/smes/batteryrack/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) //these can only be moved by being reconstructed, solves having to remake the powernet. - ..() //SMES attackby for now handles screwdriver, cable coils and wirecutters, no need to repeat that here - if(open_hatch) - if(W.is_crowbar()) - if (charge < (capacity / 100)) - if (!output_attempt && !input_attempt) - playsound(src, W.usesound, 50, 1) - var/obj/structure/frame/M = new /obj/structure/frame(src.loc) - M.frame_type = "machine" - M.state = 2 - M.icon_state = "machine_1" - for(var/obj/I in component_parts) - I.loc = src.loc - qdel(src) - return 1 - else - to_chat(user, "Turn off the [src] before dismantling it.") - else - to_chat(user, "Better let [src] discharge before dismantling it.") - else if ((istype(W, /obj/item/weapon/stock_parts/capacitor) && (capacitors_amount < 5)) || (istype(W, /obj/item/weapon/cell) && (cells_amount < 5))) - if (charge < (capacity / 100)) - if (!output_attempt && !input_attempt) - user.drop_item() - component_parts += W - W.loc = src - RefreshParts() - to_chat(user, "You upgrade the [src] with [W.name].") - else - to_chat(user, "Turn off the [src] before dismantling it.") - else - to_chat(user, "Better let [src] discharge before putting your hand inside it.") - else - user.set_machine(src) - interact(user) - return 1 - return +// Sets input/output depending on our "mode" var. +/obj/machinery/power/smes/batteryrack/proc/update_io(var/newmode) + mode = newmode + switch(mode) + if(PSU_OFFLINE) + input_attempt = 0 + output_attempt = 0 + if(PSU_INPUT) + input_attempt = 1 + output_attempt = 0 + if(PSU_OUTPUT) + input_attempt = 0 + output_attempt = 1 + if(PSU_AUTO) + input_attempt = 1 + output_attempt = 1 + +// Store charge in the power cells, instead of using the charge var. Amount is in joules. +/obj/machinery/power/smes/batteryrack/add_charge(var/amount) + amount *= CELLRATE // Convert to CELLRATE first. + if(equalise) + // Now try to get least charged cell and use the power from it. + var/obj/item/weapon/cell/CL = get_least_charged_cell() + amount -= CL.give(amount) + if(!amount) + return + // We're still here, so it means the least charged cell was full OR we don't care about equalising the charge. Give power to other cells instead. + for(var/obj/item/weapon/cell/C in internal_cells) + amount -= C.give(amount) + // No more power to input so return. + if(!amount) + return -//The shitty one that will blow up. -/obj/machinery/power/smes/batteryrack/makeshift - name = "makeshift PSU" - desc = "A rack of batteries connected by a mess of wires posing as a PSU." - circuit = /obj/item/weapon/circuitboard/ghettosmes - var/overcharge_percent = 0 +/obj/machinery/power/smes/batteryrack/remove_charge(var/amount) + amount *= CELLRATE // Convert to CELLRATE first. + if(equalise) + // Now try to get most charged cell and use the power from it. + var/obj/item/weapon/cell/CL = get_most_charged_cell() + amount -= CL.use(amount) + if(!amount) + return + // We're still here, so it means the most charged cell didn't have enough power OR we don't care about equalising the charge. Use power from other cells instead. + for(var/obj/item/weapon/cell/C in internal_cells) + amount -= C.use(amount) + // No more power to output so return. + if(!amount) + return + +// Helper procs to get most/least charged cells. +/obj/machinery/power/smes/batteryrack/proc/get_most_charged_cell() + var/obj/item/weapon/cell/CL = null + for(var/obj/item/weapon/cell/C in internal_cells) + if(CL == null) + CL = C + else if(CL.percent() < C.percent()) + CL = C + return CL +/obj/machinery/power/smes/batteryrack/proc/get_least_charged_cell() + var/obj/item/weapon/cell/CL = null + for(var/obj/item/weapon/cell/C in internal_cells) + if(CL == null) + CL = C + else if(CL.percent() > C.percent()) + CL = C + return CL + +/obj/machinery/power/smes/batteryrack/proc/insert_cell(var/obj/item/weapon/cell/C, var/mob/user) + if(!istype(C)) + return 0 + + if(internal_cells.len >= max_cells) + return 0 + + internal_cells.Add(C) + if(user) + user.drop_from_inventory(C) + C.forceMove(src) + RefreshParts() + update_maxcharge() + update_icon() + return 1 -/obj/machinery/power/smes/batteryrack/makeshift/add_parts() - component_parts = list() - component_parts += new /obj/item/weapon/cell/high - component_parts += new /obj/item/weapon/cell/high - component_parts += new /obj/item/weapon/cell/high - return +/obj/machinery/power/smes/batteryrack/process() + charge = 0 + for(var/obj/item/weapon/cell/C in internal_cells) + charge += C.charge + charge /= CELLRATE // Convert to Joules + charge *= SMESRATE // And to SMES charge units (which are for some reason different than CELLRATE) -/obj/machinery/power/smes/batteryrack/makeshift/update_icon() - overlays.Cut() - if(stat & BROKEN) return + ..() + ui_tick = !ui_tick + icon_update++ - if (output_attempt) - overlays += br_cache[1] - if(inputting) - overlays += br_cache[2] - if (overcharge_percent > 100) - overlays += br_cache[3] - else - var/clevel = chargedisplay() - if(clevel>0) - overlays += br_cache[3+clevel] - return - -//This mess of if-elses and magic numbers handles what happens if the engies don't pay attention and let it eat too much charge -//What happens depends on how much capacity has the ghetto smes and how much it is overcharged. -//Under 1.2M: 5% of ion_act() per process() tick from 125% and higher overcharges. 1.2M is achieved with 3 high cells. -//[1.2M-2.4M]: 6% ion_act from 120%. 1% of EMP from 140%. -//(2.4M-3.6M] :7% ion_act from 115%. 1% of EMP from 130%. 1% of non-hull-breaching explosion at 150%. -//(3.6M-INFI): 8% ion_act from 115%. 2% of EMP from 125%. 1% of Hull-breaching explosion from 140%. -/obj/machinery/power/smes/batteryrack/makeshift/proc/overcharge_consequences() - switch (capacity) - if (0 to (1.2e6-1)) - if (overcharge_percent >= 125) - if (prob(5)) - ion_act() - if (1.2e6 to 2.4e6) - if (overcharge_percent >= 120) - if (prob(6)) - ion_act() - else - return - if (overcharge_percent >= 140) - if (prob(1)) - empulse(src.loc, 2, 3, 6, 8, 1) - if ((2.4e6+1) to 3.6e6) - if (overcharge_percent >= 115) - if (prob(7)) - ion_act() - else - return - if (overcharge_percent >= 130) - if (prob(1)) - empulse(src.loc, 2, 3, 6, 8, 1) - if (overcharge_percent >= 150) - if (prob(1)) - explosion(src.loc, 0, 1, 3, 5) - if ((3.6e6+1) to INFINITY) - if (overcharge_percent >= 115) - if (prob(8)) - ion_act() - else - return - if (overcharge_percent >= 125) - if (prob(2)) - empulse(src.loc, 2, 4, 7, 10, 1) - if (overcharge_percent >= 140) - if (prob(1)) - explosion(src.loc, 1, 3, 5, 8) - else //how the hell was this proc called for negative charge - charge = 0 - - -#define SMESRATE 0.05 // rate of internal charge to external power -/obj/machinery/power/smes/batteryrack/makeshift/process() - if(stat & BROKEN) return - - //store machine state to see if we need to update the icon overlays - var/last_disp = chargedisplay() - var/last_chrg = inputting - var/last_onln = output_attempt - var/last_overcharge = overcharge_percent - - if(terminal) - if(input_attempt) - var/target_load = min((capacity-charge)/SMESRATE, input_level) // charge at set rate, limited to spare capacity - var/actual_load = draw_power(target_load) // add the load to the terminal side network - charge += actual_load * SMESRATE // increase the charge - - if (actual_load >= target_load) // did the powernet have enough power available for us? - inputting = 1 - else - inputting = 0 - - if(output_attempt) // if outputting - output_used = min( charge/SMESRATE, output_level) //limit output to that stored - charge -= output_used*SMESRATE // reduce the storage (may be recovered in /restore() if excessive) - add_avail(output_used) // add output to powernet (smes side) - if(charge < 0.0001) - outputting(0) // stop output if charge falls to zero - - overcharge_percent = round((charge / capacity) * 100) - if (overcharge_percent > 115) //115% is the minimum overcharge for anything to happen - overcharge_consequences() - - // only update icon if state changed - if(last_disp != chargedisplay() || last_chrg != inputting || last_onln != output_attempt || ((overcharge_percent > 100) ^ (last_overcharge > 100))) + // Don't update icon too much, prevents unnecessary processing. + if(icon_update >= 10) update_icon() + // Try to balance charge between stored cells. Capped at max_transfer_rate per tick. + // Take power from most charged cell, and give it to least charged cell. + if(equalise) + var/obj/item/weapon/cell/least = get_least_charged_cell() + var/obj/item/weapon/cell/most = get_most_charged_cell() + // Don't bother equalising charge between two same cells. Also ensure we don't get NULLs or wrong types. Don't bother equalising when difference between charges is tiny. + if(least == most || !istype(least) || !istype(most) || least.percent() == most.percent()) + return + var/percentdiff = (most.percent() - least.percent()) / 2 // Transfer only 50% of power. The reason is that it could lead to situations where least and most charged cells would "swap places" (45->50% and 50%->45%) + var/celldiff + // Take amount of power to transfer from the cell with smaller maxcharge + if(most.maxcharge > least.maxcharge) + celldiff = (least.maxcharge / 100) * percentdiff + else + celldiff = (most.maxcharge / 100) * percentdiff + celldiff = between(0, celldiff, max_transfer_rate * CELLRATE) + // Ensure we don't transfer more energy than the most charged cell has, and that the least charged cell can input. + celldiff = min(min(celldiff, most.charge), least.maxcharge - least.charge) + least.give(most.use(celldiff)) + +/obj/machinery/power/smes/batteryrack/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] + + data["mode"] = mode + data["transfer_max"] = max_transfer_rate + data["output_load"] = round(output_used) + data["input_load"] = round(input_available) + data["equalise"] = equalise + data["blink_tick"] = ui_tick + data["cells_max"] = max_cells + data["cells_cur"] = internal_cells.len + var/list/cells = list() + var/cell_index = 0 + for(var/obj/item/weapon/cell/C in internal_cells) + var/list/cell[0] + cell["slot"] = cell_index + 1 + cell["used"] = 1 + cell["percentage"] = round(C.percent(), 0.01) + cell["id"] = C.c_uid + cell_index++ + cells += list(cell) + while(cell_index < PSU_MAXCELLS) + var/list/cell[0] + cell["slot"] = cell_index + 1 + cell["used"] = 0 + cell_index++ + cells += list(cell) + data["cells_list"] = cells + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "psu.tmpl", "Cell Rack PSU", 500, 430) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/power/smes/batteryrack/dismantle() + for(var/obj/item/weapon/cell/C in internal_cells) + C.forceMove(get_turf(src)) + internal_cells -= C + return ..() + +/obj/machinery/power/smes/batteryrack/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) + if(!..()) + return 0 + if(default_deconstruction_crowbar(user, W)) + return + if(default_part_replacement(user, W)) + return + if(istype(W, /obj/item/weapon/cell)) // ID Card, try to insert it. + if(insert_cell(W, user)) + to_chat(user, "You insert \the [W] into \the [src].") + else + to_chat(user, "\The [src] has no empty slot for \the [W]") + +/obj/machinery/power/smes/batteryrack/attack_hand(var/mob/user) + ui_interact(user) + +/obj/machinery/power/smes/batteryrack/inputting() return -#undef SMESRATE +/obj/machinery/power/smes/batteryrack/outputting() + return + +/obj/machinery/power/smes/batteryrack/Topic(href, href_list) + // ..() would respond to those topic calls, but we don't want to use them at all. + // Calls to these shouldn't occur anyway, due to usage of different nanoUI, but + // it's here in case someone decides to try hrefhacking/modified templates. + if(href_list["input"] || href_list["output"]) + return 1 + + if(..()) + return 1 + if( href_list["disable"] ) + update_io(0) + return 1 + else if( href_list["enable"] ) + update_io(between(1, text2num(href_list["enable"]), 3)) + return 1 + else if( href_list["equaliseon"] ) + equalise = 1 + return 1 + else if( href_list["equaliseoff"] ) + equalise = 0 + return 1 + else if( href_list["ejectcell"] ) + var/obj/item/weapon/cell/C + for(var/obj/item/weapon/cell/CL in internal_cells) + if(CL.c_uid == text2num(href_list["ejectcell"])) + C = CL + break + + if(!istype(C)) + return 1 + + C.forceMove(get_turf(src)) + internal_cells -= C + update_icon() + RefreshParts() + update_maxcharge() + return 1 \ No newline at end of file diff --git a/code/modules/power/breaker_box.dm b/code/modules/power/breaker_box.dm index cf38607a56..dc7cd0c519 100644 --- a/code/modules/power/breaker_box.dm +++ b/code/modules/power/breaker_box.dm @@ -6,6 +6,7 @@ /obj/machinery/power/breakerbox name = "Breaker Box" + desc = "Large machine with heavy duty switching circuits used for advanced grid control." icon = 'icons/obj/power.dmi' icon_state = "bbox_off" //directwired = 0 @@ -40,11 +41,11 @@ set_state(1) /obj/machinery/power/breakerbox/examine(mob/user) - to_chat(user, "Large machine with heavy duty switching circuits used for advanced grid control") + . = ..() if(on) - to_chat(user, "It seems to be online.") + . += "It seems to be online." else - to_chat(user, "It seems to be offline.") + . += "It seems to be offline." /obj/machinery/power/breakerbox/attack_ai(mob/user) if(update_locked) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index ab535081b6..1ab2d6a5ea 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -116,7 +116,7 @@ var/list/possible_cable_coil_colours = list( user.examinate(src) // following code taken from attackby (multitool) if(powernet && (powernet.avail > 0)) - to_chat(user, "[powernet.avail]W in power network.") + to_chat(user, "[DisplayPower(powernet.avail)] in power network.") else to_chat(user, "The cable is not powered.") return @@ -230,7 +230,7 @@ var/list/possible_cable_coil_colours = list( else if(istype(W, /obj/item/device/multitool)) if(powernet && (powernet.avail > 0)) // is it powered? - to_chat(user, "[powernet.avail]W in power network.") + to_chat(user, "[DisplayPower(powernet.avail)] in power network.") else to_chat(user, "The cable is not powered.") @@ -556,6 +556,11 @@ obj/structure/cable/proc/cableColor(var/colorC) if(!S || S.robotic < ORGAN_ROBOT || S.open == 3) return ..() + //VOREStation Add - No welding nanoform limbs + if(S.robotic > ORGAN_LIFELIKE) + return ..() + //VOREStation Add End + if(S.organ_tag == BP_HEAD) if(H.head && istype(H.head,/obj/item/clothing/head/helmet/space)) to_chat(user, "You can't apply [src] through [H.head]!") @@ -604,20 +609,20 @@ obj/structure/cable/proc/cableColor(var/colorC) w_class = ITEMSIZE_SMALL /obj/item/stack/cable_coil/examine(mob/user) - var/msg = "" - + . = ..() if(get_amount() == 1) - msg += "A short piece of power cable." + . += "Just a short piece remains." else if(get_amount() == 2) - msg += "A piece of power cable." - else - msg += "A coil of power cable." - - if(get_dist(src, user) <= 1) - msg += " There are [get_amount()] lengths of cable in the coil." - - to_chat(user, msg) + . += "Just a couple of short pieces remain." + else if(Adjacent(user)) + . += "There are [get_amount()] lengths of cable in the coil." +/obj/item/stack/cable_coil/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/device/multitool)) + var/selected_type = input("Pick new colour.", "Cable Colour", null, null) as null|anything in possible_cable_coil_colours + set_cable_color(selected_type, usr) + return + return ..() /obj/item/stack/cable_coil/verb/make_restraint() set name = "Make Cable Restraints" @@ -987,12 +992,10 @@ obj/structure/cable/proc/cableColor(var/colorC) return 0 /obj/item/stack/cable_coil/alien/examine(mob/user) - var/msg = "A spool of cable." + . = ..() - if(get_dist(src, user) <= 1) - msg += " It doesn't seem to have a beginning, or an end." - - to_chat(user, msg) + if(Adjacent(user)) + . += "It doesn't seem to have a beginning, or an end." /obj/item/stack/cable_coil/alien/attack_hand(mob/user as mob) if (user.get_inactive_hand() == src) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 79f232f508..ecfbf00a5f 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -14,6 +14,8 @@ throw_speed = 3 throw_range = 5 w_class = ITEMSIZE_NORMAL + var/static/cell_uid = 1 // Unique ID of this power cell. Used to reduce bunch of uglier code in nanoUI. + var/c_uid var/charge = 0 // note %age conveted to actual charge in New var/maxcharge = 1000 var/rigged = 0 // true if rigged to explode @@ -31,6 +33,7 @@ /obj/item/weapon/cell/New() ..() + c_uid = cell_uid++ charge = maxcharge update_icon() if(self_recharge) @@ -145,10 +148,10 @@ /obj/item/weapon/cell/examine(mob/user) - ..() - if(get_dist(src, user) <= 1) - to_chat(user, " It has a power rating of [maxcharge].\nThe charge meter reads [round(src.percent() )]%.") - return + . = ..() + if(Adjacent(user)) + . += "It has a power rating of [maxcharge]." + . += "The charge meter reads [round(src.percent() )]%." /obj/item/weapon/cell/attackby(obj/item/W, mob/user) ..() diff --git a/code/modules/power/cells/device_cells_vr.dm b/code/modules/power/cells/device_cells_vr.dm new file mode 100644 index 0000000000..41291ab0c4 --- /dev/null +++ b/code/modules/power/cells/device_cells_vr.dm @@ -0,0 +1,55 @@ + +//The device cell +/obj/item/weapon/cell/device/weapon/recharge/alien + name = "void cell (device)" + var/swaps_to = /obj/item/weapon/cell/void + +/obj/item/weapon/cell/device/weapon/recharge/alien/attack_self(var/mob/user) + user.remove_from_mob(src) + to_chat(user, "You swap [src] to 'machinery cell' mode.") + var/obj/item/weapon/cell/newcell = new swaps_to(null) + user.put_in_active_hand(newcell) + var/percentage = charge/maxcharge + newcell.charge = newcell.maxcharge * percentage + qdel(src) + +/obj/item/weapon/cell/device/weapon/recharge/alien/update_icon() + return + + +//The machine cell +/obj/item/weapon/cell/void + name = "void cell (machinery)" + desc = "An alien technology that produces energy seemingly out of nowhere. Its small, cylinderal shape means it might be able to be used with human technology, perhaps?" + origin_tech = list(TECH_POWER = 8, TECH_ENGINEERING = 6) + icon = 'icons/obj/abductor.dmi' + icon_state = "cell" + maxcharge = 4800 //10x the device version + charge_amount = 1200 //10x the device version + self_recharge = TRUE + charge_delay = 50 + matter = null + var/swaps_to = /obj/item/weapon/cell/device/weapon/recharge/alien + +/obj/item/weapon/cell/void/attack_self(var/mob/user) + user.remove_from_mob(src) + to_chat(user, "You swap [src] to 'device cell' mode.") + var/obj/item/weapon/cell/newcell = new swaps_to(null) + user.put_in_active_hand(newcell) + var/percentage = charge/maxcharge + newcell.charge = newcell.maxcharge * percentage + qdel(src) + +/obj/item/weapon/cell/void/update_icon() + return + +// Bloo friendlier hybrid tech +/obj/item/weapon/cell/device/weapon/recharge/alien/hybrid + icon = 'icons/obj/power_vr.dmi' + icon_state = "cellb" + swaps_to = /obj/item/weapon/cell/void/hybrid + +/obj/item/weapon/cell/void/hybrid + icon = 'icons/obj/power_vr.dmi' + icon_state = "cellb" + swaps_to = /obj/item/weapon/cell/device/weapon/recharge/alien/hybrid diff --git a/code/modules/power/cells/power_cells.dm b/code/modules/power/cells/power_cells.dm index 3638c625f1..ca6f96ec9b 100644 --- a/code/modules/power/cells/power_cells.dm +++ b/code/modules/power/cells/power_cells.dm @@ -130,7 +130,7 @@ used = TRUE desc += " This one has already been used." overlays.Cut() - target.nutrition += amount + target.adjust_nutrition(amount) user.custom_emote(message = "connects \the [src] to [user == target ? "their" : "[target]'s"] charging port, expending it.") /obj/item/weapon/cell/emergency_light diff --git a/code/modules/power/debug_items.dm b/code/modules/power/debug_items.dm new file mode 100644 index 0000000000..6fee9cce22 --- /dev/null +++ b/code/modules/power/debug_items.dm @@ -0,0 +1,65 @@ +/obj/machinery/power/debug_items/ + icon = 'icons/obj/power.dmi' + icon_state = "tracker" + anchored = 1 + density = 1 + var/show_extended_information = 1 // Set to 0 to disable extra information on examining (for example, when used on admin events) + +/obj/machinery/power/debug_items/examine(mob/user) + . = ..() + if(show_extended_information) + show_info(user) + +/obj/machinery/power/debug_items/proc/show_info(var/mob/user) + if(!powernet) + to_chat(user, "This device is not connected to a powernet") + return + + to_chat(user, "Connected to powernet: [powernet]") + to_chat(user, "Available power: [num2text(powernet.avail, 20)] W") + to_chat(user, "Load: [num2text(powernet.viewload, 20)] W") + to_chat(user, "Has alert: [powernet.problem ? "YES" : "NO"]") + to_chat(user, "Cables: [powernet.cables.len]") + to_chat(user, "Nodes: [powernet.nodes.len]") + + +// An infinite power generator. Adds energy to connected cable. +/obj/machinery/power/debug_items/infinite_generator + name = "fractal energy reactor" + desc = "An experimental power generator capable of generating massive amounts of energy from subspace vacuum." + var/power_generation_rate = 1000000 + +/obj/machinery/power/debug_items/infinite_generator/process() + add_avail(power_generation_rate) + +/obj/machinery/power/debug_items/infinite_generator/show_info(var/mob/user) + ..() + to_chat(user, "Generator is providing [num2text(power_generation_rate, 20)] W") + + +// A cable powersink, without the explosion/network alarms normal powersink causes. +/obj/machinery/power/debug_items/infinite_cable_powersink + name = "null point core" + desc = "An experimental device that disperses energy, used for grid stress-testing purposes." + var/power_usage_rate = 0 + var/last_used = 0 + +/obj/machinery/power/debug_items/infinite_cable_powersink/process() + last_used = draw_power(power_usage_rate) + +/obj/machinery/power/debug_items/infinite_cable_powersink/show_info(var/mob/user) + ..() + to_chat(user, "Power sink is demanding [num2text(power_usage_rate, 20)] W") + to_chat(user, "[num2text(last_used, 20)] W was actually used last tick") + + +/obj/machinery/power/debug_items/infinite_apc_powersink + name = "APC dummy load" + desc = "A dummy load that connects to an APC, used for load testing purposes." + use_power = USE_POWER_ACTIVE + active_power_usage = 0 + +/obj/machinery/power/debug_items/infinite_apc_powersink/show_info(var/mob/user) + ..() + to_chat(user, "Dummy load is using [num2text(active_power_usage, 20)] W") + to_chat(user, "Powered: [powered() ? "YES" : "NO"]") \ No newline at end of file diff --git a/code/modules/power/fractal_reactor.dm b/code/modules/power/fractal_reactor.dm deleted file mode 100644 index 59b6196d30..0000000000 --- a/code/modules/power/fractal_reactor.dm +++ /dev/null @@ -1,29 +0,0 @@ -// ############################################################################### -// # ITEM: FRACTAL ENERGY REACTOR # -// # FUNCTION: Generate infinite electricity. Used for map testing. # -// ############################################################################### - -/obj/machinery/power/fractal_reactor - name = "Fractal Energy Reactor" - desc = "This thing drains power from fractal-subspace." // (DEBUG ITEM: INFINITE POWERSOURCE FOR MAP TESTING. CONTACT DEVELOPERS IF FOUND.)" - icon = 'icons/obj/power.dmi' - icon_state = "tracker" //ICON stolen from solar tracker. There is no need to make new texture for debug item - anchored = 1 - density = 1 - var/power_generation_rate = 1000000 //Defaults to 1MW of power. - var/powernet_connection_failed = 0 - var/mapped_in = 0 //Do not announce creation when it's mapped in. - - // This should be only used on Dev for testing purposes. -/obj/machinery/power/fractal_reactor/New() - ..() - if(!mapped_in) - to_world("WARNING: Map testing power source activated at: X:[src.loc.x] Y:[src.loc.y] Z:[src.loc.z]") - -/obj/machinery/power/fractal_reactor/process() - if(!powernet && !powernet_connection_failed) - if(!connect_to_network()) - powernet_connection_failed = 1 - spawn(150) // Error! Check again in 15 seconds. - powernet_connection_failed = 0 - add_avail(power_generation_rate) \ No newline at end of file diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm index 9cc907e052..ebe3bbb744 100644 --- a/code/modules/power/fusion/core/_core.dm +++ b/code/modules/power/fusion/core/_core.dm @@ -60,7 +60,7 @@ var/list/fusion_cores = list() if(href_list["str"]) var/dif = text2num(href_list["str"]) field_strength = min(max(field_strength + dif, MIN_FIELD_STR), MAX_FIELD_STR) - active_power_usage = 500 * field_strength + update_active_power_usage(500 * field_strength) if(owned_field) owned_field.ChangeFieldStrength(field_strength) @@ -96,7 +96,7 @@ var/list/fusion_cores = list() /obj/machinery/power/fusion_core/proc/set_strength(var/value) value = CLAMP(value, MIN_FIELD_STR, MAX_FIELD_STR) field_strength = value - active_power_usage = 5 * value + update_active_power_usage(5 * value) if(owned_field) owned_field.ChangeFieldStrength(value) diff --git a/code/modules/power/fusion/gyrotron/gyrotron.dm b/code/modules/power/fusion/gyrotron/gyrotron.dm index bdbdf9a3df..0675bd90bb 100644 --- a/code/modules/power/fusion/gyrotron/gyrotron.dm +++ b/code/modules/power/fusion/gyrotron/gyrotron.dm @@ -22,7 +22,7 @@ var/list/gyrotrons = list() /obj/machinery/power/emitter/gyrotron/Initialize() gyrotrons += src - active_power_usage = mega_energy * 50000 + update_active_power_usage(mega_energy * 50000) default_apply_parts() . = ..() @@ -31,7 +31,7 @@ var/list/gyrotrons = list() return ..() /obj/machinery/power/emitter/gyrotron/process() - active_power_usage = mega_energy * 50000 + update_active_power_usage(mega_energy * 50000) . = ..() /obj/machinery/power/emitter/gyrotron/get_rand_burst_delay() diff --git a/code/modules/power/fusion/gyrotron/gyrotron_control.dm b/code/modules/power/fusion/gyrotron/gyrotron_control.dm index e638eee3e3..fd0674e409 100644 --- a/code/modules/power/fusion/gyrotron/gyrotron_control.dm +++ b/code/modules/power/fusion/gyrotron/gyrotron_control.dm @@ -75,7 +75,7 @@ to_chat(usr, "That's not a valid number.") return 1 G.mega_energy = CLAMP(new_val, 1, 50) - G.active_power_usage = G.mega_energy * 1500 + G.update_active_power_usage(G.mega_energy * 1500) updateUsrDialog() return 1 diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index d9186b548f..19ba3b8065 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -181,6 +181,9 @@ GLOBAL_LIST_EMPTY(all_turbines) else disconnect_from_network() reconnect() + lastgenlev = 0 + effective_gen = 0 + updateicon() else ..() diff --git a/code/modules/power/gravitygenerator_vr.dm b/code/modules/power/gravitygenerator_vr.dm new file mode 100644 index 0000000000..9f5dd799f4 --- /dev/null +++ b/code/modules/power/gravitygenerator_vr.dm @@ -0,0 +1,462 @@ + +GLOBAL_LIST_EMPTY(gravity_generators) + +// +// Gravity Generator +// + +#define POWER_IDLE 0 +#define POWER_UP 1 +#define POWER_DOWN 2 + +#define GRAV_NEEDS_SCREWDRIVER 0 +#define GRAV_NEEDS_WELDING 1 +#define GRAV_NEEDS_PLASTEEL 2 +#define GRAV_NEEDS_WRENCH 3 + +// +// Abstract Generator +// + +/obj/machinery/gravity_generator + name = "gravitational generator" + desc = "A device which produces a graviton field when set up." + icon = 'icons/obj/machines/gravity_generator.dmi' + anchored = TRUE + density = TRUE + use_power = USE_POWER_OFF + var/sprite_number = 0 + + pixel_y = 16 + +/obj/machinery/gravity_generator/ex_act(severity, target) + if(severity == 1) // Very sturdy. + set_broken() + +/obj/machinery/gravity_generator/blob_act(obj/structure/blob/B) + if(prob(20)) + set_broken() + +/obj/machinery/gravity_generator/tesla_act(power, tesla_flags) + ..() + qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over + +/obj/machinery/gravity_generator/update_icon() + icon_state = "[get_status()]_[sprite_number]" + +/obj/machinery/gravity_generator/proc/get_status() + return "off" + +// You aren't allowed to move. +/obj/machinery/gravity_generator/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + qdel(src) + +/obj/machinery/gravity_generator/proc/set_broken() + stat |= BROKEN + +/obj/machinery/gravity_generator/proc/set_fix() + stat &= ~BROKEN + +/obj/machinery/gravity_generator/part/Destroy() + if(main_part) + qdel(main_part) + set_broken() + return ..() + +// +// Part generator which is mostly there for looks +// + +/obj/machinery/gravity_generator/part + var/obj/machinery/gravity_generator/main/main_part = null + +/obj/machinery/gravity_generator/part/attackby(obj/item/I, mob/user, params) + return main_part.attackby(I, user) + +/obj/machinery/gravity_generator/part/get_status() + return main_part?.get_status() + +/obj/machinery/gravity_generator/part/attack_hand(mob/user) + return main_part.attack_hand(user) + +/obj/machinery/gravity_generator/part/set_broken() + ..() + if(main_part && !(main_part.stat & BROKEN)) + main_part.set_broken() + +// +// Generator which spawns with the station. +// +/obj/machinery/gravity_generator/main/station + use_power = USE_POWER_ACTIVE + current_overlay = "activated" + +/obj/machinery/gravity_generator/main/station/Initialize() + . = ..() + setup_parts() + middle.add_overlay("activated") + +// +// Generator an admin can spawn +// +/obj/machinery/gravity_generator/main/station/admin + use_power = USE_POWER_OFF + +// +// Main Generator with the main code +// + +/obj/machinery/gravity_generator/main + icon_state = "on_8" + idle_power_usage = 0 + active_power_usage = 3000 + power_channel = ENVIRON + sprite_number = 8 + use_power = USE_POWER_IDLE + + var/on = TRUE + var/breaker = TRUE + var/list/parts = list() + var/obj/middle = null + var/charging_state = POWER_IDLE + var/charge_count = 100 + var/current_overlay = null + var/broken_state = 0 + var/list/levels = list() + var/list/areas = list() + +/obj/machinery/gravity_generator/main/Initialize() + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/gravity_generator/main/LateInitialize() //Needs to happen after overmap sectors are initialized so we can figure out where we are + update_list() + update_areas() + return ..() + +/obj/machinery/gravity_generator/main/set_fix() + . = ..() + update_list() + update_areas() + +/obj/machinery/gravity_generator/main/Destroy() // If we somehow get deleted, remove all of our other parts. + investigate_log("was destroyed!", "gravity") + on = FALSE + update_list() + if(!gravity_in_level()) + update_gravity(FALSE) + for(var/obj/machinery/gravity_generator/part/O in parts) + O.main_part = null + if(!QDESTROYING(O)) + qdel(O) + return ..() + +/obj/machinery/gravity_generator/main/proc/setup_parts() + var/turf/our_turf = get_turf(src) + // 9x9 block obtained from the bottom middle of the block + var/list/spawn_turfs = block(locate(our_turf.x - 1, our_turf.y + 2, our_turf.z), locate(our_turf.x + 1, our_turf.y, our_turf.z)) + var/count = 10 + for(var/turf/T in spawn_turfs) + count-- + if(T == our_turf) // Skip our turf. + continue + var/obj/machinery/gravity_generator/part/part = new(T) + if(count == 5) // Middle + middle = part + if(count <= 3) // Their sprite is the top part of the generator + part.density = FALSE + part.plane = MOB_PLANE + part.layer = ABOVE_MOB_LAYER + part.sprite_number = count + part.main_part = src + parts += part + part.update_icon() + +/obj/machinery/gravity_generator/main/proc/connected_parts() + return parts.len == 8 + +/obj/machinery/gravity_generator/main/set_broken() + ..() + for(var/obj/machinery/gravity_generator/M in parts) + if(!(M.stat & BROKEN)) + M.set_broken() + middle.cut_overlays() + charge_count = 0 + breaker = FALSE + set_power() + set_state(0) + investigate_log("has broken down.", "gravity") + +/obj/machinery/gravity_generator/main/set_fix() + ..() + for(var/obj/machinery/gravity_generator/M in parts) + if(M.stat & BROKEN) + M.set_fix() + broken_state = FALSE + update_icon() + set_power() + +// Interaction + +// Fixing the gravity generator. +/obj/machinery/gravity_generator/main/attackby(obj/item/I, mob/user, params) + switch(broken_state) + if(GRAV_NEEDS_SCREWDRIVER) + if(I.is_screwdriver()) + to_chat(user, "You secure the screws of the framework.") + playsound(src, I.usesound, 75, 1) + broken_state++ + update_icon() + return + if(GRAV_NEEDS_WELDING) + if(I.is_welder()) + var/obj/item/weapon/weldingtool/W = I + if(W.remove_fuel(0,user)) + to_chat(user, "You mend the damaged framework.") + broken_state++ + update_icon() + return + if(GRAV_NEEDS_PLASTEEL) + if(istype(I, /obj/item/stack/material/plasteel)) + var/obj/item/stack/material/plasteel/PS = I + if(PS.get_amount() >= 10) + PS.use(10) + to_chat(user, "You add the plating to the framework.") + playsound(src.loc, 'sound/machines/click.ogg', 75, 1) + broken_state++ + update_icon() + else + to_chat(user, "You need 10 sheets of plasteel!") + return + if(GRAV_NEEDS_WRENCH) + if(I.is_wrench()) + to_chat(user, "You secure the plating to the framework.") + playsound(src, I.usesound, 75, 1) + set_fix() + return + return ..() + +/obj/machinery/gravity_generator/main/attack_hand(mob/user) + if((. = ..())) + return + if(CanUseTopic(user, global.default_state) > STATUS_CLOSE) + ui_interact(user) + return TRUE + +/obj/machinery/gravity_generator/main/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] + + data["breaker"] = breaker + data["charge_count"] = charge_count + data["charging_state"] = charging_state + data["on"] = on + data["operational"] = (stat & BROKEN) ? FALSE : TRUE + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "gravity_generator.tmpl", src.name, 500, 400) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/gravity_generator/main/Topic(href, href_list, datum/topic_state/state = default_state) + if((. = ..())) + return + + if(href_list["gentoggle"]) + breaker = !breaker + investigate_log("was toggled [breaker ? "ON" : "OFF"] by [key_name(usr)].", "gravity") + set_power() + return TOPIC_REFRESH + +// Power and Icon States + +/obj/machinery/gravity_generator/main/power_change() + ..() + investigate_log("has [stat & NOPOWER ? "lost" : "regained"] power.", "gravity") + set_power() + +/obj/machinery/gravity_generator/main/get_status() + if(stat & BROKEN) + return "fix[min(broken_state, 3)]" + return on || charging_state != POWER_IDLE ? "on" : "off" + +// Set the charging state based on power/breaker. +/obj/machinery/gravity_generator/main/proc/set_power() + var/new_state = FALSE + if(stat & (NOPOWER|BROKEN) || !breaker) + new_state = FALSE + else if(breaker) + new_state = TRUE + + // Charging state FSM + switch(charging_state) + if(POWER_UP) + if(!new_state) // Can start spin down during spin up + charging_state = POWER_DOWN + if(POWER_DOWN) + if(new_state) // Can start spin up during spin down + charging_state = POWER_UP + if(POWER_IDLE) + if(!new_state && use_power == USE_POWER_ACTIVE) // Can start spin down during running + charging_state = POWER_DOWN + else if(new_state && use_power == USE_POWER_IDLE) // Can start spin up during stopped + charging_state = POWER_UP + + investigate_log("is now [charging_state == POWER_UP ? "charging" : "discharging"].", "gravity") + update_icon() + +// Set the state of the gravity. +/obj/machinery/gravity_generator/main/proc/set_state(new_state) + charging_state = POWER_IDLE + update_use_power(new_state ? USE_POWER_ACTIVE : USE_POWER_IDLE) + + // Sound the alert if gravity was just enabled or disabled. + var/alert = FALSE + if(SSticker.IsRoundInProgress()) + if(new_state) // If we turned on and the game is live. + if(gravity_in_level() == FALSE) + alert = TRUE + investigate_log("was brought online and is now producing gravity for this level.", "gravity") + message_admins("The gravity generator was brought online [ADMIN_JMP(src)]") + else + if(gravity_in_level() == TRUE) + alert = TRUE + investigate_log("was brought offline and there is now no gravity for this level.", "gravity") + message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_JMP(src)]") + + update_list() + update_gravity(new_state) + update_icon() + src.updateUsrDialog() + + if(alert) + shake_everyone() + +// Charge/Discharge and turn on/off gravity when you reach 0/100 percent. +// Also emit radiation and handle the overlays. +/obj/machinery/gravity_generator/main/process() + if(stat & BROKEN) + return + if(charging_state != POWER_IDLE) + if(charging_state == POWER_UP && charge_count >= 100) + set_state(1) + else if(charging_state == POWER_DOWN && charge_count <= 0) + set_state(0) + else + if(charging_state == POWER_UP) + charge_count += 2 + else if(charging_state == POWER_DOWN) + charge_count -= 2 + + if(charge_count % 4 == 0 && prob(75)) // Let them know it is charging/discharging. + playsound(src.loc, 'sound/effects/empulse.ogg', 100, 1) + + updateDialog() + if(prob(25)) // To help stop "Your clothes feel warm." spam. + pulse_radiation() + + var/overlay_state = null + switch(charge_count) + if(0 to 20) + overlay_state = null + if(21 to 40) + overlay_state = "startup" + if(41 to 60) + overlay_state = "idle" + if(61 to 80) + overlay_state = "activating" + if(81 to 100) + overlay_state = "activated" + + if(overlay_state != current_overlay) + if(middle) + middle.cut_overlays() + if(overlay_state) + middle.add_overlay(overlay_state) + current_overlay = overlay_state + + +/obj/machinery/gravity_generator/main/proc/pulse_radiation() + SSradiation.radiate(src, 200) + +/obj/machinery/gravity_generator/main/proc/update_gravity(var/on) + for(var/area/A in src.areas) + A.gravitychange(on) + +// Shake everyone on the z level to let them know that gravity was enagaged/disenagaged. +/obj/machinery/gravity_generator/main/proc/shake_everyone() + var/sound/alert_sound = sound('sound/effects/alert.ogg') + for(var/i in player_list) + var/mob/M = i + if(!(M.z in levels)) + continue + M.update_gravity(M.mob_has_gravity()) + if(M.client) + shake_camera(M, 15, 1) + M.playsound_local(src, null, 100, 1, 0.5, S = alert_sound) + +/obj/machinery/gravity_generator/main/proc/gravity_in_level() + var/my_z = get_z(src) + if(!my_z) + return FALSE + if(GLOB.gravity_generators["[my_z]"]) + return length(GLOB.gravity_generators["[my_z]"]) + return FALSE + +/obj/machinery/gravity_generator/main/proc/update_list() + levels.Cut() + var/my_z = get_z(src) + + //Actually doing it special this time instead of letting using_map decide + if(using_map.use_overmap) + var/obj/effect/overmap/visitable/S = get_overmap_sector(my_z) + if(S) + levels = S.get_space_zlevels() //Just the spacey ones + else + levels = GetConnectedZlevels(my_z) + else + levels = GetConnectedZlevels(my_z) + + for(var/z in levels) + if(!GLOB.gravity_generators["[z]"]) + GLOB.gravity_generators["[z]"] = list() + if(use_power == USE_POWER_ACTIVE) + GLOB.gravity_generators["[z]"] |= src + else + GLOB.gravity_generators["[z]"] -= src + +/obj/machinery/gravity_generator/main/proc/update_areas() + areas.Cut() + for(var/area/A) + if(istype(A, /area/shuttle)) + continue //Skip shuttle areas + if(A.z in levels) + areas += A + +// Misc +/* +/obj/item/paper/guides/jobs/engi/gravity_gen + name = "paper- 'Generate your own gravity!'" + info = {"

Gravity Generator Instructions For Dummies

+

Surprisingly, gravity isn't that hard to make! All you have to do is inject deadly radioactive minerals into a ball of + energy and you have yourself gravity! You can turn the machine on or off when required but you must remember that the generator + will EMIT RADIATION when charging or discharging, you can tell it is charging or discharging by the noise it makes, so please WEAR PROTECTIVE CLOTHING.

+
+

It blew up!

+

Don't panic! The gravity generator was designed to be easily repaired. If, somehow, the sturdy framework did not survive then + please proceed to panic; otherwise follow these steps.

    +
  1. Secure the screws of the framework with a screwdriver.
  2. +
  3. Mend the damaged framework with a welding tool.
  4. +
  5. Add additional plasteel plating.
  6. +
  7. Secure the additional plating with a wrench.
"} +*/ +#undef POWER_IDLE +#undef POWER_UP +#undef POWER_DOWN + +#undef GRAV_NEEDS_SCREWDRIVER +#undef GRAV_NEEDS_WELDING +#undef GRAV_NEEDS_PLASTEEL +#undef GRAV_NEEDS_WRENCH diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index b5f43750c6..c2f119dfb8 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -56,23 +56,22 @@ var/global/list/light_type_cache = list() icon_state = "tube-empty" /obj/machinery/light_construct/examine(mob/user) - if(!..(user, 2)) - return - - switch(src.stage) - if(1) - to_chat(user, "It's an empty frame.") - if(2) - to_chat(user, "It's wired.") - if(3) - to_chat(user, "The casing is closed.") - if(cell_connectors) - if(cell) - to_chat(user, "You see [cell] inside the casing.") + . = ..() + if(get_dist(user, src) <= 2) + switch(stage) + if(1) + . += "It's an empty frame." + if(2) + . += "It's wired." + if(3) + . += "The casing is closed." + if(cell_connectors) + if(cell) + . += "You see [cell] inside the casing." + else + . += "The casing has no power cell for backup power." else - to_chat(user, "The casing has no power cell for backup power.") - else - to_chat(user, "This casing doesn't support power cells for backup power.") + . += "This casing doesn't support power cells for backup power." /obj/machinery/light_construct/attack_hand(mob/user) . = ..() @@ -246,9 +245,18 @@ var/global/list/light_type_cache = list() var/bulb_emergency_pow_mul = 0.75 // the multiplier for determining the light's power in emergency mode var/bulb_emergency_pow_min = 0.5 // the minimum value for the light's power in emergency mode + var/nightshift_enabled = FALSE + var/nightshift_allowed = TRUE + var/brightness_range_ns + var/brightness_power_ns + var/brightness_color_ns + /obj/machinery/light/flicker auto_flicker = TRUE +/obj/machinery/light/no_nightshift + nightshift_allowed = FALSE + // the smaller bulb light fixture /obj/machinery/light/small @@ -420,7 +428,10 @@ var/global/list/light_type_cache = list() //VOREStation Edit End if(on) - if(light_range != brightness_range || light_power != brightness_power || light_color != brightness_color) + var/correct_range = nightshift_enabled ? brightness_range_ns : brightness_range + var/correct_power = nightshift_enabled ? brightness_power_ns : brightness_power + var/correct_color = nightshift_enabled ? brightness_color_ns : brightness_color + if(light_range != correct_range || light_power != correct_power || light_color != correct_color) if(!auto_flicker) switchcount++ if(rigged) @@ -438,9 +449,9 @@ var/global/list/light_type_cache = list() set_light(0) else update_use_power(USE_POWER_ACTIVE) - set_light(brightness_range, brightness_power, brightness_color) + set_light(correct_range, correct_power, correct_color) else if(has_emergency_power(LIGHT_EMERGENCY_POWER_USE) && !turned_off()) - use_power = 1 + update_use_power(USE_POWER_IDLE) emergency_mode = TRUE START_PROCESSING(SSobj, src) else @@ -448,8 +459,15 @@ var/global/list/light_type_cache = list() set_light(0) update_icon() - active_power_usage = ((light_range * light_power) * LIGHTING_POWER_FACTOR) + update_active_power_usage((light_range * light_power) * LIGHTING_POWER_FACTOR) +/obj/machinery/light/proc/nightshift_mode(var/state) + if(!nightshift_allowed) + return + + if(state != nightshift_enabled) + nightshift_enabled = state + update(FALSE) /obj/machinery/light/attack_generic(var/mob/user, var/damage) if(!damage) @@ -488,18 +506,19 @@ var/global/list/light_type_cache = list() // examine verb /obj/machinery/light/examine(mob/user) + . = ..() var/fitting = get_fitting_name() switch(status) if(LIGHT_OK) - to_chat(user, "[desc] It is turned [on? "on" : "off"].") + . += "It is turned [on? "on" : "off"]." if(LIGHT_EMPTY) - to_chat(user, "[desc] The [fitting] has been removed.") + . += "The [fitting] has been removed." if(LIGHT_BURNED) - to_chat(user, "[desc] The [fitting] is burnt out.") + . += "The [fitting] is burnt out." if(LIGHT_BROKEN) - to_chat(user, "[desc] The [fitting] has been smashed.") + . += "The [fitting] has been smashed." if(cell) - to_chat(user, "Its backup power charge meter reads [round((cell.charge / cell.maxcharge) * 100, 0.1)]%.") + . += "Its backup power charge meter reads [round((cell.charge / cell.maxcharge) * 100, 0.1)]%." /obj/machinery/light/proc/get_fitting_name() @@ -510,10 +529,15 @@ var/global/list/light_type_cache = list() status = L.status switchcount = L.switchcount rigged = L.rigged + brightness_range = L.brightness_range brightness_power = L.brightness_power brightness_color = L.brightness_color + brightness_range_ns = L.nightshift_range + brightness_power_ns = L.nightshift_power + brightness_color_ns = L.nightshift_color + // attack with item - insert light (if right type), otherwise try to break the light /obj/machinery/light/proc/insert_bulb(obj/item/weapon/light/L) @@ -876,6 +900,10 @@ var/global/list/light_type_cache = list() var/brightness_power = 1 var/brightness_color = LIGHT_COLOR_INCANDESCENT_TUBE + var/nightshift_range = 8 + var/nightshift_power = 0.7 + var/nightshift_color = LIGHT_COLOR_NIGHTSHIFT + /obj/item/weapon/light/tube name = "light tube" desc = "A replacement light tube." @@ -892,6 +920,9 @@ var/global/list/light_type_cache = list() brightness_range = 15 brightness_power = 9 + nightshift_range = 10 + nightshift_power = 0.9 + /obj/item/weapon/light/bulb name = "light bulb" desc = "A replacement light bulb." @@ -903,6 +934,9 @@ var/global/list/light_type_cache = list() brightness_power = 4 brightness_color = LIGHT_COLOR_INCANDESCENT_BULB + nightshift_range = 3 + nightshift_power = 0.35 + /obj/item/weapon/light/throw_impact(atom/hit_atom) ..() shatter() diff --git a/code/modules/power/lightswitch_vr.dm b/code/modules/power/lightswitch_vr.dm index db1881c4b3..409110331f 100644 --- a/code/modules/power/lightswitch_vr.dm +++ b/code/modules/power/lightswitch_vr.dm @@ -68,15 +68,15 @@ pixel_y = (dir & 3) ? (dir == NORTH ? -y_offset : y_offset) : 0 /obj/structure/construction/examine(mob/user) - if(!..(user, 2)) - return - switch(stage) - if(FRAME_UNFASTENED) - to_chat(user, "It's an empty frame.") - if(FRAME_FASTENED) - to_chat(user, "It's fixed to the wall.") - if(FRAME_WIRED) - to_chat(user, "It's wired.") + . = ..() + if(get_dist(user, src) <= 2) + switch(stage) + if(FRAME_UNFASTENED) + . += "It's an empty frame." + if(FRAME_FASTENED) + . += "It's fixed to the wall." + if(FRAME_WIRED) + . += "It's wired." /obj/structure/construction/update_icon() icon_state = "[base_icon][stage]" diff --git a/code/modules/power/pacman2.dm b/code/modules/power/pacman2.dm index 8e32cccc30..33fb1fb97a 100644 --- a/code/modules/power/pacman2.dm +++ b/code/modules/power/pacman2.dm @@ -51,8 +51,8 @@ power_gen = round(initial(power_gen) * (max(2, temp_rating) / 2)) examine(mob/user) - ..(user) - to_chat(user, "The generator has [P.air_contents.phoron] units of fuel left, producing [power_gen] per cycle.") + . = ..() + . += "The generator has [P.air_contents.phoron] units of fuel left, producing [power_gen] per cycle." handleInactive() heat -= 2 diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 4515b6125c..852d4d5d0f 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -2,8 +2,8 @@ /obj/machinery/power/port_gen name = "Placeholder Generator" //seriously, don't use this. It can't be anchored without VV magic. desc = "A portable generator for emergency backup power" - icon = 'icons/obj/power.dmi' - icon_state = "portgen0" + icon = 'icons/obj/power_vr.dmi' //VOREStation Edit + icon_state = "portgen0" //VOREStation Edit density = 1 anchored = 0 use_power = USE_POWER_OFF @@ -48,12 +48,12 @@ return /obj/machinery/power/port_gen/examine(mob/user) - if(!..(user,1 )) - return - if(active) - to_chat(user, "The generator is on.") - else - to_chat(user, "The generator is off.") + . = ..() + if(Adjacent(user)) //It literally has a light on the sprite, are you sure this is necessary? + if(active) + . += "The generator is on." + else + . += "The generator is off." /obj/machinery/power/port_gen/emp_act(severity) var/duration = 6000 //ten minutes @@ -144,13 +144,13 @@ power_gen = round(initial(power_gen) * (max(2, temp_rating) / 2)) /obj/machinery/power/port_gen/pacman/examine(mob/user) - ..(user) - to_chat(user, "\The [src] appears to be producing [power_gen*power_output] W.") - to_chat(user, "There [sheets == 1 ? "is" : "are"] [sheets] sheet\s left in the hopper.") + . = ..() + . += "It appears to be producing [power_gen*power_output] W." + . += "There [sheets == 1 ? "is" : "are"] [sheets] sheet\s left in the hopper." if(IsBroken()) - to_chat(user, "\The [src] seems to have broken down.") + . += "It seems to have broken down." if(overheating) - to_chat(user, "\The [src] is overheating!") + . += "It is overheating!" /obj/machinery/power/port_gen/pacman/HasFuel() var/needed_sheets = power_output / time_per_sheet @@ -372,11 +372,11 @@ if(href_list["action"] == "enable") if(!active && HasFuel() && !IsBroken()) active = 1 - icon_state = "portgen1" + icon_state = "[initial(icon_state)]on" //VOREStation Edit if(href_list["action"] == "disable") if (active) active = 0 - icon_state = "portgen0" + icon_state = initial(icon_state) //VOREStation Edit if(href_list["action"] == "eject") if(!active) DropFuel() diff --git a/code/modules/power/port_gen_vr.dm b/code/modules/power/port_gen_vr.dm index e6e805e1d7..5cdd86b047 100644 --- a/code/modules/power/port_gen_vr.dm +++ b/code/modules/power/port_gen_vr.dm @@ -1,11 +1,242 @@ /obj/machinery/power/port_gen/pacman/super/potato name = "nuclear reactor" desc = "PTTO-3, an industrial all-in-one nuclear power plant by Neo-Chernobyl GmbH. It uses uranium as a fuel source. Rated for 200 kW max safe output." + icon = 'icons/obj/power.dmi' icon_state = "potato" time_per_sheet = 1152 //same power output, but a 50 sheet stack will last 4 hours at max safe power - power_gen = 40000 //watts - max_power_output = 5 - max_safe_output = 6 - temperature_gain = 80 //how much the temperature increases per power output level, in degrees per level - max_temperature = 450 + power_gen = 50000 //watts anchored = 1 + +// Circuits for the RTGs below +/obj/item/weapon/circuitboard/machine/rtg + name = T_BOARD("radioisotope TEG") + build_path = /obj/machinery/power/rtg + board_type = new /datum/frame/frame_types/machine + origin_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3) + req_components = list( + /obj/item/stack/cable_coil = 5, + /obj/item/weapon/stock_parts/capacitor = 1, + /obj/item/stack/material/uranium = 10) // We have no Pu-238, and this is the closest thing to it. + +/obj/item/weapon/circuitboard/machine/rtg/advanced + name = T_BOARD("advanced radioisotope TEG") + build_path = /obj/machinery/power/rtg/advanced + origin_tech = list(TECH_DATA = 5, TECH_POWER = 5, TECH_PHORON = 5, TECH_ENGINEERING = 5) + req_components = list( + /obj/item/stack/cable_coil = 5, + /obj/item/weapon/stock_parts/capacitor = 1, + /obj/item/weapon/stock_parts/micro_laser = 1, + /obj/item/stack/material/uranium = 10, + /obj/item/stack/material/phoron = 5) + +/obj/item/weapon/circuitboard/machine/abductor/core + name = T_BOARD("void generator") + build_path = /obj/machinery/power/rtg/abductor + board_type = new /datum/frame/frame_types/machine + origin_tech = list(TECH_DATA = 8, TECH_POWER = 8, TECH_PHORON = 8, TECH_ENGINEERING = 8) + req_components = list( + /obj/item/stack/cable_coil = 5, + /obj/item/weapon/stock_parts/capacitor/omni = 1) + +/obj/item/weapon/circuitboard/machine/abductor/core/hybrid + name = T_BOARD("void generator (hybrid)") + build_path = /obj/machinery/power/rtg/abductor/hybrid + board_type = new /datum/frame/frame_types/machine + origin_tech = list(TECH_DATA = 8, TECH_POWER = 8, TECH_PHORON = 8, TECH_ENGINEERING = 8) + req_components = list( + /obj/item/stack/cable_coil = 5, + /obj/item/weapon/stock_parts/capacitor/omni = 1, + /obj/item/weapon/stock_parts/micro_laser/omni = 1) + +// Radioisotope Thermoelectric Generator (RTG) +// Simple power generator that would replace "magic SMES" on various derelicts. +/obj/machinery/power/rtg + name = "radioisotope thermoelectric generator" + desc = "A simple nuclear power generator, used in small outposts to reliably provide power for decades." + icon = 'icons/obj/power_vr.dmi' + icon_state = "rtg" + density = TRUE + use_power = USE_POWER_OFF + circuit = /obj/item/weapon/circuitboard/machine/rtg + + // You can buckle someone to RTG, then open its panel. Fun stuff. + can_buckle = TRUE + buckle_lying = FALSE + + var/power_gen = 1000 // Enough to power a single APC. 4000 output with T4 capacitor. + var/irradiate = TRUE // RTGs irradiate surroundings, but only when panel is open. + +/obj/machinery/power/rtg/Initialize() + . = ..() + if(ispath(circuit)) + circuit = new circuit(src) + default_apply_parts() + connect_to_network() + +/obj/machinery/power/rtg/process() + ..() + add_avail(power_gen) + if(panel_open && irradiate) + SSradiation.radiate(src, 60) + +/obj/machinery/power/rtg/RefreshParts() + var/part_level = 0 + for(var/obj/item/weapon/stock_parts/SP in component_parts) + part_level += SP.rating + + power_gen = initial(power_gen) * part_level + +/obj/machinery/power/rtg/examine(mob/user) + . = ..() + if(Adjacent(user, src) || isobserver(user)) + . += "The status display reads: Power generation now at [power_gen*0.001]kW." + +/obj/machinery/power/rtg/attackby(obj/item/I, mob/user, params) + if(default_deconstruction_screwdriver(user, I)) + return + else if(default_deconstruction_crowbar(user, I)) + return + return ..() + +/obj/machinery/power/rtg/update_icon() + if(panel_open) + icon_state = "[initial(icon_state)]-open" + else + icon_state = initial(icon_state) + +/obj/machinery/power/rtg/advanced + desc = "An advanced RTG capable of moderating isotope decay, increasing power output but reducing lifetime. It uses plasma-fueled radiation collectors to increase output even further." + power_gen = 1250 // 2500 on T1, 10000 on T4. + circuit = /obj/item/weapon/circuitboard/machine/rtg/advanced + +/obj/machinery/power/rtg/fake_gen + name = "area power generator" + desc = "Some power generation equipment that might be powering the current area." + icon_state = "rtg_gen" + power_gen = 6000 + circuit = /obj/item/weapon/circuitboard/machine/rtg + can_buckle = FALSE + +/obj/machinery/power/rtg/fake_gen/RefreshParts() + return +/obj/machinery/power/rtg/fake_gen/attackby(obj/item/I, mob/user, params) + return +/obj/machinery/power/rtg/fake_gen/update_icon() + return + +// Void Core, power source for Abductor ships and bases. +// Provides a lot of power, but tends to explode when mistreated. +/obj/machinery/power/rtg/abductor + name = "Void Core" + icon_state = "core-nocell" + desc = "An alien power source that produces energy seemingly out of nowhere." + circuit = /obj/item/weapon/circuitboard/machine/abductor/core + power_gen = 10000 + irradiate = FALSE // Green energy! + can_buckle = FALSE + pixel_y = 7 + var/going_kaboom = FALSE // Is it about to explode? + var/obj/item/weapon/cell/void/cell + + var/icon_base = "core" + var/state_change = TRUE + +/obj/machinery/power/rtg/abductor/RefreshParts() + ..() + if(!cell) + power_gen = 0 + +/obj/machinery/power/rtg/abductor/proc/asplod() + if(going_kaboom) + return + going_kaboom = TRUE + visible_message("\The [src] lets out an shower of sparks as it starts to lose stability!",\ + "You hear a loud electrical crack!") + playsound(src.loc, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5) + tesla_zap(src, 5, power_gen * 0.05) + addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, get_turf(src), 2, 3, 4, 8), 100) // Not a normal explosion. + +/obj/machinery/power/rtg/abductor/bullet_act(obj/item/projectile/Proj) + . = ..() + if(!going_kaboom && istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))) + log_and_message_admins("[ADMIN_LOOKUPFLW(Proj.firer)] triggered an Abductor Core explosion at [x],[y],[z] via projectile.") + asplod() + +/obj/machinery/power/rtg/abductor/attack_hand(var/mob/living/user) + if(!istype(user) || (. = ..())) + return + + if(cell) + cell.forceMove(get_turf(src)) + user.put_in_active_hand(cell) + cell = null + state_change = TRUE + RefreshParts() + update_icon() + playsound(src, 'sound/effects/metal_close.ogg', 50, 1) + return TRUE + +/obj/machinery/power/rtg/abductor/attackby(obj/item/I, mob/user, params) + state_change = TRUE //Can't tell if parent did something + if(istype(I, /obj/item/weapon/cell/void) && !cell) + user.remove_from_mob(I) + I.forceMove(src) + cell = I + RefreshParts() + update_icon() + playsound(src, 'sound/effects/metal_close.ogg', 50, 1) + return + return ..() + +/obj/machinery/power/rtg/abductor/update_icon() + if(!state_change) + return //Stupid cells constantly update our icon so trying to be efficient + + if(cell) + if(panel_open) + icon_state = "[icon_base]-open" + else + icon_state = "[icon_base]" + else + icon_state = "[icon_base]-nocell" + + state_change = FALSE + +/obj/machinery/power/rtg/abductor/blob_act(obj/structure/blob/B) + asplod() + +/obj/machinery/power/rtg/abductor/ex_act() + if(going_kaboom) + qdel(src) + else + asplod() + +/obj/machinery/power/rtg/abductor/fire_act(exposed_temperature, exposed_volume) + asplod() + +/obj/machinery/power/rtg/abductor/tesla_act() + ..() //extend the zap + asplod() + +// Comes with an installed cell +/obj/machinery/power/rtg/abductor/built + icon_state = "core" + +/obj/machinery/power/rtg/abductor/built/Initialize() + . = ..() + cell = new(src) + RefreshParts() + +// Bloo version +/obj/machinery/power/rtg/abductor/hybrid + icon_state = "coreb-nocell" + icon_base = "coreb" + circuit = /obj/item/weapon/circuitboard/machine/abductor/core/hybrid + +/obj/machinery/power/rtg/abductor/hybrid/built + icon_state = "coreb" + +/obj/machinery/power/rtg/abductor/hybrid/built/Initialize() + . = ..() + cell = new /obj/item/weapon/cell/void/hybrid(src) + RefreshParts() diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 194cdb4eb4..5ea4fe4224 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -17,8 +17,6 @@ /obj/machinery/power/Destroy() disconnect_from_network() - disconnect_terminal() - return ..() /////////////////////////////// @@ -37,6 +35,8 @@ /obj/machinery/power/proc/add_avail(var/amount) if(powernet) powernet.newavail += amount + return TRUE + return FALSE /obj/machinery/power/proc/draw_power(var/amount) if(powernet) @@ -61,45 +61,7 @@ else return 0 -/obj/machinery/power/proc/disconnect_terminal() // machines without a terminal will just return, no harm no fowl. - return - -// returns true if the area has power on given channel (or doesn't require power). -// defaults to power_channel -/obj/machinery/proc/powered(var/chan = -1) // defaults to power_channel - - if(!src.loc) - return 0 - - //Don't do this. It allows machines that set use_power to 0 when off (many machines) to - //be turned on again and used after a power failure because they never gain the NOPOWER flag. - //if(!use_power) - // return 1 - - var/area/A = src.loc.loc // make sure it's in an area - if(!A || !isarea(A)) - return 0 // if not, then not powered - if(chan == -1) - chan = power_channel - return A.powered(chan) // return power status of the area - -// increment the power usage stats for an area -/obj/machinery/proc/use_power(var/amount, var/chan = -1) // defaults to power_channel - var/area/A = get_area(src) // make sure it's in an area - if(!A || !isarea(A)) - return - if(chan == -1) - chan = power_channel - A.use_power(amount, chan) - -/obj/machinery/proc/power_change() // called whenever the power settings of the containing area change - // by default, check equipment channel & set flag - // can override if needed - if(powered(power_channel)) - stat &= ~NOPOWER - else - - stat |= NOPOWER +/obj/machinery/power/proc/disconnect_terminal(var/obj/machinery/power/terminal/term) // machines without a terminal will just return, no harm no fowl. return // connect the machine to a powernet if a node cable is present on the turf @@ -377,7 +339,7 @@ var/drained_energy = drained_hp*20 if (source_area) - source_area.use_power(drained_energy/CELLRATE) + source_area.use_power_oneoff(drained_energy/CELLRATE, EQUIP) else if (istype(power_source,/datum/powernet)) var/drained_power = drained_energy/CELLRATE drained_power = PN.draw_power(drained_power) diff --git a/code/modules/power/powernet.dm b/code/modules/power/powernet.dm index 2710d69788..b08586a449 100644 --- a/code/modules/power/powernet.dm +++ b/code/modules/power/powernet.dm @@ -8,6 +8,11 @@ var/viewload = 0 // the load as it appears on the power console (gradually updated) var/number = 0 // Unused //TODEL + var/smes_demand = 0 // Amount of power demanded by all SMESs from this network. Needed for load balancing. + var/list/inputting = list() // List of SMESs that are demanding power from this network. Needed for load balancing. + var/smes_avail = 0 // Amount of power (avail) from SMESes. Used by SMES load balancing + var/smes_newavail = 0 // As above, just for newavail + var/perapc = 0 // per-apc avilability var/perapc_excess = 0 var/netexcess = 0 // excess power on the powernet (typically avail-load) @@ -113,9 +118,20 @@ perapc = avail/numapc + perapc_excess - if(netexcess > 100 && nodes && nodes.len) // if there was excess power last cycle - for(var/obj/machinery/power/smes/S in nodes) // find the SMESes in the network - S.restore() // and restore some of the power that was used + + // At this point, all other machines have finished using power. Anything left over may be used up to charge SMESs. + if(inputting.len && smes_demand) + var/smes_input_percentage = between(0, (netexcess / smes_demand) * 100, 100) + for(var/obj/machinery/power/terminal/T in inputting) + var/obj/machinery/power/smes/S = T.master + if(istype(S)) + S.input_power(smes_input_percentage, T) + + netexcess = avail - load + if(netexcess) + var/perc = get_percent_load(1) + for(var/obj/machinery/power/smes/S in nodes) + S.restore(perc) //updates the viewed load (as seen on power computers) viewload = round(load) @@ -123,7 +139,22 @@ //reset the powernet load = 0 avail = newavail + smes_avail = smes_newavail + inputting.Cut() + smes_demand = 0 newavail = 0 + smes_newavail = 0 + +/datum/powernet/proc/get_percent_load(var/smes_only = 0) + if(smes_only) + var/smes_used = load - (avail - smes_avail) // SMESs are always last to provide power + if(!smes_used || smes_used < 0 || !smes_avail) // SMES power isn't available or being used at all, SMES load is therefore 0% + return 0 + return between(0, (smes_used / smes_avail) * 100, 100) // Otherwise return percentage load of SMESs. + else + if(!load) + return 0 + return between(0, (load / avail) * 100, 100) /datum/powernet/proc/get_electrocute_damage() switch(avail) diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 1dc29c7fd7..b296b8916c 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -103,9 +103,9 @@ var/global/list/rad_collectors = list() return ..() /obj/machinery/power/rad_collector/examine(mob/user) - if (..(user, 3)) - to_chat(user, "The meter indicates that \the [src] is collecting [last_power] W.") - return 1 + . = ..() + if(get_dist(user, src) <= 3) + . += "The meter indicates that it is collecting [last_power] W." /obj/machinery/power/rad_collector/ex_act(severity) switch(severity) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 2e6cda0049..3b381ff2f0 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -267,15 +267,15 @@ qdel(src) /obj/machinery/power/emitter/examine(mob/user) - ..() + . = ..() var/integrity_percentage = round((integrity / initial(integrity)) * 100) switch(integrity_percentage) if(0 to 30) - to_chat(user, "\The [src] is close to falling apart!") + . += "It is close to falling apart!" if(31 to 70) - to_chat(user, "\The [src] is damaged.") + . += "It is damaged." if(77 to 99) - to_chat(user, "\The [src] is slightly damaged.") + . += "" //R-UST port /obj/machinery/power/emitter/proc/get_initial_fire_delay() diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index f5481afd4c..08af0c23a5 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -112,20 +112,17 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin return 1 /obj/structure/particle_accelerator/examine(mob/user) - switch(src.construction_state) + . = ..() + + switch(construction_state) if(0) - src.desc = text("A [name], looks like it's not attached to the flooring") + . += "Looks like it's not attached to the flooring." if(1) - src.desc = text("A [name], it is missing some cables") + . += "It is missing some cables." if(2) - src.desc = text("A [name], the panel is open") + . += "The panel is open." if(3) - src.desc = text("The [name] is assembled") - if(powered) - src.desc = src.desc_holder - ..() - return - + . += "It is assembled." /obj/structure/particle_accelerator/attackby(obj/item/W, mob/user) if(istool(W)) @@ -135,9 +132,9 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin return -/obj/structure/particle_accelerator/Move() - ..() - if(master && master.active) +/obj/structure/particle_accelerator/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + if(master?.active) master.toggle_power() log_game("PACCEL([x],[y],[z]) Was moved while active and turned off.") investigate_log("was moved whilst active; it powered down.","singulo") @@ -295,19 +292,17 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin return /obj/machinery/particle_accelerator/examine(mob/user) - switch(src.construction_state) + . = ..() + + switch(construction_state) if(0) - src.desc = text("A [name], looks like it's not attached to the flooring") + . += "Looks like it's not attached to the flooring." if(1) - src.desc = text("A [name], it is missing some cables") + . += "It is missing some cables." if(2) - src.desc = text("A [name], the panel is open") + . += "The panel is open." if(3) - src.desc = text("The [name] is assembled") - if(powered) - src.desc = src.desc_holder - ..() - return + . += "It is assembled." /obj/machinery/particle_accelerator/attackby(obj/item/W, mob/user) diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 8cb370924b..080507d17b 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -3,7 +3,7 @@ /obj/machinery/particle_accelerator/control_box name = "Particle Accelerator Control Computer" desc = "This controls the density of the particles." - icon = 'icons/obj/machines/particle_accelerator2.dmi' + icon = 'icons/obj/machines/particle_accelerator_vr.dmi' //VOREStation Edit icon_state = "control_box" reference = "control_box" anchored = 0 @@ -24,7 +24,7 @@ /obj/machinery/particle_accelerator/control_box/New() wires = new(src) connected_parts = list() - active_power_usage = initial(active_power_usage) * (strength + 1) + update_active_power_usage(initial(active_power_usage) * (strength + 1)) ..() /obj/machinery/particle_accelerator/control_box/Destroy() diff --git a/code/modules/power/singularity/particle_accelerator/particle_smasher.dm b/code/modules/power/singularity/particle_accelerator/particle_smasher.dm index 5a4176ee89..386437db0b 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_smasher.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_smasher.dm @@ -37,11 +37,11 @@ ..() /obj/machinery/particle_smasher/examine(mob/user) - ..() - if(user in view(1)) - to_chat(user, "\The [src] contains:") + . = ..() + if(Adjacent(user)) + . += "\The [src] contains:" for(var/obj/item/I in contents) - to_chat(user, "\the [I]") + . += "\the [I]" /obj/machinery/particle_smasher/attackby(obj/item/W as obj, mob/user as mob) if(W.type == /obj/item/device/analyzer) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index a3ee1a2033..2ec394bc1f 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -1,7 +1,6 @@ // the SMES // stores power -#define SMESRATE 0.03333 //translates Watt into Kilowattminutes with respect to machinery schedule_interval ~(2s*1W*1min/60s) #define SMESMAXCHARGELEVEL 250000 #define SMESMAXOUTPUT 250000 @@ -25,7 +24,7 @@ var/input_available = 0 // amount of charge available from input last tick var/output_attempt = 1 // 1 = attempting to output, 0 = not attempting to output - var/outputting = 1 // 1 = actually outputting, 0 = not outputting + var/outputting = 0 // 1 = actually outputting, 0 = not outputting var/output_level = 50000 // amount of power the SMES attempts to output var/output_level_max = 200000 // cap on output_level var/output_used = 0 // amount of power actually outputted. may be less than output_level if the powernet returns excess power @@ -35,15 +34,23 @@ var/last_input_attempt = 0 var/last_charge = 0 + //For icon overlay updates + var/last_disp + var/last_chrg + var/last_onln + + var/damage = 0 + var/maxdamage = 500 // Relatively resilient, given how expensive it is, but once destroyed produces small explosion. + var/input_cut = 0 var/input_pulsed = 0 var/output_cut = 0 var/output_pulsed = 0 + var/target_load = 0 - var/open_hatch = 0 var/name_tag = null var/building_terminal = 0 //Suggestions about how to avoid clickspam building several terminals accepted! - var/obj/machinery/power/terminal/terminal = null + var/list/terminals = list() var/should_be_mapped = 0 // If this is set to 0 it will send out warning on New() var/grid_check = FALSE // If true, suspends all I/O. @@ -58,38 +65,38 @@ /obj/machinery/power/smes/Initialize() . = ..() - if(!powernet) - connect_to_network() - - dir_loop: - for(var/d in cardinal) - var/turf/T = get_step(src, d) - for(var/obj/machinery/power/terminal/term in T) - if(term && term.dir == turn(d, 180)) - terminal = term - break dir_loop - if(!terminal) + for(var/d in GLOB.cardinal) + var/turf/T = get_step(src, d) + for(var/obj/machinery/power/terminal/term in T) + if(term && term.dir == turn(d, 180) && !term.master) + terminals |= term + term.master = src + term.connect_to_network() + if(!terminals.len) stat |= BROKEN return - terminal.master = src - if(!terminal.powernet) - terminal.connect_to_network() update_icon() - + if(!powernet) + connect_to_network() if(!should_be_mapped) warning("Non-buildable or Non-magical SMES at [src.x]X [src.y]Y [src.z]Z") /obj/machinery/power/smes/Destroy() - terminal = null + for(var/obj/machinery/power/terminal/T in terminals) + T.master = null + terminals = null return ..() -/obj/machinery/power/smes/disconnect_terminal() - if(terminal) - terminal.master = null - terminal = null +/obj/machinery/power/smes/add_avail(var/amount) + if(..(amount)) + powernet.smes_newavail += amount return 1 return 0 +/obj/machinery/power/smes/disconnect_terminal(var/obj/machinery/power/terminal/term) + terminals -= term + term.master = null + /obj/machinery/power/smes/update_icon() cut_overlays() if(stat & BROKEN) return @@ -113,48 +120,67 @@ /obj/machinery/power/smes/proc/chargedisplay() return round(5.5*charge/(capacity ? capacity : 5e6)) +/obj/machinery/power/smes/proc/input_power(var/percentage, var/obj/machinery/power/terminal/term) + var/to_input = target_load * (percentage/100) + to_input = between(0, to_input, target_load) + if(percentage == 100) + inputting = 2 + else if(percentage) + inputting = 1 + // else inputting = 0, as set in process() + + var/inputted = term.powernet.draw_power(min(to_input, input_level - input_available)) + add_charge(inputted) + input_available += inputted + +// Mostly in place due to child types that may store power in other way (PSUs) +/obj/machinery/power/smes/proc/add_charge(var/amount) + charge += amount*SMESRATE + +/obj/machinery/power/smes/proc/remove_charge(var/amount) + charge -= amount*SMESRATE + /obj/machinery/power/smes/process() if(stat & BROKEN) return - //store machine state to see if we need to update the icon overlays - var/last_disp = chargedisplay() - var/last_chrg = inputting - var/last_onln = outputting - - //inputting - if(input_attempt && (!input_pulsed && !input_cut) && !grid_check) - var/target_load = min((capacity-charge)/SMESRATE, input_level) // charge at set rate, limited to spare capacity - var/actual_load = draw_power(target_load) // add the load to the terminal side network - charge += actual_load * SMESRATE // increase the charge - - if (actual_load >= target_load) // Did we charge at full rate? - inputting = 2 - else if (actual_load) // If not, did we charge at least partially? - inputting = 1 - else // Or not at all? - inputting = 0 - - //outputting - if(outputting && (!output_pulsed && !output_cut) && !grid_check) - output_used = min( charge/SMESRATE, output_level) //limit output to that stored - - charge -= output_used*SMESRATE // reduce the storage (may be recovered in /restore() if excessive) - - add_avail(output_used) // add output to powernet (smes side) - else if(output_attempt && output_level > 0) - outputting = 1 - else - output_used = 0 - // only update icon if state changed if(last_disp != chargedisplay() || last_chrg != inputting || last_onln != outputting) update_icon() + //store machine state to see if we need to update the icon overlays + last_disp = chargedisplay() + last_chrg = inputting + last_onln = outputting + input_available = 0 + //inputting + if(input_attempt && (!input_pulsed && !input_cut) && !grid_check) + target_load = CLAMP((capacity-charge)/SMESRATE, 0, input_level) // Amount we will request from the powernet. + var/input_available = FALSE + for(var/obj/machinery/power/terminal/term in terminals) + if(!term.powernet) + continue + input_available = TRUE + term.powernet.smes_demand += target_load + term.powernet.inputting.Add(term) + if(!input_available) + target_load = 0 // We won't input any power without powernet connection. + inputting = 0 + output_used = 0 + //outputting + if(output_attempt && (!output_pulsed && !output_cut) && powernet && charge && !grid_check) + output_used = min( charge/SMESRATE, output_level) //limit output to that stored + remove_charge(output_used) // reduce the storage (may be recovered in /restore() if excessive) + add_avail(output_used) // add output to powernet (smes side) + outputting = 2 + else if(!powernet || !charge) + outputting = 1 + else + output_used = 0 // called after all power processes are finished // restores charge level to smes if there was excess this ptick -/obj/machinery/power/smes/proc/restore() +/obj/machinery/power/smes/proc/restore(var/percent_load) if(stat & BROKEN) return @@ -162,20 +188,17 @@ output_used = 0 return - var/excess = powernet.netexcess // this was how much wasn't used on the network last ptick, minus any removed by other SMESes - - excess = min(output_used, excess) // clamp it to how much was actually output by this SMES last ptick - - excess = min((capacity-charge)/SMESRATE, excess) // for safety, also limit recharge by space capacity of SMES (shouldn't happen) + var/total_restore = output_used * (percent_load / 100) // First calculate amount of power used from our output + total_restore = between(0, total_restore, output_used) // Now clamp the value between 0 and actual output, just for clarity. + total_restore = output_used - total_restore // And, at last, subtract used power from outputted power, to get amount of power we will give back to the SMES. // now recharge this amount - var/clev = chargedisplay() - charge += excess * SMESRATE // restore unused power - powernet.netexcess -= excess // remove the excess from the powernet, so later SMESes don't try to use it + add_charge(total_restore) // restore unused power + powernet.netexcess -= total_restore // remove the excess from the powernet, so later SMESes don't try to use it - output_used -= excess + output_used -= total_restore if(clev != chargedisplay() ) //if needed updates the icons overlay update_icon() @@ -184,7 +207,7 @@ //Will return 1 on failure /obj/machinery/power/smes/proc/make_terminal(const/mob/user) if (user.loc == loc) - to_chat(user, "You must not be on the same tile as the [src].") + to_chat(user, "You must not be on the same tile as the [src].") return 1 //Direction the terminal will face to @@ -196,26 +219,42 @@ tempDir = WEST var/turf/tempLoc = get_step(src, reverse_direction(tempDir)) if (istype(tempLoc, /turf/space)) - to_chat(user, "You can't build a terminal on space.") + to_chat(user, "You can't build a terminal on space.") return 1 else if (istype(tempLoc)) if(!tempLoc.is_plating()) - to_chat(user, "You must remove the floor plating first.") + to_chat(user, "You must remove the floor plating first.") return 1 - to_chat(user, "You start adding cable to the [src].") + if(check_terminal_exists(tempLoc, user, tempDir)) + return 1 + to_chat(user, "You start adding cable to the [src].") if(do_after(user, 50)) - terminal = new /obj/machinery/power/terminal(tempLoc) - terminal.set_dir(tempDir) - terminal.master = src - terminal.connect_to_network() + if(check_terminal_exists(tempLoc, user, tempDir)) + return 1 + var/obj/machinery/power/terminal/term = new/obj/machinery/power/terminal(tempLoc) + term.set_dir(tempDir) + term.master = src + term.connect_to_network() + terminals |= term return 0 return 1 +/obj/machinery/power/smes/proc/check_terminal_exists(var/turf/location, var/mob/user, var/direction) + for(var/obj/machinery/power/terminal/term in location) + if(term.dir == direction) + to_chat(user, "There is already a terminal here.") + return 1 + return 0 /obj/machinery/power/smes/draw_power(var/amount) - if(terminal && terminal.powernet) - return terminal.powernet.draw_power(amount) - return 0 + var/drained = 0 + for(var/obj/machinery/power/terminal/term in terminals) + if(!term.powernet) + continue + if((amount - drained) <= 0) + return 0 + drained += term.powernet.draw_power(amount - drained) + return drained /obj/machinery/power/smes/attack_ai(mob/user) @@ -228,65 +267,78 @@ /obj/machinery/power/smes/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) - if(W.is_screwdriver()) - if(!open_hatch) - open_hatch = 1 - to_chat(user, "You open the maintenance hatch of [src].") - playsound(src, W.usesound, 50, 1) - return 0 - else - open_hatch = 0 - to_chat(user, "You close the maintenance hatch of [src].") - playsound(src, W.usesound, 50, 1) - return 0 + if(default_deconstruction_screwdriver(user, W)) + return FALSE - if (!open_hatch) - to_chat(user, "You need to open access hatch on [src] first!") - return 0 + if (!panel_open) + to_chat(user, "You need to open access hatch on [src] first!") + return FALSE - if(istype(W, /obj/item/stack/cable_coil) && !terminal && !building_terminal) + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(!WT.isOn()) + to_chat(user, "Turn on \the [WT] first!") + return FALSE + if(!damage) + to_chat(user, "\The [src] is already fully repaired.") + return FALSE + if(WT.remove_fuel(0,user) && do_after(user, damage, src)) + to_chat(user, "You repair all structural damage to \the [src]") + damage = 0 + return FALSE + else if(istype(W, /obj/item/stack/cable_coil) && !building_terminal) building_terminal = 1 var/obj/item/stack/cable_coil/CC = W if (CC.get_amount() < 10) - to_chat(user, "You need more cables.") + to_chat(user, "You need more cables.") building_terminal = 0 - return 0 + return FALSE if (make_terminal(user)) building_terminal = 0 - return 0 + return FALSE building_terminal = 0 CC.use(10) user.visible_message(\ - "[user.name] has added cables to the [src].",\ - "You added cables to the [src].") + "[user.name] has added cables to the [src].",\ + "You added cables to the [src].") stat = 0 - return 0 + return FALSE - else if(W.is_wirecutter() && terminal && !building_terminal) - building_terminal = 1 - var/turf/tempTDir = terminal.loc + else if(W.is_wirecutter() && !building_terminal) + building_terminal = TRUE + var/obj/machinery/power/terminal/term + for(var/obj/machinery/power/terminal/T in get_turf(user)) + if(T.master == src) + term = T + break + if(!term) + to_chat(user, "There is no terminal on this tile.") + building_terminal = FALSE + return FALSE + var/turf/tempTDir = get_turf(term) if (istype(tempTDir)) if(!tempTDir.is_plating()) - to_chat(user, "You must remove the floor plating first.") + to_chat(user, "You must remove the floor plating first.") else - to_chat(user, "You begin to cut the cables...") + to_chat(user, "You begin to cut the cables...") playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1) if(do_after(user, 50 * W.toolspeed)) - if (prob(50) && electrocute_mob(usr, terminal.powernet, terminal)) + if (prob(50) && electrocute_mob(usr, term.powernet, term)) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() - building_terminal = 0 + building_terminal = FALSE if(usr.stunned) - return 0 + return FALSE new /obj/item/stack/cable_coil(loc,10) user.visible_message(\ - "[user.name] cut the cables and dismantled the power terminal.",\ - "You cut the cables and dismantle the power terminal.") - qdel(terminal) - building_terminal = 0 - return 0 - return 1 + "[user.name] cut the cables and dismantled the power terminal.",\ + "You cut the cables and dismantle the power terminal.") + terminals -= term + qdel(term) + building_terminal = FALSE + return FALSE + return TRUE /obj/machinery/power/smes/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) @@ -303,21 +355,12 @@ data["chargeMode"] = input_attempt data["chargeLevel"] = round(input_level/1000, 0.1) data["chargeMax"] = round(input_level_max/1000) - if (terminal && terminal.powernet) - data["chargeLoad"] = round(terminal.powernet.avail/1000, 0.1) - else - data["chargeLoad"] = 0 + data["chargeLoad"] = round(input_available/1000, 0.1) data["outputOnline"] = output_attempt data["outputLevel"] = round(output_level/1000, 0.1) data["outputMax"] = round(output_level_max/1000) data["outputLoad"] = round(output_used/1000, 0.1) - - if(outputting) - data["outputting"] = 2 // smes is outputting - else if(!outputting && output_attempt) - data["outputting"] = 1 // smes is online but not outputting because it's charge level is too low - else - data["outputting"] = 0 // smes is not outputting + data["outputting"] = outputting // update the ui if it exists, returns null if no ui is passed/found ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) @@ -333,6 +376,8 @@ ui.set_auto_update(1) /obj/machinery/power/smes/proc/Percentage() + if(!capacity) + return 0 return round(100.0*charge/capacity, 0.1) /obj/machinery/power/smes/Topic(href, href_list) @@ -342,10 +387,11 @@ if( href_list["cmode"] ) inputting(!input_attempt) update_icon() - + return 1 else if( href_list["online"] ) outputting(!output_attempt) update_icon() + return 1 else if( href_list["input"] ) switch( href_list["input"] ) if("min") @@ -355,7 +401,7 @@ if("set") input_level = (input(usr, "Enter new input level (0-[input_level_max/1000] kW)", "SMES Input Power Control", input_level/1000) as num) * 1000 input_level = max(0, min(input_level_max, input_level)) // clamp to range - + return 1 else if( href_list["output"] ) switch( href_list["output"] ) if("min") @@ -365,42 +411,7 @@ if("set") output_level = (input(usr, "Enter new output level (0-[output_level_max/1000] kW)", "SMES Output Power Control", output_level/1000) as num) * 1000 output_level = max(0, min(output_level_max, output_level)) // clamp to range - - investigate_log("input/output; on":"off"] | Input-mode: [input_attempt?"auto":"off"] by [usr.key]","singulo") - log_game("SMES([x],[y],[z]) [key_name(usr)] changed settings: I:[input_level]([input_attempt]), O:[output_level]([output_attempt])") - return 1 - - -/obj/machinery/power/smes/proc/ion_act() - if(src.z in using_map.station_levels) - if(prob(1)) //explosion - for(var/mob/M in viewers(src)) - M.show_message("The [src.name] is making strange noises!", 3, "You hear sizzling electronics.", 2) - sleep(10*pick(4,5,6,7,10,14)) - var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() - smoke.set_up(3, 0, src.loc) - smoke.attach(src) - smoke.start() - explosion(src.loc, -1, 0, 1, 3, 1, 0) - qdel(src) - return - if(prob(15)) //Power drain - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(3, 1, src) - s.start() - if(prob(25)) - emp_act(1) - else if(prob(25)) - emp_act(2) - else if(prob(25)) - emp_act(3) - else - emp_act(4) - if(prob(5)) //smoke only - var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() - smoke.set_up(3, 0, src.loc) - smoke.attach(src) - smoke.start() + return 1 /obj/machinery/power/smes/proc/inputting(var/do_input) input_attempt = do_input @@ -412,6 +423,21 @@ if(!output_attempt) outputting = 0 +/obj/machinery/power/smes/take_damage(var/amount) + amount = max(0, round(amount)) + damage += amount + if(damage > maxdamage) + visible_message("\The [src] explodes in large shower of sparks and smoke!") + // Depending on stored charge percentage cause damage. + switch(Percentage()) + if(75 to INFINITY) + explosion(get_turf(src), 1, 2, 4) + if(40 to 74) + explosion(get_turf(src), 0, 2, 3) + if(5 to 39) + explosion(get_turf(src), 0, 1, 2) + qdel(src) // Either way we want to ensure the SMES is deleted. + /obj/machinery/power/smes/emp_act(severity) inputting(rand(0,1)) outputting(rand(0,1)) @@ -423,13 +449,27 @@ update_icon() ..() -/obj/machinery/power/smes/magical - name = "magical power storage unit" - desc = "A high-capacity superconducting magnetic energy storage (SMES) unit. Magically produces power." - capacity = 9000000 - output_level = 250000 - should_be_mapped = 1 +/obj/machinery/power/smes/bullet_act(var/obj/item/projectile/Proj) + if(Proj.damage_type == BRUTE || Proj.damage_type == BURN) + take_damage(Proj.damage) -/obj/machinery/power/smes/magical/process() - charge = 5000000 +/obj/machinery/power/smes/ex_act(var/severity) + // Two strong explosions will destroy a SMES. + // Given the SMES creates another explosion on it's destruction it sounds fairly reasonable. + take_damage(250 / severity) + +/obj/machinery/power/smes/examine(var/mob/user) ..() + to_chat(user, "The service hatch is [panel_open ? "open" : "closed"].") + if(!damage) + return + var/damage_percentage = round((damage / maxdamage) * 100) + switch(damage_percentage) + if(75 to INFINITY) + to_chat(user, "It's casing is severely damaged, and sparking circuitry may be seen through the holes!") + if(50 to 74) + to_chat(user, "It's casing is considerably damaged, and some of the internal circuits appear to be exposed!") + if(25 to 49) + to_chat(user, "It's casing is quite seriously damaged.") + if(0 to 24) + to_chat(user, "It's casing has some minor damage.") \ No newline at end of file diff --git a/code/modules/power/smes_construction.dm b/code/modules/power/smes_construction.dm index 6a9e6bfaff..aadcc41ec4 100644 --- a/code/modules/power/smes_construction.dm +++ b/code/modules/power/smes_construction.dm @@ -113,7 +113,7 @@ to_chat(usr, "Connection error: Destination Unreachable.") // Cyborgs standing next to the SMES can play with the wiring. - if(istype(usr, /mob/living/silicon/robot) && Adjacent(usr) && open_hatch) + if(istype(usr, /mob/living/silicon/robot) && Adjacent(usr) && panel_open) wires.Interact(usr) // Proc: New() @@ -136,7 +136,7 @@ // Description: Opens the UI as usual, and if cover is removed opens the wiring panel. /obj/machinery/power/smes/buildable/attack_hand() ..() - if(open_hatch) + if(panel_open) wires.Interact(usr) // Proc: recalc_coils() @@ -329,7 +329,7 @@ // Crowbar - Disassemble the SMES. if(W.is_crowbar()) - if (terminal) + if (terminals.len) to_chat(user, "You have to disassemble the terminal first!") return diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 8430b717ca..b89b906e8a 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -131,6 +131,16 @@ return SUPERMATTER_INACTIVE +/obj/machinery/power/supermatter/proc/get_epr() + var/turf/T = get_turf(src) + if(!istype(T)) + return + var/datum/gas_mixture/air = T.return_air() + if(!air) + return 0 + return round((air.total_moles / air.group_multiplier) / 23.1, 0.01) + + /obj/machinery/power/supermatter/proc/explode() message_admins("Supermatter exploded at ([x],[y],[z] - JMP)",0,1) log_game("SUPERMATTER([x],[y],[z]) Exploded. Power:[power], Oxygen:[oxygen], Damage:[damage], Integrity:[get_integrity()]") diff --git a/code/modules/power/terminal.dm b/code/modules/power/terminal.dm index 2c01476a7a..7846ff6ff1 100644 --- a/code/modules/power/terminal.dm +++ b/code/modules/power/terminal.dm @@ -22,7 +22,7 @@ /obj/machinery/power/terminal/Destroy() if(master) - master.disconnect_terminal() + master.disconnect_terminal(src) master = null return ..() @@ -33,11 +33,6 @@ /obj/machinery/power/terminal/hides_under_flooring() return 1 -// Needed so terminals are not removed from machines list. -// Powernet rebuilds need this to work properly. -/obj/machinery/power/terminal/process() - return 1 - /obj/machinery/power/terminal/overload(var/obj/machinery/power/source) if(master) master.overload(source) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 20463bf05b..5a8c807642 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -71,10 +71,9 @@ energy = 0 // ensure we dont have miniballs of miniballs /obj/singularity/energy_ball/examine(mob/user) - ..() + . = ..() if(orbiting_balls.len) - to_chat(user, "The amount of orbiting mini-balls is [orbiting_balls.len].") - + . += "The amount of orbiting mini-balls is [orbiting_balls.len]." /obj/singularity/energy_ball/proc/move_the_basket_ball(var/move_amount) //we face the last thing we zapped, so this lets us favor that direction a bit diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 29a1db0e16..2caa008f0c 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -28,6 +28,7 @@ icon_state = "compressor" anchored = TRUE density = TRUE + can_atmos_pass = ATMOS_PASS_PROC circuit = /obj/item/weapon/circuitboard/machine/power_compressor var/obj/machinery/power/turbine/turbine var/datum/gas_mixture/gas_contained @@ -96,7 +97,7 @@ // When anchored, don't let air past us. /obj/machinery/compressor/CanZASPass(turf/T, is_zone) - return anchored ? ATMOS_PASS_NO : ATMOS_PASS_YES + return !anchored /obj/machinery/compressor/proc/locate_machinery() if(turbine) diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 4ac7144069..b07cacd92b 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -51,9 +51,9 @@ icon_state = "[initial(icon_state)]-spent" /obj/item/ammo_casing/examine(mob/user) - ..() + . = ..() if (!BB) - to_chat(user, "This one is spent.") + . += "This one is spent." //Gun loading types #define SINGLE_CASING 1 //The gun only accepts ammo_casings. ammo_magazines should never have this as their mag_type. @@ -183,8 +183,8 @@ icon_state = (new_state)? new_state : initial(icon_state) /obj/item/ammo_magazine/examine(mob/user) - ..() - to_chat(user, "There [(stored_ammo.len == 1)? "is" : "are"] [stored_ammo.len] round\s left!") + . = ..() + . += "There [(stored_ammo.len == 1)? "is" : "are"] [stored_ammo.len] round\s left!" //magazine icon state caching /var/global/list/magazine_icondata_keys = list() diff --git a/code/modules/projectiles/ammunition/magnetic.dm b/code/modules/projectiles/ammunition/magnetic.dm index b3e9c3a7c8..787ca15302 100644 --- a/code/modules/projectiles/ammunition/magnetic.dm +++ b/code/modules/projectiles/ammunition/magnetic.dm @@ -11,4 +11,4 @@ /obj/item/weapon/magnetic_ammo/examine(mob/user) . = ..() - to_chat(user, "There [(remaining == 1)? "is" : "are"] [remaining] flechette\s left!") \ No newline at end of file + . += "There [(remaining == 1)? "is" : "are"] [remaining] flechette\s left!" \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm index b187f325bd..1dd8f6e149 100644 --- a/code/modules/projectiles/ammunition/rounds.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -287,6 +287,14 @@ projectile_type = /obj/item/projectile/bullet/rifle/a145 matter = list(DEFAULT_WALL_MATERIAL = 1250) +/obj/item/ammo_casing/a145/highvel + desc = "A 14.5mm sabot shell." + projectile_type = /obj/item/projectile/bullet/rifle/a145 + +/obj/item/ammo_casing/a145/spent/Initialize() + ..() + expend() + /* * 5.45mm */ diff --git a/code/modules/projectiles/ammunition/smartmag.dm b/code/modules/projectiles/ammunition/smartmag.dm index 3668145b41..81a299d5ee 100644 --- a/code/modules/projectiles/ammunition/smartmag.dm +++ b/code/modules/projectiles/ammunition/smartmag.dm @@ -50,12 +50,12 @@ produce() /obj/item/ammo_magazine/smart/examine(mob/user) - ..() + . = ..() if(attached_cell) - to_chat(user, "\The [src] is loaded with a [attached_cell.name]. It is [round(attached_cell.percent())]% charged.") + . += "\The [src] is loaded with a [attached_cell.name]. It is [round(attached_cell.percent())]% charged." else - to_chat(user, "\The [src] does not appear to have a power source installed.") + . += "\The [src] does not appear to have a power source installed." /obj/item/ammo_magazine/smart/update_icon() if(attached_cell) diff --git a/code/modules/projectiles/broken.dm b/code/modules/projectiles/broken.dm new file mode 100644 index 0000000000..9dd3107d6e --- /dev/null +++ b/code/modules/projectiles/broken.dm @@ -0,0 +1,135 @@ + +/obj/item/weapon/broken_gun + desc = "The remains of an unfortunate firearm." + + var/obj/item/weapon/gun/my_guntype = null + + // Materials needed for repair. Associative list, path - number of items + var/list/material_needs + + var/do_rotation = TRUE + +/obj/item/weapon/broken_gun/New(var/newloc, var/path) + ..() + if(path) + if(!setup_gun(path)) + qdel(src) + return + setup_repair_needs() + +/obj/item/weapon/broken_gun/Initialize() + ..() + spawn(30 SECONDS) + if(!my_guntype && !QDELETED(src)) + qdel(src) + +/obj/item/weapon/broken_gun/examine(mob/user) + . = ..() + spawn() + if(get_dist(get_turf(user),get_turf(src)) <= 1) + to_chat(user, "You begin inspecting \the [src].") + + if(do_after(user, 5 SECONDS)) + to_chat(user, "\The [src] can possibly be restored with:") + for(var/resource in material_needs) + if(material_needs[resource] > 0) + to_chat(user, "- [bicon(resource)] x [material_needs[resource]] [resource]") + +/obj/item/weapon/broken_gun/proc/setup_gun(var/obj/item/weapon/gun/path) + if(ispath(path)) + name = "[pick("busted", "broken", "shattered", "scrapped")] [initial(path.name)]" + icon = initial(path.icon) + icon_state = initial(path.icon_state) + + my_guntype = path + + w_class = initial(path.w_class) + + if(do_rotation) + adjust_rotation(rand() * pick(-1,1) * rand(0, 45)) + + return TRUE + + return FALSE + +/obj/item/weapon/broken_gun/proc/setup_repair_needs() + if(!LAZYLEN(material_needs)) + material_needs = list() + + if(prob(40)) + var/chosen_mat = pick(/obj/item/stack/material/plastic, /obj/item/stack/material/plasteel, /obj/item/stack/material/glass) + material_needs[chosen_mat] = rand(1, 3) + + if(prob(30)) + var/component_needed = pick(/obj/item/weapon/stock_parts/gear,/obj/item/weapon/stock_parts/spring,/obj/item/weapon/stock_parts/manipulator) + material_needs[component_needed] = rand(1,3) + + if(ispath(my_guntype, /obj/item/weapon/gun/energy) && prob(25)) + var/component_needed = pick(/obj/item/stack/cable_coil, /obj/item/weapon/stock_parts/scanning_module,/obj/item/weapon/stock_parts/capacitor) + 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) + material_needs[component_needed] = 1 + + if(ispath(my_guntype, /obj/item/weapon/gun/magnetic) && prob(70)) + var/component_needed = pick(/obj/item/weapon/smes_coil, /obj/item/device/assembly/prox_sensor, /obj/item/weapon/module/power_control) + material_needs[component_needed] = 1 + + material_needs[/obj/item/stack/material/steel] = rand(1,5) + +/obj/item/weapon/broken_gun/attackby(obj/item/W as obj, mob/user as mob) + if(can_repair_with(W, user)) + if(do_after(user, (rand() * 10 SECONDS) + 5 SECONDS)) + repair_with(W, user) + return + + ..() + +/obj/item/weapon/broken_gun/proc/can_repair_with(obj/item/I, mob/user) + for(var/path in material_needs) + if(ispath(path) && istype(I, path)) + if(material_needs[path] > 0) + if(istype(I, /obj/item/stack)) + var/obj/item/stack/S = I + if(S.can_use(material_needs[path])) + return TRUE + else + to_chat(user, "You do not have enough [path] to continue repairs.") + else + return TRUE + + return FALSE + +/obj/item/weapon/broken_gun/proc/repair_with(obj/item/I, mob/user) + for(var/path in material_needs) + if(ispath(path) && istype(I, path)) + if(material_needs[path] > 0) + if(istype(I, /obj/item/stack)) + var/obj/item/stack/S = I + if(S.can_use(material_needs[path])) + S.use(material_needs[path]) + material_needs[path] = 0 + to_chat(user, "You repair some damage on \the [src] with \the [S].") + else + material_needs[path] = max(0, material_needs[path] - 1) + user.drop_from_inventory(I) + to_chat(user, "You repair some damage on \the [src] with \the [I].") + qdel(I) + + check_complete_repair(user) + + return + +/obj/item/weapon/broken_gun/proc/check_complete_repair(mob/user) + var/fully_repaired = TRUE + for(var/resource in material_needs) + if(material_needs[resource] > 0) + fully_repaired = FALSE + break + + if(fully_repaired) + my_guntype = new my_guntype(get_turf(src)) + my_guntype.name = "[pick("salvaged", "repaired", "old")] [initial(my_guntype.name)]" + to_chat(user, "You finish your repairs on \the [my_guntype].") + qdel(src) diff --git a/code/modules/projectiles/brokenguns/energy.dm b/code/modules/projectiles/brokenguns/energy.dm new file mode 100644 index 0000000000..6427e89c27 --- /dev/null +++ b/code/modules/projectiles/brokenguns/energy.dm @@ -0,0 +1,9 @@ + +/obj/item/weapon/broken_gun/laserrifle/New(var/newloc) + ..(newloc, /obj/item/weapon/gun/energy/laser/empty) + +/obj/item/weapon/broken_gun/laser_retro/New(var/newloc) + ..(newloc, /obj/item/weapon/gun/energy/retro/empty) + +/obj/item/weapon/broken_gun/ionrifle/New(var/newloc) + ..(newloc, /obj/item/weapon/gun/energy/ionrifle/empty) diff --git a/code/modules/projectiles/brokenguns/launcher.dm b/code/modules/projectiles/brokenguns/launcher.dm new file mode 100644 index 0000000000..a66449de78 --- /dev/null +++ b/code/modules/projectiles/brokenguns/launcher.dm @@ -0,0 +1,3 @@ + +/obj/item/weapon/broken_gun/grenadelauncher/New(var/newloc) + ..(newloc, /obj/item/weapon/gun/launcher/grenade) diff --git a/code/modules/projectiles/brokenguns/magnetic.dm b/code/modules/projectiles/brokenguns/magnetic.dm new file mode 100644 index 0000000000..dd1c647fd8 --- /dev/null +++ b/code/modules/projectiles/brokenguns/magnetic.dm @@ -0,0 +1,3 @@ + +/obj/item/weapon/broken_gun/flechette/New(var/newloc) + ..(newloc, /obj/item/weapon/gun/magnetic/railgun/flechette) diff --git a/code/modules/projectiles/brokenguns/projectile.dm b/code/modules/projectiles/brokenguns/projectile.dm new file mode 100644 index 0000000000..741e4bf087 --- /dev/null +++ b/code/modules/projectiles/brokenguns/projectile.dm @@ -0,0 +1,18 @@ + +/obj/item/weapon/broken_gun/c20r/New(var/newloc) + ..(newloc, /obj/item/weapon/gun/projectile/automatic/c20r/empty) + +/obj/item/weapon/broken_gun/silenced45/New(var/newloc) + ..(newloc, /obj/item/weapon/gun/projectile/silenced/empty) + +/obj/item/weapon/broken_gun/pumpshotgun/New(var/newloc) + ..(newloc, /obj/item/weapon/gun/projectile/shotgun/pump/empty) + +/obj/item/weapon/broken_gun/pumpshotgun_combat/New(var/newloc) + ..(newloc, /obj/item/weapon/gun/projectile/shotgun/pump/combat/empty) + +/obj/item/weapon/broken_gun/z8/New(var/newloc) + ..(newloc, /obj/item/weapon/gun/projectile/automatic/z8/empty) + +/obj/item/weapon/broken_gun/dartgun/New(var/newloc) + ..(newloc, /obj/item/weapon/gun/projectile/dartgun) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 561ebeb641..f7372bbdf6 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -745,7 +745,7 @@ . = ..() if(firemodes.len > 1) var/datum/firemode/current_mode = firemodes[sel_mode] - to_chat(user, "The fire selector is set to [current_mode.name].") + . += "The fire selector is set to [current_mode.name]." /obj/item/weapon/gun/proc/switch_firemodes(mob/user) if(firemodes.len <= 1) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 43263bf54a..bff75f27f7 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -76,7 +76,7 @@ var/start_nutrition = H.nutrition var/end_nutrition = 0 - H.nutrition -= rechargeamt / 15 + H.adjust_nutrition(-rechargeamt / 15) end_nutrition = H.nutrition @@ -178,12 +178,11 @@ if(power_supply) if(charge_cost) var/shots_remaining = round(power_supply.charge / max(1, charge_cost)) // Paranoia - to_chat(user, "Has [shots_remaining] shot\s remaining.") + . += "Has [shots_remaining] shot\s remaining." else - to_chat(user, "Has infinite shots remaining.") + . += "Has infinite shots remaining." else - to_chat(user, "Does not have a power cell.") - return + . += "Does not have a power cell." /obj/item/weapon/gun/energy/update_icon(var/ignore_inhands) if(power_supply == null) diff --git a/code/modules/projectiles/guns/energy/bsharpoon_vr.dm b/code/modules/projectiles/guns/energy/bsharpoon_vr.dm index 99598504b4..9e9967289f 100644 --- a/code/modules/projectiles/guns/energy/bsharpoon_vr.dm +++ b/code/modules/projectiles/guns/energy/bsharpoon_vr.dm @@ -14,22 +14,69 @@ origin_tech = list(TECH_BLUESPACE = 5) var/mode = 1 // 1 mode - teleport you to turf 0 mode teleport turf to you - var/last_fire = 0 + var/firable = TRUE var/transforming = 0 + var/failure_chance = 15 // This can become negative with part tiers above 3, which helps offset penalties + var/obj/item/weapon/stock_parts/scanning_module/scanmod + +/obj/item/weapon/bluespace_harpoon/Initialize() + . = ..() + scanmod = new(src) + update_fail_chance() + +/obj/item/weapon/bluespace_harpoon/examine(var/mob/user) + . = ..() + if(Adjacent(user)) + . += "It has [scanmod ? scanmod : "no scanner module"] installed." + +/obj/item/weapon/bluespace_harpoon/proc/update_fail_chance() + if(scanmod) + failure_chance = initial(failure_chance) - (scanmod.rating * 5) + else + failure_chance = 75 // You can't even use it if there's no scanmod, but why not. + +/obj/item/weapon/bluespace_harpoon/attackby(var/obj/item/I, var/mob/living/user) + if(!istype(user)) + return + + if(I.is_screwdriver()) + if(!scanmod) + to_chat(user, "There's no scanner module installed!") + return + var/turf/T = get_turf(src) + to_chat(user, "You remove [scanmod] from [src].") + playsound(T, I.usesound, 75, 1) + scanmod.forceMove(T) + scanmod = null + update_fail_chance() + else if(istype(I, /obj/item/weapon/stock_parts/scanning_module)) + if(scanmod) + to_chat(user, "There's already [scanmod] installed! Remove it first.") + return + user.remove_from_mob(I) + I.forceMove(src) + scanmod = I + to_chat(user, "You install [scanmod] into [src].") + update_fail_chance() + else + return ..() /obj/item/weapon/bluespace_harpoon/afterattack(atom/A, mob/user as mob) - var/current_fire = world.time - if(!user || !A) + if(!user || !A || isstorage(A)) + return + if(!scanmod) + to_chat(user,"The scanning module has been removed from [src]!") return if(transforming) to_chat(user,"You can't fire while \the [src] transforming!") return - if(!(current_fire - last_fire >= 30 SECONDS)) + if(!firable) to_chat(user,"\The [src] is recharging...") return if(is_jammed(A) || is_jammed(user)) + firable = FALSE + VARSET_IN(src, firable, TRUE, 30 SECONDS) to_chat(user,"\The [src] shot fizzles due to interference!") - last_fire = current_fire playsound(user, 'sound/weapons/wave.ogg', 60, 1) return var/turf/T = get_turf(A) @@ -47,7 +94,8 @@ to_chat(user, "Harpoon fails to lock on the obstructed target!") return - last_fire = current_fire + firable = FALSE + VARSET_IN(src, firable, TRUE, 30 SECONDS) playsound(user, 'sound/weapons/wave.ogg', 60, 1) user.visible_message("[user] fires \the [src]!","You fire \the [src]!") @@ -62,8 +110,8 @@ var/turf/FromTurf = mode ? get_turf(user) : get_turf(A) var/turf/ToTurf = mode ? get_turf(A) : get_turf(user) - var/recievefailchance = 5 - var/sendfailchance = 5 + var/recievefailchance = failure_chance + var/sendfailchance = failure_chance if(istype(user, /mob/living)) var/mob/living/L = user if(LAZYLEN(L.buckled_mobs)) diff --git a/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m.dm index 025ca96e1f..1c33ea75bb 100644 --- a/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m.dm +++ b/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m.dm @@ -21,6 +21,7 @@ icon_state = "ml3m_cmo" + // The Magazine // /obj/item/ammo_magazine/cell_mag/medical //medical name = "nanite magazine" @@ -69,4 +70,4 @@ new /obj/item/ammo_casing/microbattery/medical/burn(src) new /obj/item/ammo_casing/microbattery/medical/stabilize(src) new /obj/item/ammo_casing/microbattery/medical/toxin(src) - new /obj/item/ammo_casing/microbattery/medical/omni(src) \ No newline at end of file + new /obj/item/ammo_casing/microbattery/medical/omni(src) diff --git a/code/modules/projectiles/guns/energy/cell_loaded_vr/multi_cannon.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/multi_cannon.dm new file mode 100644 index 0000000000..cc8240b9af --- /dev/null +++ b/code/modules/projectiles/guns/energy/cell_loaded_vr/multi_cannon.dm @@ -0,0 +1,59 @@ +//Why is this in here when it's not a subtype of cell_loaded? Because it has a similar function, and I couldn't be assed to find a better suited spot. + +/obj/item/weapon/gun/projectile/multi_cannon + name = "Curabitur Cannon" + desc = "A cannon developed by Curabitur Scimed, this weapon incorporates both Vey-Med and precursor technology to create a medical alternative to chemicals on the field." + icon = 'icons/vore/custom_guns_vr.dmi' + icon_state = "healcannon" + + description_info = "Created to fulfill the needs and wants of the Curabitur Scimed personell during rescue operations, the Healcannon is a marvel of reverse-engineering and utilization of unknown technologies. \ + It makes use of the Vey-Med ML-3 'Medigun' microbattery technology, combining the effects of multiple 'microbatteries' into single 'macrobatteries' that are built around precursor void cores, \ + allowing for the batteries to self-charge for prolonged field use. However, the weakened beams caused by the use of ununderstood technology created a need for a VERY strong focus, \ + which lead to the Healcannon becoming a very bulky tool. Fortunately, it's not as heavy as it looks." + + w_class = ITEMSIZE_LARGE + load_method = SINGLE_CASING + max_shells = 1 + handle_casings = HOLD_CASINGS + auto_eject = FALSE + caliber = "macrobat" + icon_override = 'icons/vore/custom_guns_vr.dmi' + item_state = "multicannon" + slot_flags = SLOT_BACK + +/obj/item/weapon/gun/projectile/multi_cannon/update_icon() + . = ..() + cut_overlays() + var/istate = "healcannon_0" + var/indicator_colour = null + if(istype(chambered,/obj/item/ammo_casing/macrobattery)) //should never not happen. but. you never, never know with this damn, cursed game. + var/obj/item/ammo_casing/macrobattery/bat = chambered + indicator_colour = bat.bat_colour + if(bat.charge) + istate = "healcannon_20" + var/percent_charged = round((bat.charge/bat.max_charge)*100) + switch(percent_charged) + if(21 to 40) + istate = "healcannon_40" + if(41 to 60) + istate = "healcannon_60" + if(61 to 80) + istate = "healcannon_80" + if(81 to INFINITY)//gotta cover any admemes/other ways to get above max charge here. + istate = "healcannon_100" + else + indicator_colour = null + + var/image/x = image(icon = icon, icon_state = istate) + x.color = indicator_colour + add_overlay(x) + +/obj/item/weapon/gun/projectile/multi_cannon/load_ammo() + .=..() + consume_next_projectile() + update_icon() + +/obj/item/weapon/gun/projectile/multi_cannon/unload_ammo(mob/user, var/allow_dump=1) + .=..() + update_icon() + chambered = null \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/cell_loaded_vr/multi_cannon_cells.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/multi_cannon_cells.dm new file mode 100644 index 0000000000..3df1ef5022 --- /dev/null +++ b/code/modules/projectiles/guns/energy/cell_loaded_vr/multi_cannon_cells.dm @@ -0,0 +1,100 @@ +/obj/item/ammo_casing/macrobattery + caliber = "macrobat" + name = "macrobattery" + icon = 'icons/obj/ammo_vr.dmi' + icon_state = "macrobat_wtf" + desc = "A large nanite fabricator for a medigun. Powered by a mix of precursor and modern tech, this fancy device recharges without an outside power source." + + projectile_type = /obj/item/projectile/beam/chain_lightning //why the hell not + + var/bat_colour = "#ff33cc" + var/charge + var/max_charge = 10 + var/ticks = 1 + var/ticks_to_charge = 5 //10 secs per shot charged + +/obj/item/ammo_casing/macrobattery/Initialize(mapload, ...) + . = ..() + START_PROCESSING(SSobj, src) + charge = max_charge + +/obj/item/ammo_casing/macrobattery/Destroy() + STOP_PROCESSING(SSobj, src) + . = ..() + +/obj/item/ammo_casing/macrobattery/process() + ticks++ + if(ticks%ticks_to_charge == 0) + recharge() + if(charge >= max_charge) + return PROCESS_KILL + +/obj/item/ammo_casing/macrobattery/expend() + if(charge) + charge -- + ticks = 1 //so we have to start over on the charge time. + START_PROCESSING(SSobj, src) + . = BB + //alright, the below seems jank. it IS jank, but for whatever reason I can't reuse BB. big bad + BB = null + BB = new projectile_type + return + else + BB = null + return null + +/obj/item/ammo_casing/macrobattery/proc/recharge() + if(charge < max_charge) + charge ++ + if(!BB) + BB = new projectile_type + if(charge >= max_charge) + STOP_PROCESSING(SSobj, src) + if(istype(loc,/obj/item/weapon/gun/projectile/multi_cannon)) + loc.update_icon() + +//variants here, there's not many of them. + +/obj/item/ammo_casing/macrobattery/stabilize + name = "Macrobattery - STABILIZE" + icon_state = "macrobat_stabilize" + bat_colour = "#3399ff" + projectile_type = /obj/item/projectile/beam/medical_cell/stabilize2 + +/obj/item/ammo_casing/macrobattery/buff + name = "Macrobattery - BOOSTER" + icon_state = "macrobat_uber" + bat_colour = "#993300" + projectile_type = /obj/item/projectile/beam/medical_cell/resist + +/obj/item/ammo_casing/macrobattery/detox + name = "Macrobattery - DETOX" + icon_state = "macrobat_purifier" + bat_colour = "#339933" + projectile_type = /obj/item/projectile/beam/medical_cell/detox + +/obj/item/ammo_casing/macrobattery/ouchie + name = "Macrobattery - LETHAL" + icon_state = "macrobat_ouchie" + bat_colour = "#cc3300" + projectile_type = /obj/item/projectile/beam + +/obj/item/ammo_casing/macrobattery/healie + name = "Macrobattery - RESTORE" + icon_state = "macrobat_inverseouchie" + bat_colour = "#ff9966" + projectile_type = /obj/item/projectile/beam/medical_cell/phys_heal + +/obj/item/projectile/beam/medical_cell/phys_heal/on_hit(var/mob/living/carbon/human/target) + if(istype(target, /mob/living/carbon/human)) + target.adjustBruteLoss(-20) + target.adjustFireLoss(-20) + else + return 1 + +/obj/item/projectile/beam/medical_cell/detox/on_hit(var/mob/living/carbon/human/target) + if(istype(target, /mob/living/carbon/human)) + target.adjustToxLoss(-15) + target.radiation = max(target.radiation - 75, 0) //worse than mlem for rad, better for tox. + else + return 1 \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/gunsword_vr.dm b/code/modules/projectiles/guns/energy/gunsword_vr.dm index f6bb1a3026..54f689133d 100644 --- a/code/modules/projectiles/guns/energy/gunsword_vr.dm +++ b/code/modules/projectiles/guns/energy/gunsword_vr.dm @@ -6,14 +6,13 @@ icon_state = "gbuster100" icon_override = 'icons/vore/custom_guns_vr.dmi' - item_state = null - item_icons = null + item_state = "gbuster" + item_icons = list(slot_r_hand_str = 'icons/vore/custom_guns_vr.dmi', slot_l_hand_str = 'icons/vore/custom_guns_vr.dmi', "slot_belt" = 'icons/mob/belt_vr.dmi') w_class = ITEMSIZE_NORMAL origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 4) - slot_flags = null projectile_type = /obj/item/projectile/beam/stun - fire_sound = 'sound/weapons/gauss_shoot.ogg' + fire_sound = 'sound/weapons/Taser.ogg' charge_meter = 1 cell_type = /obj/item/weapon/cell/device/weapon/gunsword @@ -22,7 +21,7 @@ firemodes = list( list(mode_name="stun", charge_cost=240,projectile_type=/obj/item/projectile/beam/stun, modifystate="gbuster", fire_sound='sound/weapons/Taser.ogg'), - list(mode_name="lethal", charge_cost=480,projectile_type=/obj/item/projectile/beam, modifystate="gbuster", fire_sound='sound/weapons/gauss_shoot.ogg'), + list(mode_name="lethal", charge_cost=480,projectile_type=/obj/item/projectile/beam/imperial, modifystate="gbuster", fire_sound='sound/weapons/mandalorian.ogg'), ) diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm index 8a0dbeae4d..bd9ab4d1c3 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm @@ -22,12 +22,12 @@ var/empty_state = "kineticgun_empty" /obj/item/weapon/gun/energy/kinetic_accelerator/examine(mob/user) - if(..(user, 1)) - if(max_mod_capacity) - to_chat(user, "[get_remaining_mod_capacity()]% mod capacity remaining.") - for(var/A in get_modkits()) - var/obj/item/borg/upgrade/modkit/M = A - to_chat(user, "There is a [M.name] mod installed, using [M.cost]% capacity.") + . = ..() + if(Adjacent(user) && max_mod_capacity) + . += "[get_remaining_mod_capacity()]% mod capacity remaining." + for(var/A in get_modkits()) + var/obj/item/borg/upgrade/modkit/M = A + . += "There is a [M.name] mod installed, using [M.cost]% capacity." /obj/item/weapon/gun/energy/kinetic_accelerator/attackby(obj/item/A, mob/user) if(istype(A, /obj/item/weapon/tool/crowbar)) @@ -164,8 +164,9 @@ var/modifier = 1 //For use in any mod kit that has numerical modifiers /obj/item/borg/upgrade/modkit/examine(mob/user) - if(..(user, 1)) - to_chat(user, "Occupies [cost]% of mod capacity.") + . = ..() + if(Adjacent(user)) + . += "Occupies [cost]% of mod capacity." /obj/item/borg/upgrade/modkit/attackby(obj/item/A, mob/user) if(istype(A, /obj/item/weapon/gun/energy/kinetic_accelerator) && !issilicon(user)) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 45c6364c1b..778b36694d 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -19,6 +19,9 @@ list(mode_name="suppressive", fire_delay=5, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60), ) +/obj/item/weapon/gun/energy/laser/empty + cell_type = null + /obj/item/weapon/gun/energy/laser/mounted self_recharge = 1 use_external_power = 1 @@ -175,7 +178,7 @@ force = 10 w_class = ITEMSIZE_HUGE // So it can't fit in a backpack. accuracy = -45 //shooting at the hip - scoped_accuracy = 0 + scoped_accuracy = 50 one_handed_penalty = 60 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand. /obj/item/weapon/gun/energy/sniperrifle/ui_action_click() @@ -192,7 +195,8 @@ name = "antique mono-rifle" desc = "An old laser rifle. This one can only fire once before requiring recharging." description_fluff = "Modeled after ancient hunting rifles, this rifle was dubbed the 'Rainy Day Special' by some, due to its use as some barmens' fight-stopper of choice. One shot is all it takes, or so they say." - icon_state = "eshotgun" + icon = 'icons/obj/energygun.dmi' + icon_state = "mono" item_state = "shotgun" origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_POWER = 3) projectile_type = /obj/item/projectile/beam/sniper @@ -204,6 +208,7 @@ w_class = ITEMSIZE_LARGE accuracy = 10 scoped_accuracy = 15 + charge_meter = FALSE var/scope_multiplier = 1.5 /obj/item/weapon/gun/energy/monorifle/ui_action_click() @@ -220,7 +225,7 @@ name = "combat mono-rifle" desc = "A modernized version of the mono-rifle. This one can fire twice before requiring recharging." description_fluff = "A modern design produced by a company once working from Saint Columbia, based on the antique mono-rifle 'Rainy Day Special' design." - icon_state = "ecshotgun" + icon_state = "cmono" item_state = "cshotgun" charge_cost = 1000 force = 12 diff --git a/code/modules/projectiles/guns/energy/laser_vr.dm b/code/modules/projectiles/guns/energy/laser_vr.dm index 756ef967d5..458442051c 100644 --- a/code/modules/projectiles/guns/energy/laser_vr.dm +++ b/code/modules/projectiles/guns/energy/laser_vr.dm @@ -184,7 +184,7 @@ /obj/item/weapon/gun/energy/locked/special_check(mob/user) if(locked) var/turf/T = get_turf(src) - if(T.z in using_map.map_levels) + if(T.z in using_map.station_levels) to_chat(user, "The safety device prevents the gun from firing this close to the facility.") return 0 return ..() diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 3fe7a4f21c..f47053cba0 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -13,6 +13,9 @@ /obj/item/weapon/gun/energy/ionrifle/emp_act(severity) ..(max(severity, 4)) //so it doesn't EMP itself, I guess +/obj/item/weapon/gun/energy/ionrifle/empty + cell_type = null + /obj/item/weapon/gun/energy/ionrifle/pistol name = "ion pistol" desc = "The NT Mk63 EW Pan is a man portable anti-armor weapon designed to disable mechanical threats, produced by NT. This model sacrifices capacity for portability." diff --git a/code/modules/projectiles/guns/launcher/crossbow.dm b/code/modules/projectiles/guns/launcher/crossbow.dm index b94c2ab232..6669c5082f 100644 --- a/code/modules/projectiles/guns/launcher/crossbow.dm +++ b/code/modules/projectiles/guns/launcher/crossbow.dm @@ -208,18 +208,18 @@ icon_state = "crossbowframe[buildstate]" /obj/item/weapon/crossbowframe/examine(mob/user) - ..(user) + . = ..() switch(buildstate) if(1) - to_chat(user, "It has a loose rod frame in place.") + . += "It has a loose rod frame in place." if(2) - to_chat(user, "It has a steel backbone welded in place.") + . += "It has a steel backbone welded in place." if(3) - to_chat(user, "It has a steel backbone and a cell mount installed.") + . += "It has a steel backbone and a cell mount installed." if(4) - to_chat(user, "It has a steel backbone, plastic lath and a cell mount installed.") + . += "It has a steel backbone, plastic lath and a cell mount installed." if(5) - to_chat(user, "It has a steel cable loosely strung across the lath.") + . += "It has a steel cable loosely strung across the lath." /obj/item/weapon/crossbowframe/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/stack/rods)) diff --git a/code/modules/projectiles/guns/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/launcher/grenade_launcher.dm index c016fe0797..259d5e2e82 100644 --- a/code/modules/projectiles/guns/launcher/grenade_launcher.dm +++ b/code/modules/projectiles/guns/launcher/grenade_launcher.dm @@ -36,11 +36,12 @@ update_icon() /obj/item/weapon/gun/launcher/grenade/examine(mob/user) - if(..(user, 2)) + . = ..() + if(get_dist(user, src) <= 2) var/grenade_count = grenades.len + (chambered? 1 : 0) - to_chat(user, "Has [grenade_count] grenade\s remaining.") + . += "Has [grenade_count] grenade\s remaining." if(chambered) - to_chat(user, "\A [chambered] is chambered.") + . += "\A [chambered] is chambered." /obj/item/weapon/gun/launcher/grenade/proc/load(obj/item/weapon/grenade/G, mob/user) if(G.loadable) diff --git a/code/modules/projectiles/guns/launcher/pneumatic.dm b/code/modules/projectiles/guns/launcher/pneumatic.dm index c9bfa465f6..b8fe6c4e35 100644 --- a/code/modules/projectiles/guns/launcher/pneumatic.dm +++ b/code/modules/projectiles/guns/launcher/pneumatic.dm @@ -99,13 +99,13 @@ return launched /obj/item/weapon/gun/launcher/pneumatic/examine(mob/user) - if(!..(user, 2)) - return - to_chat(user, "The valve is dialed to [pressure_setting]%.") - if(tank) - to_chat(user, "The tank dial reads [tank.air_contents.return_pressure()] kPa.") - else - to_chat(user, "Nothing is attached to the tank valve!") + . = ..() + if(get_dist(user, src) <= 2) + . += "The valve is dialed to [pressure_setting]%." + if(tank) + . += "The tank dial reads [tank.air_contents.return_pressure()] kPa." + else + . += "Nothing is attached to the tank valve!" /obj/item/weapon/gun/launcher/pneumatic/update_release_force(obj/item/projectile) if(tank) @@ -150,18 +150,18 @@ icon_state = "pneumatic[buildstate]" /obj/item/weapon/cannonframe/examine(mob/user) - ..(user) + . = ..() switch(buildstate) if(1) - to_chat(user, "It has a pipe segment installed.") + . += "It has a pipe segment installed." if(2) - to_chat(user, "It has a pipe segment welded in place.") + . += "It has a pipe segment welded in place." if(3) - to_chat(user, "It has an outer chassis installed.") + . += "It has an outer chassis installed." if(4) - to_chat(user, "It has an outer chassis welded in place.") + . += "It has an outer chassis welded in place." if(5) - to_chat(user, "It has a transfer valve installed.") + . += "It has a transfer valve installed." /obj/item/weapon/cannonframe/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/pipe)) diff --git a/code/modules/projectiles/guns/launcher/rocket.dm b/code/modules/projectiles/guns/launcher/rocket.dm index 13bb0025d6..3e108b2982 100644 --- a/code/modules/projectiles/guns/launcher/rocket.dm +++ b/code/modules/projectiles/guns/launcher/rocket.dm @@ -17,9 +17,9 @@ var/list/rockets = new/list() /obj/item/weapon/gun/launcher/rocket/examine(mob/user) - if(!..(user, 2)) - return - to_chat(user, "[rockets.len] / [max_rockets] rockets.") + . = ..() + if(get_dist(user, src) <= 2) + . += "[rockets.len] / [max_rockets] rockets." /obj/item/weapon/gun/launcher/rocket/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/ammo_casing/rocket)) diff --git a/code/modules/projectiles/guns/magnetic/bore.dm b/code/modules/projectiles/guns/magnetic/bore.dm index 4cb86a6d31..9d59dbbe1d 100644 --- a/code/modules/projectiles/guns/magnetic/bore.dm +++ b/code/modules/projectiles/guns/magnetic/bore.dm @@ -24,7 +24,9 @@ /obj/item/weapon/gun/magnetic/matfed/examine(mob/user) . = ..() - show_ammo(user) + var/ammotext = show_ammo() + if(ammotext) + . += ammotext /obj/item/weapon/gun/magnetic/matfed/update_icon() var/list/overlays_to_add = list() @@ -69,9 +71,9 @@ /obj/item/weapon/gun/magnetic/matfed/use_ammo() mat_storage -= mat_cost -/obj/item/weapon/gun/magnetic/matfed/show_ammo(var/mob/user) +/obj/item/weapon/gun/magnetic/matfed/show_ammo() if(mat_storage) - to_chat(user, "It has [mat_storage] out of [max_mat_storage] units of [ammo_material] loaded.") + return list("It has [mat_storage] out of [max_mat_storage] units of [ammo_material] loaded.") /obj/item/weapon/gun/magnetic/matfed/attackby(var/obj/item/thing, var/mob/user) if(removable_components) diff --git a/code/modules/projectiles/guns/magnetic/gasthrower.dm b/code/modules/projectiles/guns/magnetic/gasthrower.dm index 742b5bd6c5..8132644bf9 100644 --- a/code/modules/projectiles/guns/magnetic/gasthrower.dm +++ b/code/modules/projectiles/guns/magnetic/gasthrower.dm @@ -65,14 +65,14 @@ Tank.air_contents.remove(moles_to_pull) /obj/item/weapon/gun/magnetic/gasthrower/show_ammo(var/mob/user) - ..() + . = ..() if(loaded) var/obj/item/weapon/tank/T = loaded - to_chat(user, "\The [T]'s pressure meter shows: [T.air_contents.return_pressure()] kpa.") + . += "\The [T]'s pressure meter shows: [T.air_contents.return_pressure()] kpa." switch(check_ammo()) if(TRUE) - to_chat(user, "\The [src]'s display registers a proper fuel mixture.") + . += "\The [src]'s display registers a proper fuel mixture." if(FALSE) - to_chat(user, "\The [src]'s display registers an improper fuel mixture.") + . += "\The [src]'s display registers an improper fuel mixture." diff --git a/code/modules/projectiles/guns/magnetic/magnetic.dm b/code/modules/projectiles/guns/magnetic/magnetic.dm index c327a2b51e..8c6d007fc0 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic.dm @@ -66,28 +66,30 @@ overlays = overlays_to_add ..() -/obj/item/weapon/gun/magnetic/proc/show_ammo(var/mob/user) +/obj/item/weapon/gun/magnetic/proc/show_ammo() + var/list/ammotext = list() if(loaded) - to_chat(user, "It has \a [loaded] loaded.") + ammotext += "It has \a [loaded] loaded." + + return ammotext /obj/item/weapon/gun/magnetic/examine(var/mob/user) - . = ..(user, 2) - if(.) - show_ammo(user) + . = ..() + if(get_dist(user, src) <= 2) + . += show_ammo() if(cell) - to_chat(user, "The installed [cell.name] has a charge level of [round((cell.charge/cell.maxcharge)*100)]%.") + . += "The installed [cell.name] has a charge level of [round((cell.charge/cell.maxcharge)*100)]%." if(capacitor) - to_chat(user, "The installed [capacitor.name] has a charge level of [round((capacitor.charge/capacitor.max_charge)*100)]%.") + . += "The installed [capacitor.name] has a charge level of [round((capacitor.charge/capacitor.max_charge)*100)]%." if(!cell || !capacitor) - to_chat(user, "The capacitor charge indicator is blinking red. Maybe you should check the cell or capacitor.") + . += "The capacitor charge indicator is blinking red. Maybe you should check the cell or capacitor." else if(capacitor.charge < power_cost) - to_chat(user, "The capacitor charge indicator is amber.") + . += "The capacitor charge indicator is amber." else - to_chat(user, "The capacitor charge indicator is green.") - return TRUE + . += "The capacitor charge indicator is green." /obj/item/weapon/gun/magnetic/attackby(var/obj/item/thing, var/mob/user) diff --git a/code/modules/projectiles/guns/magnetic/magnetic_construction.dm b/code/modules/projectiles/guns/magnetic/magnetic_construction.dm index f37c44849c..637f2460a6 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic_construction.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic_construction.dm @@ -88,22 +88,22 @@ icon_state = "coilgun_construction_[construction_stage]" /obj/item/weapon/coilgun_assembly/examine(var/mob/user) - . = ..(user,2) - if(.) + . = ..() + if(get_dist(user, src) <= 2) switch(construction_stage) if(2) - to_chat(user, "It has a metal frame loosely shaped around the stock.") + . += "It has a metal frame loosely shaped around the stock." if(3) - to_chat(user, "It has a metal frame duct-taped to the stock.") + . += "It has a metal frame duct-taped to the stock." if(4) - to_chat(user, "It has a length of pipe attached to the body.") + . += "It has a length of pipe attached to the body." if(4) - to_chat(user, "It has a length of pipe welded to the body.") + . += "It has a length of pipe welded to the body." if(6) - to_chat(user, "It has a cable mount and capacitor jack wired to the frame.") + . += "It has a cable mount and capacitor jack wired to the frame." if(7) - to_chat(user, "It has a single superconducting coil threaded onto the barrel.") + . += "It has a single superconducting coil threaded onto the barrel." if(8) - to_chat(user, "It has a pair of superconducting coils threaded onto the barrel.") + . += "It has a pair of superconducting coils threaded onto the barrel." if(9) - to_chat(user, "It has three superconducting coils attached to the body, waiting to be secured.") + . += "It has three superconducting coils attached to the body, waiting to be secured." diff --git a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm index 158ed31f67..dbcc1a1b41 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm @@ -31,12 +31,12 @@ // Not going to check type repeatedly, if you code or varedit // load_type and get runtime errors, don't come crying to me. -/obj/item/weapon/gun/magnetic/railgun/show_ammo(var/mob/user) +/obj/item/weapon/gun/magnetic/railgun/show_ammo() var/obj/item/weapon/rcd_ammo/ammo = loaded if (ammo) - to_chat(user, "There are [ammo.remaining] shot\s remaining in \the [loaded].") + return list("There are [ammo.remaining] shot\s remaining in \the [loaded].") else - to_chat(user, "There is nothing loaded.") + return list("There is nothing loaded.") /obj/item/weapon/gun/magnetic/railgun/check_ammo() var/obj/item/weapon/rcd_ammo/ammo = loaded @@ -77,9 +77,9 @@ ) /obj/item/weapon/gun/magnetic/railgun/automatic/examine(var/mob/user) - . = ..(user,1) - if(.) - to_chat(user, "Someone has scratched Ultima Ratio Regum onto the side of the barrel.") + . = ..() + if(Adjacent(user)) + . += "Someone has scratched Ultima Ratio Regum onto the side of the barrel." /obj/item/weapon/gun/magnetic/railgun/flechette name = "flechette gun" diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index b7b797a1a3..d0d321b299 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -230,11 +230,10 @@ update_icon() //make sure to do this after unsetting ammo_magazine /obj/item/weapon/gun/projectile/examine(mob/user) - ..(user) + . = ..() if(ammo_magazine) - to_chat(user, "It has \a [ammo_magazine] loaded.") - to_chat(user, "Has [getAmmo()] round\s remaining.") - return + . += "It has \a [ammo_magazine] loaded." + . += "It has [getAmmo()] round\s remaining." /obj/item/weapon/gun/projectile/proc/getAmmo() var/bullets = 0 diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index c48bc499aa..d3903c21a8 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -58,6 +58,9 @@ // one_handed_penalty = 15 +/obj/item/weapon/gun/projectile/automatic/c20r/empty + magazine_type = null + /obj/item/weapon/gun/projectile/automatic/c20r/update_icon() ..() if(ammo_magazine) @@ -186,11 +189,14 @@ return /obj/item/weapon/gun/projectile/automatic/z8/examine(mob/user) - ..() + . = ..() if(launcher.chambered) - to_chat(user, "\The [launcher] has \a [launcher.chambered] loaded.") + . += "\The [launcher] has \a [launcher.chambered] loaded." else - to_chat(user, "\The [launcher] is empty.") + . += "\The [launcher] is empty." + +/obj/item/weapon/gun/projectile/automatic/z8/empty + magazine_type = null /obj/item/weapon/gun/projectile/automatic/l6_saw name = "light machine gun" diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm index 861773521b..c0a6180352 100644 --- a/code/modules/projectiles/guns/projectile/dartgun.dm +++ b/code/modules/projectiles/guns/projectile/dartgun.dm @@ -100,16 +100,13 @@ fill_dart(dart) /obj/item/weapon/gun/projectile/dartgun/examine(mob/user) - //update_icon() - //if (!..(user, 2)) - // return - ..() - if (beakers.len) - to_chat(user, "[src] contains:") + . = ..() + if(beakers.len) + . += "[src] contains:" for(var/obj/item/weapon/reagent_containers/glass/beaker/B in beakers) if(B.reagents && B.reagents.reagent_list.len) for(var/datum/reagent/R in B.reagents.reagent_list) - to_chat(user, "[R.volume] units of [R.name]") + . += "[R.volume] units of [R.name]" /obj/item/weapon/gun/projectile/dartgun/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/weapon/reagent_containers/glass)) diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 1acf57b452..b128f18c01 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -125,6 +125,9 @@ allowed_magazines = list(/obj/item/ammo_magazine/m45) projectile_type = /obj/item/projectile/bullet/pistol/medium +/obj/item/weapon/gun/projectile/silenced/empty + magazine_type = null + /obj/item/weapon/gun/projectile/deagle name = "desert eagle" desc = "The perfect handgun for shooters with a need to hit targets through a wall and behind a fridge in your neighbor's house. Uses .44 rounds." diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index c9f6f917c8..e407703498 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -249,14 +249,14 @@ obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun() chamber_offset = rand(0,max_shells - loaded.len) /obj/item/weapon/gun/projectile/revolver/lemat/examine(mob/user) - ..() + . = ..() if(secondary_loaded) var/to_print for(var/round in secondary_loaded) to_print += round - to_chat(user, "\The [src] has a secondary barrel loaded with \a [to_print]") + . += "It has a secondary barrel loaded with \a [to_print]" else - to_chat(user, "\The [src] has a secondary barrel that is empty.") + . += "It has a secondary barrel that is empty." //Ported from Bay diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 74896b6b6a..9862b71b06 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -54,6 +54,9 @@ else icon_state = "[icon_state]-empty" +/obj/item/weapon/gun/projectile/shotgun/pump/empty + ammo_type = null + /obj/item/weapon/gun/projectile/shotgun/pump/slug ammo_type = /obj/item/ammo_casing/a12g @@ -67,6 +70,9 @@ ammo_type = /obj/item/ammo_casing/a12g load_method = SINGLE_CASING|SPEEDLOADER +/obj/item/weapon/gun/projectile/shotgun/pump/combat/empty + ammo_type = null + /obj/item/weapon/gun/projectile/shotgun/doublebarrel name = "double-barreled shotgun" desc = "A truely classic weapon. No need to change what works. Uses 12g rounds." diff --git a/code/modules/projectiles/guns/vox.dm b/code/modules/projectiles/guns/vox.dm index 0a98a1cc61..17f0b6e240 100644 --- a/code/modules/projectiles/guns/vox.dm +++ b/code/modules/projectiles/guns/vox.dm @@ -34,8 +34,8 @@ update_icon() /obj/item/weapon/gun/launcher/spikethrower/examine(mob/user) - ..(user) - to_chat(user, "It has [spikes] spike\s remaining.") + . = ..() + . += "It has [spikes] spike\s remaining." /obj/item/weapon/gun/launcher/spikethrower/update_icon() icon_state = "spikethrower[spikes]" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 3ed6564229..47e9c5f6d6 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -338,14 +338,13 @@ START_PROCESSING(SSprojectiles, src) pixel_move(1, FALSE) //move it now! -/obj/item/projectile/Move(atom/newloc, dir = NONE) +/obj/item/projectile/Moved(atom/old_loc, direction, forced = FALSE) . = ..() - if(.) - if(temporary_unstoppable_movement) - temporary_unstoppable_movement = FALSE - DISABLE_BITFIELD(movement_type, UNSTOPPABLE) - if(fired && can_hit_target(original, permutated, TRUE)) - Bump(original) + if(temporary_unstoppable_movement) + temporary_unstoppable_movement = FALSE + DISABLE_BITFIELD(movement_type, UNSTOPPABLE) + if(fired && can_hit_target(original, permutated, TRUE)) + Bump(original) /obj/item/projectile/proc/after_z_change(atom/olcloc, atom/newloc) diff --git a/code/modules/projectiles/projectile/arc.dm b/code/modules/projectiles/projectile/arc.dm index 12f135a9bb..331bbadb0c 100644 --- a/code/modules/projectiles/projectile/arc.dm +++ b/code/modules/projectiles/projectile/arc.dm @@ -16,6 +16,7 @@ var/visual_y_offset = -16 // Adjusts how high the projectile and its shadow start, visually. This is so the projectile and shadow align with the center of the tile. var/projectile_speed_modifier = 0.5 // Slows it down to make the arcing more noticable, and improve pixel calculation accuracy. var/obj/effect/projectile_shadow/shadow = null // Visual indicator for the projectile's 'true' position. Needed due to being bound to two dimensions in reality. + var/arc_height_multiplier = 1 // Modifies how 'high' the projectile flies. /obj/item/projectile/arc/Bump() return @@ -88,7 +89,7 @@ // Now for the fake height. var/arc_max_pixel_height = distance_to_fly / 2 var/sine_position = arc_progress * 180 - var/pixel_z_position = (arc_max_pixel_height * sin(sine_position)) + visual_y_offset + var/pixel_z_position = (arc_max_pixel_height * sin(sine_position) * arc_height_multiplier) + visual_y_offset animate(src, pixel_z = pixel_z_position, time = 1, flags = ANIMATION_END_NOW) // Update our shadow. @@ -176,6 +177,7 @@ damage_type = BIOACID armor_penetration = 30 fire_sound = 'sound/effects/slime_squish.ogg' + arc_height_multiplier = 0.5 /obj/item/projectile/arc/spore/on_impact(turf/T) for(var/mob/living/L in T) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index e05739d194..d1a6f22b4d 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -216,6 +216,16 @@ armor_penetration = 80 hitscan = 1 //so the PTR isn't useless as a sniper weapon + icon_state = "bullet_alt" + tracer_type = /obj/effect/projectile/tracer/cannon + +/obj/item/projectile/bullet/rifle/a145/highvel + damage = 50 + stun = 1 + weaken = 0 + penetrating = 15 + armor_penetration = 90 + /* Miscellaneous */ /obj/item/projectile/bullet/suffocationbullet//How does this even work? diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 132ac6ccf4..ca3f1c8f51 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -101,6 +101,19 @@ combustion = FALSE +/obj/item/projectile/energy/excavate + name = "kinetic blast" + icon_state = "kinetic_blast" + fire_sound = 'sound/weapons/pulse3.ogg' + damage_type = BRUTE + damage = 30 + armor_penetration = 60 + excavation_amount = 200 + check_armour = "melee" + + vacuum_traversal = 0 + combustion = FALSE + /obj/item/projectile/energy/dart name = "dart" icon_state = "toxin" diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 8f81ed16cd..ac039460cb 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -197,11 +197,11 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/monochrome_laser /obj/item/projectile/energy/florayield/on_hit(var/atom/target, var/blocked = 0) - var/mob/M = target + var/mob/living/M = target if(ishuman(target)) //These rays make plantmen fat. var/mob/living/carbon/human/H = M if((H.species.flags & IS_PLANT) && (M.nutrition < 500)) - M.nutrition += 30 + M.adjust_nutrition(30) else if (istype(target, /mob/living/carbon/)) M.show_message("The radiation beam dissipates harmlessly through your body.") else @@ -277,9 +277,9 @@ light_power = 3 light_color = "#3300ff" - muzzle_type = /obj/effect/projectile/tungsten/muzzle - tracer_type = /obj/effect/projectile/tungsten/tracer - impact_type = /obj/effect/projectile/tungsten/impact + muzzle_type = /obj/effect/projectile/muzzle/tungsten + tracer_type = /obj/effect/projectile/tracer/tungsten + impact_type = /obj/effect/projectile/impact/tungsten /obj/item/projectile/beam/tungsten/on_hit(var/atom/target, var/blocked = 0) if(isliving(target)) diff --git a/code/modules/projectiles/targeting/targeting_triggers.dm b/code/modules/projectiles/targeting/targeting_triggers.dm index 3563727fc1..1b8f3fcadd 100644 --- a/code/modules/projectiles/targeting/targeting_triggers.dm +++ b/code/modules/projectiles/targeting/targeting_triggers.dm @@ -17,7 +17,7 @@ return if(perm && (target_permissions & perm)) return - if(!owner.canClick()) + if(!owner.checkClickCooldown()) return owner.setClickCooldown(5) // Spam prevention, essentially. if(owner.a_intent == I_HELP && owner.is_preference_enabled(/datum/client_preference/safefiring)) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index 2d565c9692..aa641df405 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm @@ -46,11 +46,11 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.species.gets_food_nutrition == 0) - H.nutrition += removed + H.adjust_nutrition(removed) is_vampire = 1 //VOREStation Edit END if(alien == IS_SLIME) // Treat it like nutriment for the jello, but not equivalent. M.heal_organ_damage(0.2 * removed * volume_mod, 0) // More 'effective' blood means more usable material. - M.nutrition += 20 * removed * volume_mod + M.adjust_nutrition(20 * removed * volume_mod) M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) M.adjustToxLoss(removed / 2) // Still has some water in the form of plasma. return diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm index da26bb38aa..0dd24a07c6 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm @@ -138,7 +138,7 @@ /datum/reagent/ethanol/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) if(issmall(M)) removed *= 2 - M.nutrition += nutriment_factor * removed + M.adjust_nutrition(nutriment_factor * removed) var/strength_mod = 1 * M.species.alcohol_tolerance //YW EDIT: multiply by inherent tolerance first, I don't want to strip out the following block yet if(alien == IS_SKRELL) strength_mod *= 5 @@ -452,7 +452,7 @@ glass_icon = DRINK_ICON_NOISY /datum/reagent/sugar/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.nutrition += removed * 3 + M.adjust_nutrition(removed * 3) var/effective_dose = dose if(issmall(M)) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index f50a791550..d528f7bda5 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -47,7 +47,7 @@ if(issmall(M)) removed *= 2 // Small bodymass, more effect from lower volume. M.heal_organ_damage(0.5 * removed, 0) if(M.species.gets_food_nutrition) //VOREStation edit. If this is set to 0, they don't get nutrition from food. - M.nutrition += nutriment_factor * removed // For hunger and fatness + M.adjust_nutrition(nutriment_factor * removed) // For hunger and fatness M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) /datum/reagent/nutriment/glucose @@ -388,10 +388,7 @@ overdose = REAGENTS_OVERDOSE /datum/reagent/lipozine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.nutrition = max(M.nutrition - 10 * removed, 0) - M.overeatduration = 0 - if(M.nutrition < 0) - M.nutrition = 0 + M.adjust_nutrition(-10 * removed) /* Non-food stuff like condiments */ @@ -659,7 +656,7 @@ return /datum/reagent/drink/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) - M.nutrition += nutrition * removed + M.adjust_nutrition(nutrition * removed) M.dizziness = max(0, M.dizziness + adj_dizzy) M.drowsyness = max(0, M.drowsyness + adj_drowsy) M.sleeping = max(0, M.sleeping + adj_sleepy) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm index 28fd9dbaf4..c6a75ea12a 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm @@ -29,10 +29,7 @@ color = "#fff200" /datum/reagent/lipozine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.nutrition = max(M.nutrition - 20 * removed, 0) - M.overeatduration = 0 - if(M.nutrition < 0) - M.nutrition = 0 + M.adjust_nutrition(-20 * removed) /datum/reagent/ethanol/deathbell name = "Deathbell" @@ -79,13 +76,13 @@ if(IS_SKRELL) M.adjustToxLoss(0.25 * removed) //Equivalent to half as much protein, since it's half protein. if(IS_TESHARI) - M.nutrition += (alt_nutriment_factor * 1.2 * removed) //Give them the same nutrition they would get from protein. + M.adjust_nutrition(alt_nutriment_factor * 1.2 * removed) //Give them the same nutrition they would get from protein. if(IS_UNATHI) - M.nutrition += (alt_nutriment_factor * 1.125 * removed) //Give them the same nutrition they would get from protein. + M.adjust_nutrition(alt_nutriment_factor * 1.125 * removed) //Give them the same nutrition they would get from protein. //Takes into account the 0.5 factor for all nutriment which is applied on top of the 2.25 factor for protein. //Chimera don't need their own case here since their factors for nutriment and protein cancel out. else - M.nutrition += (alt_nutriment_factor * removed) + M.adjust_nutrition(alt_nutriment_factor * removed) if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.feral > 0 && H.nutrition > 100 && H.traumatic_shock < min(60, H.nutrition/10) && H.jitteriness < 100) // same check as feral triggers to stop them immediately re-feralling @@ -101,7 +98,7 @@ M.adjustToxLoss(removed) //Equivalent to half as much protein, since it's half protein. if(M.species.gets_food_nutrition) if(alien == IS_SLIME || alien == IS_CHIMERA) //slimes and chimera can get nutrition from injected nutriment and protein - M.nutrition += (alt_nutriment_factor * removed) + M.adjust_nutrition(alt_nutriment_factor * removed) /datum/reagent/nutriment/magicdust/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 1d04cac590..ff53851f1f 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -527,7 +527,7 @@ return if(alien == IS_SLIME) if(dose >= 5) //Not effective in small doses, though it causes toxloss at higher ones, it will make the regeneration for brute and burn more 'efficient' at the cost of more nutrition. - M.nutrition -= removed * 2 + M.adjust_nutrition(removed * 2) M.adjustBruteLoss(-2 * removed) M.adjustFireLoss(-1 * removed) chem_effective = 0.5 @@ -555,7 +555,7 @@ if(alien == IS_SLIME) M.make_jittery(4) //Hyperactive fluid pumping results in unstable 'skeleton', resulting in vibration. if(dose >= 5) - M.nutrition = (M.nutrition - (removed * 2)) //Sadly this movement starts burning food in higher doses. + M.adjust_nutrition(-removed * 2) // Sadly this movement starts burning food in higher doses. ..() if(prob(5)) M.emote(pick("twitch", "blink_r", "shiver")) @@ -745,7 +745,7 @@ if(prob(10)) H.vomit(1) else if(H.nutrition > 30) - H.nutrition = max(0, H.nutrition - round(30 * removed)) + M.adjust_nutrition(-removed * 30) else H.adjustToxLoss(-10 * removed) // Carthatoline based, considering cost. @@ -1116,7 +1116,7 @@ M.make_jittery(5) if(dose >= 20 || M.toxloss >= 60) //Core disentigration, cellular mass begins treating itself as an enemy, while maintaining regeneration. Slime-cancer. M.adjustBrainLoss(2 * removed) - M.nutrition = max(H.nutrition - 20, 0) + M.adjust_nutrition(-20) if(M.bruteloss >= 60 && M.toxloss >= 60 && M.brainloss >= 30) //Total Structural Failure. Limbs start splattering. var/obj/item/organ/external/O = pick(H.organs) if(prob(20) && !istype(O, /obj/item/organ/external/chest/unbreakable/slime) && !istype(O, /obj/item/organ/external/groin/unbreakable/slime)) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm index a1497dfa7b..aab4bcde5b 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm @@ -67,7 +67,7 @@ taste_description = "sparkles" taste_mult = 3 reagent_state = LIQUID - color = "#964e06" + color = "#750404" overdose = REAGENTS_OVERDOSE * 0.5 scannable = 1 diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index 9171691d58..44ba370812 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -20,7 +20,7 @@ if(alien == IS_SLIME) removed *= 0.25 // Results in half the standard tox as normal. Prometheans are 'Small' for flaps. if(dose >= 10) - M.nutrition += strength * removed //Body has to deal with the massive influx of toxins, rather than try using them to repair. + M.adjust_nutrition(strength * removed) // Body has to deal with the massive influx of toxins, rather than try using them to repair. else M.heal_organ_damage((10/strength) * removed, (10/strength) * removed) //Doses of toxins below 10 units, and 10 strength, are capable of providing useful compounds for repair. M.adjustToxLoss(strength * removed) @@ -397,7 +397,7 @@ /datum/reagent/toxin/sifslurry/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) // Symbiotic bacteria. - M.nutrition += strength * removed + M.adjust_nutrition(strength * removed) return else M.add_modifier(/datum/modifier/slow_pulse, 30 SECONDS) diff --git a/code/modules/reagents/Chemistry-Reagents_vr.dm b/code/modules/reagents/Chemistry-Reagents_vr.dm index a9e238dcbb..58a9b19402 100644 --- a/code/modules/reagents/Chemistry-Reagents_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents_vr.dm @@ -53,4 +53,48 @@ if(nif.stat == NIF_TEMPFAIL) nif.stat = NIF_INSTALLING nif.durability = min(nif.durability + removed, initial(nif.durability)) - nif.savetofile = TRUE + +/datum/reagent/firefighting_foam + name = "Firefighting Foam" + id = "firefoam" + description = "A historical fire suppressant. Originally believed to simply displace oxygen to starve fires, it actually interferes with the combustion reaction itself. Vastly superior to the cheap water-based extinguishers found on most NT vessels." + reagent_state = LIQUID + color = "#A6FAFF" + taste_description = "the inside of a fire extinguisher" + +/datum/reagent/firefighting_foam/touch_turf(var/turf/T, reac_volume) + if(reac_volume >= 1) + var/obj/effect/effect/foam/firefighting/F = (locate(/obj/effect/effect/foam/firefighting) in T) + if(!F) + F = new(T) + else if(istype(F)) + F.lifetime = initial(F.lifetime) //reduce object churn a little bit when using smoke by keeping existing foam alive a bit longer + + var/datum/gas_mixture/environment = T.return_air() + var/min_temperature = T0C + 100 // 100C, the boiling point of water + + var/hotspot = (locate(/obj/fire) in T) + if(hotspot && !isspace(T)) + var/datum/gas_mixture/lowertemp = T.remove_air(T.air.total_moles) + lowertemp.temperature = max(min(lowertemp.temperature-2000, lowertemp.temperature / 2), 0) + lowertemp.react() + T.assume_air(lowertemp) + qdel(hotspot) + + if (environment && environment.temperature > min_temperature) // Abstracted as steam or something + var/removed_heat = between(0, volume * 19000, -environment.get_thermal_energy_change(min_temperature)) + environment.add_thermal_energy(-removed_heat) + if(prob(5)) + T.visible_message("The foam sizzles as it lands on \the [T]!") + +/datum/reagent/firefighting_foam/touch_obj(var/obj/O, reac_volume) + O.water_act(reac_volume / 5) + +/datum/reagent/firefighting_foam/touch_mob(var/mob/living/M, reac_volume) + if(istype(M, /mob/living/simple_mob/slime)) //I'm sure foam is water-based! + var/mob/living/simple_mob/slime/S = M + S.adjustToxLoss(15 * reac_volume) + S.visible_message("[S]'s flesh sizzles where the foam touches it!", "Your flesh burns in the foam!") + + M.adjust_fire_stacks(-reac_volume) + M.ExtinguishMob() diff --git a/code/modules/reagents/dispenser/cartridge.dm b/code/modules/reagents/dispenser/cartridge.dm index 6a8d01a240..444577aaa5 100644 --- a/code/modules/reagents/dispenser/cartridge.dm +++ b/code/modules/reagents/dispenser/cartridge.dm @@ -22,14 +22,14 @@ setLabel(R.name) /obj/item/weapon/reagent_containers/chem_disp_cartridge/examine(mob/user) - ..() - to_chat(user, "It has a capacity of [volume] units.") + . = ..() + . += "It has a capacity of [volume] units." if(reagents.total_volume <= 0) - to_chat(user, "It is empty.") + . += "It is empty." else - to_chat(user, "It contains [reagents.total_volume] units of liquid.") + . += "It contains [reagents.total_volume] units of liquid." if(!is_open_container()) - to_chat(user, "The cap is sealed.") + . += "The cap is sealed." /obj/item/weapon/reagent_containers/chem_disp_cartridge/verb/verb_set_label(L as text) set name = "Set Cartridge Label" diff --git a/code/modules/reagents/dispenser/cartridge_presets_vr.dm b/code/modules/reagents/dispenser/cartridge_presets_vr.dm index ebec2278a0..50c3f6d399 100644 --- a/code/modules/reagents/dispenser/cartridge_presets_vr.dm +++ b/code/modules/reagents/dispenser/cartridge_presets_vr.dm @@ -7,4 +7,11 @@ //Biochem nutriment spawn_reagent = "nutriment" - protein spawn_reagent = "protein" \ No newline at end of file + protein spawn_reagent = "protein" + + //Special Ops + biomass spawn_reagent = "biomass" + carthatoline spawn_reagent = "carthatoline" + corophizine spawn_reagent = "corophizine" + myelamine spawn_reagent = "myelamine" + osteodaxon spawn_reagent = "osteodaxon" \ No newline at end of file diff --git a/code/modules/reagents/dispenser/dispenser2.dm b/code/modules/reagents/dispenser/dispenser2.dm index 391659762f..69577da357 100644 --- a/code/modules/reagents/dispenser/dispenser2.dm +++ b/code/modules/reagents/dispenser/dispenser2.dm @@ -26,8 +26,8 @@ add_cartridge(new type(src)) /obj/machinery/chemical_dispenser/examine(mob/user) - ..() - to_chat(user, "It has [cartridges.len] cartridges installed, and has space for [DISPENSER_MAX_CARTRIDGES - cartridges.len] more.") + . = ..() + . += "It has [cartridges.len] cartridges installed, and has space for [DISPENSER_MAX_CARTRIDGES - cartridges.len] more." /obj/machinery/chemical_dispenser/proc/add_cartridge(obj/item/weapon/reagent_containers/chem_disp_cartridge/C, mob/user) if(!istype(C)) diff --git a/code/modules/reagents/dispenser/dispenser_presets_vr.dm b/code/modules/reagents/dispenser/dispenser_presets_vr.dm index bf7f85688d..ed63a60768 100644 --- a/code/modules/reagents/dispenser/dispenser_presets_vr.dm +++ b/code/modules/reagents/dispenser/dispenser_presets_vr.dm @@ -30,4 +30,38 @@ /obj/item/weapon/reagent_containers/chem_disp_cartridge/nutriment, /obj/item/weapon/reagent_containers/chem_disp_cartridge/protein, /obj/item/weapon/reagent_containers/chem_disp_cartridge/milk - ) \ No newline at end of file + ) + +/obj/machinery/chemical_dispenser/ert/specialops + spawn_cartridges = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/inaprov, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dylovene, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ryetalyn, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tramadol, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxycodone, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sterilizine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/leporazine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/kelotane, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dermaline, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dexalin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dexalin_p, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/synaptizine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hyronalin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/arithrazine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/alkysine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/imidazoline, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/peridaxon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/bicaridine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hyperzine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/rezadone, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceacillin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethylredox, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/carthatoline, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/corophizine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/myelamine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/osteodaxon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/biomass, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/iron, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/nutriment, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/protein + ) diff --git a/code/modules/reagents/distilling/distilling.dm b/code/modules/reagents/distilling/distilling.dm index 78780a3543..645f13c76b 100644 --- a/code/modules/reagents/distilling/distilling.dm +++ b/code/modules/reagents/distilling/distilling.dm @@ -109,31 +109,31 @@ ..() /obj/machinery/portable_atmospherics/powered/reagent_distillery/examine(mob/user) - ..() - if(get_dist(user, src) < 3) - to_chat(user, "\The [src] is powered [on ? "on" : "off"].") + . = ..() + if(get_dist(user, src) <= 2) + . += "\The [src] is powered [on ? "on" : "off"]." - to_chat(user, "\The [src]'s gauges read:") + . += "\The [src]'s gauges read:" if(!use_atmos) - to_chat(user, "- Target Temperature: [target_temp]") - to_chat(user, "- Temperature: [current_temp]") + . += "- Target Temperature: [target_temp]" + . += "- Temperature: [current_temp]" if(InputBeaker) if(InputBeaker.reagents.reagent_list.len) - to_chat(user, "\The [src]'s input beaker holds [InputBeaker.reagents.total_volume] units of liquid.") + . += "\The [src]'s input beaker holds [InputBeaker.reagents.total_volume] units of liquid." else - to_chat(user, "\The [src]'s input beaker is empty!") + . += "\The [src]'s input beaker is empty!" if(Reservoir.reagents.reagent_list.len) - to_chat(user, "\The [src]'s internal buffer holds [Reservoir.reagents.total_volume] units of liquid.") + . += "\The [src]'s internal buffer holds [Reservoir.reagents.total_volume] units of liquid." else - to_chat(user, "\The [src]'s internal buffer is empty!") + . += "\The [src]'s internal buffer is empty!" if(OutputBeaker) if(OutputBeaker.reagents.reagent_list.len) - to_chat(user, "\The [src]'s output beaker holds [OutputBeaker.reagents.total_volume] units of liquid.") + . += "\The [src]'s output beaker holds [OutputBeaker.reagents.total_volume] units of liquid." else - to_chat(user, "\The [src]'s output beaker is empty!") + . += "\The [src]'s output beaker is empty!" /obj/machinery/portable_atmospherics/powered/reagent_distillery/verb/toggle_power(mob/user = usr) set name = "Toggle Distillery Heating" @@ -186,7 +186,7 @@ switch(choice) if("examine") - examine(user) + user.examinate(src) if("use") toggle_power(user) @@ -267,7 +267,7 @@ return if(chan == -1) chan = power_channel - A.use_power(amount, chan) + A.use_power_oneoff(amount, chan) /obj/machinery/portable_atmospherics/powered/reagent_distillery/process() ..() diff --git a/code/modules/reagents/reagent_containers/blood_pack_vr.dm b/code/modules/reagents/reagent_containers/blood_pack_vr.dm index b4e27fb95a..118ad57bb3 100644 --- a/code/modules/reagents/reagent_containers/blood_pack_vr.dm +++ b/code/modules/reagents/reagent_containers/blood_pack_vr.dm @@ -7,7 +7,7 @@ if("blood") user.show_message("You sink your fangs into \the [src] and suck the blood out of it!") user.visible_message("[user] sinks their fangs into \the [src] and drains it!") - user.nutrition += remove_volume*5 + user.adjust_nutrition(remove_volume*5) reagents.remove_reagent(reagent_to_remove, remove_volume) update_icon() return diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index ee081e16f6..d993a0719a 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -119,12 +119,10 @@ to_chat(usr, "Synthesizer is now producing '[R.name]'.") /obj/item/weapon/reagent_containers/borghypo/examine(mob/user) - if(!..(user, 2)) - return - - var/datum/reagent/R = SSchemistry.chemical_reagents[reagent_ids[mode]] - - to_chat(user, "It is currently producing [R.name] and has [reagent_volumes[reagent_ids[mode]]] out of [volume] units left.") + . = ..() + if(get_dist(user, src) <= 2) + var/datum/reagent/R = SSchemistry.chemical_reagents[reagent_ids[mode]] + . += "It is currently producing [R.name] and has [reagent_volumes[reagent_ids[mode]]] out of [volume] units left." /obj/item/weapon/reagent_containers/borghypo/service name = "cyborg drink synthesizer" diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index da0205f9ea..7ffcf28881 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -14,12 +14,12 @@ drop_sound = 'sound/items/drop/glass.ogg' /obj/item/weapon/reagent_containers/dropper/examine(var/mob/user) - if(!..(user, 2)) - return - if(reagents && reagents.reagent_list.len) - to_chat(user, "It contains [reagents.total_volume] units of liquid.") - else - to_chat(user, "It is empty.") + . = ..() + if(get_dist(user, src) <= 2) + if(reagents && reagents.reagent_list.len) + . += "It contains [reagents.total_volume] units of liquid." + else + . += "It is empty." /obj/item/weapon/reagent_containers/dropper/afterattack(var/obj/target, var/mob/user, var/proximity) if(!target.reagents || !proximity) return diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 4d320cc86c..44b2af6a5d 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -60,14 +60,14 @@ base_desc = desc /obj/item/weapon/reagent_containers/glass/examine(var/mob/user) - if(!..(user, 2)) - return - if(reagents && reagents.reagent_list.len) - to_chat(user, "It contains [reagents.total_volume] units of liquid.") - else - to_chat(user, "It is empty.") - if(!is_open_container()) - to_chat(user, "Airtight lid seals it completely.") + . = ..() + if(get_dist(user, src) <= 2) + if(reagents && reagents.reagent_list.len) + . += "It contains [reagents.total_volume] units of liquid." + else + . += "It is empty." + if(!is_open_container()) + . += "Airtight lid seals it completely." /obj/item/weapon/reagent_containers/glass/attack_self() ..() diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index aaa8cec486..0963f45ba9 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -171,11 +171,11 @@ icon_state = "[initial(icon_state)]0" /obj/item/weapon/reagent_containers/hypospray/autoinjector/examine(mob/user) - . = ..(user) + . = ..() if(reagents && reagents.reagent_list.len) - to_chat(user, "It is currently loaded.") + . += "It is currently loaded." else - to_chat(user, "It is spent.") + . += "It is spent." /obj/item/weapon/reagent_containers/hypospray/autoinjector/detox name = "autoinjector (antitox)" diff --git a/code/modules/reagents/reagent_containers/hypospray_vr.dm b/code/modules/reagents/reagent_containers/hypospray_vr.dm index 526ae77fba..ff2586c528 100644 --- a/code/modules/reagents/reagent_containers/hypospray_vr.dm +++ b/code/modules/reagents/reagent_containers/hypospray_vr.dm @@ -1,27 +1,36 @@ -/obj/item/weapon/reagent_containers/hypospray/autoinjector/miner - name = "Emergency trauma injector" - desc = "A rapid injector for emergency treatment of injuries. The warning label advises that it is not a substitute for proper medical treatment." - icon_state = "autoinjector" - item_state = "autoinjector" - amount_per_transfer_from_this = 10 - volume = 10 +/obj/item/weapon/reagent_containers/hypospray/autoinjector/burn + name = "autoinjector (burn)" + icon_state = "purple" + filled_reagents = list("dermaline" = 3.5, "leporazine" = 1.5) -/obj/item/weapon/reagent_containers/hypospray/autoinjector/miner/Initialize() - ..() - reagents.add_reagent("bicaridine", 5) - reagents.add_reagent("tricordrazine", 3) - reagents.add_reagent("tramadol", 2) - update_icon() +/obj/item/weapon/reagent_containers/hypospray/autoinjector/trauma + name = "autoinjector (trauma)" + icon_state = "black" + filled_reagents = list("bicaridine" = 4, "tramadol" = 1) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/oxy + name = "autoinjector (oxy)" + icon_state = "blue" + filled_reagents = list("dexalinp" = 5) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/rad + name = "autoinjector (rad)" + icon_state = "black" + filled_reagents = list("hyronalin" = 5) /obj/item/weapon/storage/box/traumainjectors - name = "box of emergency trauma injectors" - desc = "Contains emergency trauma autoinjectors." + name = "box of emergency injectors" + desc = "Contains emergency autoinjectors." icon_state = "syringe" + max_storage_space = ITEMSIZE_COST_SMALL * 7 // 14 /obj/item/weapon/storage/box/traumainjectors/Initialize() ..() - for (var/i = 1 to 7) - new /obj/item/weapon/reagent_containers/hypospray/autoinjector/miner(src) + for (var/i = 1 to 4) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/trauma(src) + for (var/i = 1 to 2) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/detox(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/burn(src) /obj/item/weapon/reagent_containers/hypospray var/prototype = 0 diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 82a6f7b97a..c30ffd09f7 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -96,13 +96,13 @@ //Pills /obj/item/weapon/reagent_containers/pill/antitox - name = "Dylovene (25u)" + name = "Dylovene (30u)" //VOREStation Edit desc = "Neutralizes many common toxins." icon_state = "pill1" /obj/item/weapon/reagent_containers/pill/antitox/Initialize() . = ..() - reagents.add_reagent("anti_toxin", 25) + reagents.add_reagent("anti_toxin", 30) //VOREStation Edit color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/tox @@ -146,13 +146,13 @@ color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/kelotane - name = "Kelotane (15u)" + name = "Kelotane (20u)" //VOREStation Edit desc = "Used to treat burns." icon_state = "pill3" /obj/item/weapon/reagent_containers/pill/kelotane/Initialize() . = ..() - reagents.add_reagent("kelotane", 15) + reagents.add_reagent("kelotane", 20) //VOREStation Edit color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/paracetamol @@ -196,13 +196,13 @@ color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/dexalin - name = "Dexalin (15u)" + name = "Dexalin (7.5u)" //VOREstation Edit desc = "Used to treat oxygen deprivation." icon_state = "pill1" /obj/item/weapon/reagent_containers/pill/dexalin/Initialize() . = ..() - reagents.add_reagent("dexalin", 15) + reagents.add_reagent("dexalin", 7.5) //VOREStation Edit color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/dexalin_plus @@ -256,7 +256,7 @@ color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/spaceacillin - name = "Spaceacillin (10u)" + name = "Spaceacillin (15u)" //VOREStation Edit desc = "A theta-lactam antibiotic. Effective against many diseases likely to be encountered in space." icon_state = "pill3" @@ -266,23 +266,23 @@ color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/carbon - name = "Carbon (15u)" + name = "Carbon (30u)" //VOREStation Edit desc = "Used to neutralise chemicals in the stomach." icon_state = "pill3" /obj/item/weapon/reagent_containers/pill/carbon/Initialize() . = ..() - reagents.add_reagent("carbon", 15) + reagents.add_reagent("carbon", 30) //VOREStation Edit color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/iron - name = "Iron (15u)" + name = "Iron (30u)" //VOREStation Edit desc = "Used to aid in blood regeneration after bleeding." icon_state = "pill1" /obj/item/weapon/reagent_containers/pill/iron/Initialize() . = ..() - reagents.add_reagent("iron", 15) + reagents.add_reagent("iron", 30) //VOREStation Edit color = reagents.get_color() //Not-quite-medicine diff --git a/code/modules/reagents/reagent_containers/pill_vr.dm b/code/modules/reagents/reagent_containers/pill_vr.dm index 87d8dc5c1a..91eaa13cb2 100644 --- a/code/modules/reagents/reagent_containers/pill_vr.dm +++ b/code/modules/reagents/reagent_containers/pill_vr.dm @@ -1,5 +1,5 @@ /obj/item/weapon/reagent_containers/pill/nutriment - name = "Nutriment pill" + name = "Nutriment (30u)" desc = "Used to feed people on the field. Contains 30 units of Nutriment." icon_state = "pill10" @@ -8,7 +8,7 @@ reagents.add_reagent("nutriment", 30) /obj/item/weapon/reagent_containers/pill/protein - name = "Meat pill" + name = "Protein (30u)" desc = "Used to feed carnivores on the field. Contains 30 units of Protein." icon_state = "pill24" @@ -17,7 +17,7 @@ reagents.add_reagent("protein", 30) /obj/item/weapon/reagent_containers/pill/rezadone - name = "Rezadone pill" + name = "Rezadone (5u)" desc = "A powder with almost magical properties, this substance can effectively treat genetic damage in humanoids, though excessive consumption has side effects." icon_state = "pill2" @@ -27,7 +27,7 @@ color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/peridaxon - name = "Peridaxon pill" + name = "Peridaxon (10u)" desc = "Used to encourage recovery of internal organs and nervous systems. Medicate cautiously." icon_state = "pill10" @@ -36,17 +36,17 @@ reagents.add_reagent("peridaxon", 10) /obj/item/weapon/reagent_containers/pill/carthatoline - name = "Carthatoline pill" + name = "Carthatoline (15u)" desc = "Carthatoline is strong evacuant used to treat severe poisoning." icon_state = "pill4" /obj/item/weapon/reagent_containers/pill/carthatoline/Initialize() ..() - reagents.add_reagent("carthatoline", 10) + reagents.add_reagent("carthatoline", 15) color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/alkysine - name = "Alkysine pill" + name = "Alkysine (10u)" desc = "Alkysine is a drug used to lessen the damage to neurological tissue after a catastrophic injury. Can heal brain tissue." icon_state = "pill3" @@ -56,7 +56,7 @@ color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/imidazoline - name = "Imidazoline pill" + name = "Imidazoline (15u)" desc = "Heals eye damage." icon_state = "pill3" @@ -66,27 +66,29 @@ color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/osteodaxon - name = "Osteodaxon pill" + name = "Osteodaxon (25u)" desc = "An experimental drug used to heal bone fractures." icon_state = "pill2" /obj/item/weapon/reagent_containers/pill/osteodaxon/Initialize() ..() - reagents.add_reagent("osteodaxon", 10) + reagents.add_reagent("osteodaxon", 15) + reagents.add_reagent("inaprovaline", 10) color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/myelamine - name = "Myelamine pill" + name = "Myelamine (25u)" desc = "Used to rapidly clot internal hemorrhages by increasing the effectiveness of platelets." icon_state = "pill1" /obj/item/weapon/reagent_containers/pill/myelamine/Initialize() ..() - reagents.add_reagent("myelamine", 10) + reagents.add_reagent("myelamine", 15) + reagents.add_reagent("inaprovaline", 10) color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/hyronalin - name = "Hyronalin pill" + name = "Hyronalin (15u)" desc = "Hyronalin is a medicinal drug used to counter the effect of radiation poisoning." icon_state = "pill4" @@ -96,7 +98,7 @@ color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/arithrazine - name = "Arithrazine pill" + name = "Arithrazine (5u)" desc = "Arithrazine is an unstable medication used for the most extreme cases of radiation poisoning." icon_state = "pill2" @@ -106,7 +108,7 @@ color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/corophizine - name = "Corophizine pill" + name = "Corophizine (5u)" desc = "A wide-spectrum antibiotic drug. Powerful and uncomfortable in equal doses." icon_state = "pill2" @@ -115,8 +117,18 @@ reagents.add_reagent("corophizine", 5) color = reagents.get_color() +/obj/item/weapon/reagent_containers/pill/vermicetol + name = "Vermicetol (15u)" + desc = "An extremely potent drug to treat physical injuries." + icon_state = "pill1" + +/obj/item/weapon/reagent_containers/pill/vermicetol/Initialize() + ..() + reagents.add_reagent("vermicetol", 15) + color = reagents.get_color() + /obj/item/weapon/reagent_containers/pill/healing_nanites - name = "Healing nanites capsule" + name = "Healing nanites (30u)" desc = "Miniature medical robots that swiftly restore bodily damage." icon_state = "pill1" @@ -126,8 +138,8 @@ color = reagents.get_color() /obj/item/weapon/reagent_containers/pill/sleevingcure - name = "Vey-Med Resleeving Booster pill" - desc = "A rare medication provided by Vey-Med that helps counteract negative side effects of using resleeving machinery. Numb tongue before swallowing." + name = "Vey-Med Resleeving Booster pill" //YW Edit + desc = "A rare medication provided by Vey-Med that helps counteract negative side effects of using resleeving machinery. Numb tongue before swallowing." //YW Edit icon_state = "pill3" /obj/item/weapon/reagent_containers/pill/sleevingcure/Initialize() diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 3e94bedd59..1aece5b845 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -79,9 +79,9 @@ to_chat(user, "You adjusted the pressure nozzle. You'll now use [amount_per_transfer_from_this] units per spray.") /obj/item/weapon/reagent_containers/spray/examine(mob/user) - if(..(user, 0) && loc == user) - to_chat(user, "[round(reagents.total_volume)] units left.") - return + . = ..() + if(loc == user) + . += "[round(reagents.total_volume)] units left." /obj/item/weapon/reagent_containers/spray/verb/empty() @@ -133,8 +133,9 @@ reagents.add_reagent("condensedcapsaicin", 40) /obj/item/weapon/reagent_containers/spray/pepper/examine(mob/user) - if(..(user, 1)) - to_chat(user, "The safety is [safety ? "on" : "off"].") + . = ..() + if(Adjacent(user)) + . += "The safety is [safety ? "on" : "off"]." /obj/item/weapon/reagent_containers/spray/pepper/attack_self(var/mob/user) safety = !safety diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 17af8d3b88..eb25d9c7b3 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -25,14 +25,14 @@ . = ..() /obj/structure/reagent_dispensers/examine(mob/user) - if(!..(user, 2)) - return - to_chat(user, "It contains:") - if(reagents && reagents.reagent_list.len) - for(var/datum/reagent/R in reagents.reagent_list) - to_chat(user, "[R.volume] units of [R.name]") - else - to_chat(user, "Nothing.") + . = ..() + if(get_dist(user, src) <= 2) + . += "It contains:" + if(reagents && reagents.reagent_list.len) + for(var/datum/reagent/R in reagents.reagent_list) + . += "[R.volume] units of [R.name]" + else + . += "Nothing." /obj/structure/reagent_dispensers/verb/set_APTFT() //set amount_per_transfer_from_this set name = "Set transfer amount" @@ -69,7 +69,7 @@ /obj/structure/reagent_dispensers/watertank name = "watertank" desc = "A watertank." - icon = 'icons/obj/objects.dmi' + icon = 'icons/obj/objects_vr.dmi' //VOREStation Edit icon_state = "watertank" amount_per_transfer_from_this = 10 @@ -89,7 +89,7 @@ /obj/structure/reagent_dispensers/fueltank name = "fueltank" desc = "A fueltank." - icon = 'icons/obj/objects.dmi' + icon = 'icons/obj/objects_vr.dmi' //VOREStation Edit icon_state = "weldtank" amount_per_transfer_from_this = 10 var/modded = 0 @@ -99,13 +99,36 @@ . = ..() reagents.add_reagent("fuel",1000) +//VOREStation Add +/obj/structure/reagent_dispensers/fueltank/high + name = "high-capacity fuel tank" + desc = "A highly-pressurized fuel tank made to hold vast amounts of fuel." + icon_state = "weldtank_high" + +/obj/structure/reagent_dispensers/fueltank/high/Initialize() + . = ..() + reagents.add_reagent("fuel",4000) + +/obj/structure/reagent_dispensers/foam + name = "foamtank" + desc = "A foam tank." + icon = 'icons/obj/objects_vr.dmi' //VOREStation Edit + icon_state = "foamtank" + amount_per_transfer_from_this = 10 + +/obj/structure/reagent_dispensers/foam/Initialize() + . = ..() + reagents.add_reagent("firefoam",1000) +//VOREStation Add End + + /obj/structure/reagent_dispensers/fueltank/examine(mob/user) - if(!..(user, 2)) - return - if (modded) - to_chat(user, "Fuel faucet is wrenched open, leaking the fuel!") - if(rig) - to_chat(user, "There is some kind of device rigged to the tank.") + . = ..() + if(get_dist(user, src) <= 2) + if(modded) + . += "Fuel faucet is wrenched open, leaking the fuel!" + if(rig) + . += "There is some kind of device rigged to the tank." /obj/structure/reagent_dispensers/fueltank/attack_hand() if (rig) @@ -234,9 +257,9 @@ update_icon() /obj/structure/reagent_dispensers/water_cooler/examine(mob/user) - ..() + . = ..() if(cupholder) - to_chat(user, "There are [cups] cups in the cup dispenser.") + . += "There are [cups] cups in the cup dispenser." /obj/structure/reagent_dispensers/water_cooler/attackby(obj/item/I as obj, mob/user as mob) if(I.is_wrench()) diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index fd64013eca..ef6d6a5812 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -22,6 +22,7 @@ ..(newturf) ptype = newtype dir = newdir + // Disposals handle "bent"/"corner" strangely, handle this specially. if(ptype == DISPOSAL_PIPE_STRAIGHT && dir in cornerdirs) ptype = DISPOSAL_PIPE_CORNER switch(dir) @@ -76,30 +77,24 @@ base_state = "disposal" else base_state = "condisposal" - if(DISPOSAL_PIPE_OUTLET) base_state = "outlet" dpdir = dir - if(DISPOSAL_PIPE_CHUTE) base_state = "intake" dpdir = dir - if(DISPOSAL_PIPE_SORTER) base_state = "pipe-j1s" dpdir = dir | right | flip - if(DISPOSAL_PIPE_SORTER_FLIPPED) base_state = "pipe-j2s" dpdir = dir | left | flip -///// Z-Level stuff if(DISPOSAL_PIPE_UPWARD) base_state = "pipe-u" dpdir = dir if(DISPOSAL_PIPE_DOWNWARD) base_state = "pipe-d" dpdir = dir -///// Z-Level stuff if(DISPOSAL_PIPE_TAGGER) base_state = "pipe-tagger" dpdir = dir | flip @@ -107,9 +102,7 @@ base_state = "pipe-tagger-partial" dpdir = dir | flip -///// Z-Level stuff if(!(ptype in list(DISPOSAL_PIPE_BIN, DISPOSAL_PIPE_OUTLET, DISPOSAL_PIPE_CHUTE, DISPOSAL_PIPE_UPWARD, DISPOSAL_PIPE_DOWNWARD, DISPOSAL_PIPE_TAGGER, DISPOSAL_PIPE_TAGGER_PARTIAL))) -///// Z-Level stuff icon_state = "con[base_state]" else icon_state = base_state @@ -128,9 +121,9 @@ // flip and rotate verbs -/obj/structure/disposalconstruct/verb/rotate() +/obj/structure/disposalconstruct/verb/rotate_clockwise() set category = "Object" - set name = "Rotate Pipe" + set name = "Rotate Pipe Clockwise" set src in view(1) if(usr.stat) @@ -140,7 +133,7 @@ to_chat(usr, "You must unfasten the pipe before rotating it.") return - set_dir(turn(dir, -90)) + src.set_dir(turn(src.dir, 270)) update() /obj/structure/disposalconstruct/verb/flip() @@ -157,7 +150,6 @@ do_a_flip() /obj/structure/disposalconstruct/proc/do_a_flip() - set_dir(turn(dir, 180)) switch(ptype) if(DISPOSAL_PIPE_JUNCTION) ptype = DISPOSAL_PIPE_JUNCTION_FLIPPED @@ -201,12 +193,10 @@ return /obj/structure/disposalpipe/sortjunction/wildcard/flipped if(DISPOSAL_SORT_UNTAGGED) return /obj/structure/disposalpipe/sortjunction/untagged/flipped -///// Z-Level stuff if(DISPOSAL_PIPE_UPWARD) return /obj/structure/disposalpipe/up if(DISPOSAL_PIPE_DOWNWARD) return /obj/structure/disposalpipe/down -///// Z-Level stuff if(DISPOSAL_PIPE_TAGGER) return /obj/structure/disposalpipe/tagger if(DISPOSAL_PIPE_TAGGER_PARTIAL) @@ -218,7 +208,6 @@ // attackby item // wrench: (un)anchor // weldingtool: convert to real pipe - /obj/structure/disposalconstruct/attackby(var/obj/item/I, var/mob/user) var/nicetype = "pipe" var/ispipe = 0 // Indicates if we should change the level of this pipe @@ -256,6 +245,7 @@ var/obj/structure/disposalpipe/CP = locate() in T + // wrench: (un)anchor if(I.is_wrench()) if(anchored) anchored = 0 @@ -294,6 +284,7 @@ playsound(loc, I.usesound, 100, 1) update() + // weldingtool: convert to real pipe else if(istype(I, /obj/item/weapon/weldingtool)) if(anchored) var/obj/item/weapon/weldingtool/W = I @@ -328,7 +319,6 @@ P.mode = 0 // start with pump off else if(ptype==DISPOSAL_PIPE_OUTLET) - var/obj/structure/disposaloutlet/P = new /obj/structure/disposaloutlet(src.loc) src.transfer_fingerprints_to(P) P.set_dir(dir) @@ -336,7 +326,6 @@ Trunk.linked = P else if(ptype==DISPOSAL_PIPE_CHUTE) - var/obj/machinery/disposal/deliveryChute/P = new /obj/machinery/disposal/deliveryChute(src.loc) src.transfer_fingerprints_to(P) P.set_dir(dir) @@ -356,6 +345,7 @@ else return 0 +// VOREStation Add Start - Helper procs for RCD /obj/structure/disposalconstruct/proc/is_pipe() return (ptype != DISPOSAL_PIPE_BIN && ptype != DISPOSAL_PIPE_OUTLET && ptype != DISPOSAL_PIPE_CHUTE) @@ -372,3 +362,4 @@ return FALSE return TRUE +// VOREStation Add End diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index ee4285330f..343650f67d 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -102,12 +102,12 @@ overlays += I examine(mob/user) - if(..(user, 4)) + . = ..() + if(get_dist(user, src) <= 4) if(sortTag) - to_chat(user, "It is labeled \"[sortTag]\"") + . += "It is labeled \"[sortTag]\"" if(examtext) - to_chat(user, "It has a note attached which reads, \"[examtext]\"") - return + . += "It has a note attached which reads, \"[examtext]\"" /obj/item/smallDelivery desc = "A small wrapped package." @@ -209,12 +209,11 @@ overlays += I examine(mob/user) - if(..(user, 4)) + if(get_dist(user, src) <= 4) if(sortTag) - to_chat(user, "It is labeled \"[sortTag]\"") + . += "It is labeled \"[sortTag]\"" if(examtext) - to_chat(user, "It has a note attached which reads, \"[examtext]\"") - return + . += "It has a note attached which reads, \"[examtext]\"" /obj/item/weapon/packageWrap name = "package wrapper" @@ -312,10 +311,9 @@ return examine(mob/user) - if(..(user, 0)) - to_chat(user, "There are [amount] units of package wrap left!") - - return + . = ..() + if(get_dist(user, src) <= 0) + . += "There are [amount] units of package wrap left!" /obj/structure/bigDelivery/Destroy() if(wrapped) //sometimes items can disappear. For example, bombs. --rastaf0 diff --git a/code/modules/research/designs/circuits/circuits_vr.dm b/code/modules/research/designs/circuits/circuits_vr.dm index fefb2b2db3..98d9c860bd 100644 --- a/code/modules/research/designs/circuits/circuits_vr.dm +++ b/code/modules/research/designs/circuits/circuits_vr.dm @@ -146,4 +146,25 @@ id = "quantum_pad" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_PHORON = 4, TECH_BLUESPACE = 5) build_path = /obj/item/weapon/circuitboard/quantumpad - sort_string = "HAAC" \ No newline at end of file + sort_string = "HAAC" + +/datum/design/circuit/rtg + name = "radioisotope TEG" + id = "rtg" + req_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3) + build_path = /obj/item/weapon/circuitboard/machine/rtg + sort_string = "HAAD" + +/datum/design/circuit/rtg_advanced + name = "advanced radioisotope TEG" + id = "adv_rtg" + req_tech = list(TECH_DATA = 5, TECH_POWER = 5, TECH_PHORON = 5, TECH_ENGINEERING = 5) + build_path = /obj/item/weapon/circuitboard/machine/rtg/advanced + sort_string = "HAAE" + +/datum/design/circuit/rtg + name = "vitals monitor" + id = "vitals" + req_tech = list(TECH_DATA = 3, TECH_BIO = 4, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/machine/vitals_monitor + sort_string = "HAAF" diff --git a/code/modules/research/designs/misc_vr.dm b/code/modules/research/designs/misc_vr.dm index 2b397185c3..d26f24ed59 100644 --- a/code/modules/research/designs/misc_vr.dm +++ b/code/modules/research/designs/misc_vr.dm @@ -2,7 +2,7 @@ name = "Bluespace jumpsuit" id = "bsjumpsuit" req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 3, TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000) + materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_GLASS = 4000) build_path = /obj/item/clothing/under/bluespace sort_string = "TAVAA" @@ -10,7 +10,7 @@ name = "Size gun" id = "sizegun" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000, "uranium" = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000) build_path = /obj/item/weapon/gun/energy/sizegun sort_string = "TAVAB" @@ -18,6 +18,22 @@ name = "Body Snatcher" id = "bodysnatcher" req_tech = list(TECH_MAGNET = 3, TECH_BIO = 3, TECH_ILLEGAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000) + materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_GLASS = 4000) build_path = /obj/item/device/bodysnatcher - sort_string = "TBVAA" \ No newline at end of file + sort_string = "TBVAA" + +/datum/design/item/general/inducer_sci + name = "Inducer (Scientific)" + id = "inducersci" + req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 5, TECH_POWER = 6) + materials = list(DEFAULT_WALL_MATERIAL = 8000, MAT_GLASS = 2000, MAT_URANIUM = 4000, MAT_PHORON = 4000) + build_path = /obj/item/weapon/inducer/sci + sort_string = "TAVAB" + +/datum/design/item/general/inducer_eng + name = "Inducer (Industrial)" + id = "inducerind" + req_tech = list(TECH_BLUESPACE = 5, TECH_MATERIAL = 7, TECH_POWER = 7) + materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 2000) + build_path = /obj/item/weapon/inducer/unloaded + sort_string = "TAVAC" diff --git a/code/modules/research/mechfab_designs.dm b/code/modules/research/mechfab_designs.dm index 125de3db6c..7316c42179 100644 --- a/code/modules/research/mechfab_designs.dm +++ b/code/modules/research/mechfab_designs.dm @@ -1030,3 +1030,12 @@ req_tech = list(TECH_MATERIAL = 7, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_POWER = 6, TECH_ILLEGAL = 3, TECH_BLUESPACE = 4, TECH_ARCANE = 2, TECH_PRECURSOR = 3) materials = list(MAT_DURASTEEL = 5000, MAT_GRAPHITE = 3000, MAT_MORPHIUM = 1500, MAT_OSMIUM = 1500, MAT_PHORON = 1750, MAT_VERDANTIUM = 3000, MAT_SUPERMATTER = 2000) build_path = /obj/item/rig_module/teleporter + +/datum/design/item/mechfab/uav/basic + name = "UAV - Recon Skimmer" + id = "recon_skimmer" + build_path = /obj/item/device/uav + time = 20 + req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5, TECH_PHORON = 3, TECH_MAGNET = 4, TECH_POWER = 6) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 6000, "silver" = 4000) + \ No newline at end of file diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 86004b6130..ebe09e3a98 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -82,9 +82,8 @@ var/global/list/obj/machinery/message_server/message_servers = list() return /obj/machinery/message_server/examine(mob/user, distance, infix, suffix) - if(..()) - to_chat(user, "It appears to be [active ? "online" : "offline"].") - + . = ..() + . += "It appears to be [active ? "online" : "offline"]." /obj/machinery/message_server/proc/GenerateKey() //Feel free to move to Helpers. diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 3837e13aae..1de0d5bed0 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -15,7 +15,26 @@ var/mat_efficiency = 1 var/speed = 1 - materials = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0, MAT_PLASTEEL = 0, "plastic" = 0, MAT_GRAPHITE = 0, "gold" = 0, "silver" = 0, "osmium" = 0, MAT_LEAD = 0, "phoron" = 0, "uranium" = 0, "diamond" = 0, MAT_DURASTEEL = 0, MAT_VERDANTIUM = 0, MAT_MORPHIUM = 0, MAT_METALHYDROGEN = 0, MAT_SUPERMATTER = 0) + //VOREStation Edit - Broke this into lines + materials = list( + DEFAULT_WALL_MATERIAL = 0, + "glass" = 0, + MAT_PLASTEEL = 0, + "plastic" = 0, + MAT_GRAPHITE = 0, + "gold" = 0, + "silver" = 0, + "osmium" = 0, + MAT_LEAD = 0, + "phoron" = 0, + "uranium" = 0, + "diamond" = 0, + MAT_DURASTEEL = 0, + MAT_VERDANTIUM = 0, + MAT_MORPHIUM = 0, + MAT_METALHYDROGEN = 0, + MAT_SUPERMATTER = 0, + MAT_TITANIUM = 0) hidden_materials = list(MAT_PLASTEEL, MAT_DURASTEEL, MAT_GRAPHITE, MAT_VERDANTIUM, MAT_MORPHIUM, MAT_METALHYDROGEN, MAT_SUPERMATTER) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 192df50bec..db70d08863 100755 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -48,6 +48,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, req_access = list(access_research) //Data and setting manipulation requires scientist access. + var/protofilter //String to filter protolathe designs by + var/circuitfilter //String to filter circuit designs by + /obj/machinery/computer/rdconsole/proc/CallMaterialName(var/ID) var/return_name = ID switch(return_name) @@ -169,7 +172,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, else if(href_list["updt_tech"]) //Update the research holder with information from the technology disk. screen = 0.0 - spawn(50) + spawn(5 SECONDS) screen = 1.2 files.AddTech2Known(t_disk.stored) updateUsrDialog() @@ -192,7 +195,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, else if(href_list["updt_design"]) //Updates the research holder with design data from the design disk. screen = 0.0 - spawn(50) + spawn(5 SECONDS) screen = 1.4 files.AddDesign2Known(d_disk.blueprint) updateUsrDialog() @@ -235,7 +238,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, screen = 0.1 updateUsrDialog() flick("d_analyzer_process", linked_destroy) - spawn(24) + spawn(2.4 SECONDS) if(linked_destroy) linked_destroy.busy = 0 if(!linked_destroy.loaded_item) @@ -283,7 +286,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, to_chat(usr, "You must connect to the network first.") else griefProtection() //Putting this here because I dont trust the sync process - spawn(30) + spawn(3 SECONDS) if(src) for(var/obj/machinery/r_n_d/server/S in machines) var/server_processed = 0 @@ -319,8 +322,38 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(being_built) linked_lathe.addToQueue(being_built) + else if(href_list["buildfive"]) //Causes the Protolathe to build 5 of something. + if(linked_lathe) + var/datum/design/being_built = null + for(var/datum/design/D in files.known_designs) + if(D.id == href_list["buildfive"]) + being_built = D + break + if(being_built) + for(var/i = 1 to 5) + linked_lathe.addToQueue(being_built) + screen = 3.1 - updateUsrDialog() + + else if(href_list["protofilter"]) + var/filterstring = input(usr, "Input a filter string, or blank to not filter:", "Design Filter", protofilter) as null|text + if(!Adjacent(usr)) + return + if(isnull(filterstring)) //Clicked Cancel + return + if(filterstring == "") //Cleared value + protofilter = null + protofilter = sanitize(filterstring, 25) + + else if(href_list["circuitfilter"]) + var/filterstring = input(usr, "Input a filter string, or blank to not filter:", "Design Filter", circuitfilter) as null|text + if(!Adjacent(usr)) + return + if(isnull(filterstring)) //Clicked Cancel + return + if(filterstring == "") //Cleared value + circuitfilter = null + circuitfilter = sanitize(filterstring, 25) else if(href_list["imprint"]) //Causes the Circuit Imprinter to build something. if(linked_imprinter) @@ -332,7 +365,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(being_built) linked_imprinter.addToQueue(being_built) screen = 4.1 - updateUsrDialog() else if(href_list["disposeI"] && linked_imprinter) //Causes the circuit imprinter to dispose of a single reagent (all of it) linked_imprinter.reagents.del_reagent(href_list["dispose"]) @@ -489,7 +521,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, else if(d_disk) dat += "
  • Disk Operations" else - dat += "
  • Disk Operations" + dat += "
  • Disk Operations" if(linked_destroy) dat += "
  • Destructive Analyzer Menu" if(linked_lathe) @@ -638,9 +670,12 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Material Amount: [linked_lathe.TotalMaterials()] cm3 (MAX: [linked_lathe.max_material_storage])
    " dat += "Chemical Volume: [linked_lathe.reagents.total_volume] (MAX: [linked_lathe.reagents.maximum_volume])
    " dat += "
      " + dat += "Filter: [protofilter ? protofilter : "None Set"]" for(var/datum/design/D in files.known_designs) if(!D.build_path || !(D.build_type & PROTOLATHE)) continue + if(protofilter && findtext(D.name, protofilter) == 0) + continue var/temp_dat for(var/M in D.materials) temp_dat += ", [D.materials[M]*linked_lathe.mat_efficiency] [CallMaterialName(M)]" @@ -649,7 +684,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(temp_dat) temp_dat = " \[[copytext(temp_dat, 3)]\]" if(linked_lathe.canBuild(D)) - dat += "
    • [D.name][temp_dat]" + dat += "
    • [D.name](x5)[temp_dat]" else dat += "
    • [D.name][temp_dat]" dat += "
    " @@ -683,7 +718,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(3.3) //Protolathe Chemical Storage Submenu dat += "Main Menu || " dat += "Protolathe Menu
    " - dat += "Chemical Storage

    " + dat += "Chemical Storage:

    " for(var/datum/reagent/R in linked_lathe.reagents.reagent_list) dat += "Name: [R.name] | Units: [R.volume] " dat += "(Purge)
    " @@ -692,7 +727,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(3.4) // Protolathe queue dat += "Main Menu || " dat += "Protolathe Menu
    " - dat += "Queue

    " + dat += "Protolathe Construction Queue:

    " if(!linked_lathe.queue.len) dat += "Empty" else @@ -721,9 +756,12 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Material Amount: [linked_imprinter.TotalMaterials()] cm3
    " dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
    " dat += "
      " + dat += "Filter: [circuitfilter ? circuitfilter : "None Set"]" for(var/datum/design/D in files.known_designs) if(!D.build_path || !(D.build_type & IMPRINTER)) continue + if(circuitfilter && findtext(D.name, circuitfilter) == 0) + continue var/temp_dat for(var/M in D.materials) temp_dat += ", [D.materials[M]*linked_imprinter.mat_efficiency] [CallMaterialName(M)]" @@ -794,8 +832,10 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "List of Researched Technologies and Designs:" dat += GetResearchListInfo() - user << browse("Research and Development Console
      [dat.Join()]", "window=rdconsole;size=850x600") - onclose(user, "rdconsole") + dat = jointext(dat, null) + var/datum/browser/popup = new(user, "rdconsole", "Research and Development Console", 850, 600) + popup.set_content(dat) + popup.open() /obj/machinery/computer/rdconsole/robotics name = "Robotics R&D Console" diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 94762fc691..a1bc577bb8 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -31,7 +31,7 @@ var/tot_rating = 0 for(var/obj/item/weapon/stock_parts/SP in src) tot_rating += SP.rating - idle_power_usage /= max(1, tot_rating) + update_idle_power_usage(initial(idle_power_usage) / max(1, tot_rating)) /obj/machinery/r_n_d/server/Initialize() . = ..() diff --git a/code/modules/resleeving/infomorph.dm b/code/modules/resleeving/infomorph.dm index e734e19108..45c5d4193b 100644 --- a/code/modules/resleeving/infomorph.dm +++ b/code/modules/resleeving/infomorph.dm @@ -550,24 +550,22 @@ var/global/list/default_infomorph_software = list() return 1 /mob/living/silicon/infomorph/examine(mob/user) - ..(user, infix = ", personal AI") + . = ..(user, infix = ", personal AI") - var/msg = "" switch(src.stat) if(CONSCIOUS) - if(!src.client) msg += "\nIt appears to be in stand-by mode." //afk - if(UNCONSCIOUS) msg += "\nIt doesn't seem to be responding." - if(DEAD) msg += "\nIt looks completely unsalvageable." - msg += "\n*---------*" + if(!src.client) . += "It appears to be in stand-by mode." //afk + if(UNCONSCIOUS) . += "It doesn't seem to be responding." + if(DEAD) . += "It looks completely unsalvageable." + . += "*---------*" - if(print_flavor_text()) msg += "\n[print_flavor_text()]\n" + if(print_flavor_text()) + . += "[print_flavor_text()]" if (pose) if( findtext(pose,".",length(pose)) == 0 && findtext(pose,"!",length(pose)) == 0 && findtext(pose,"?",length(pose)) == 0 ) pose = addtext(pose,".") //Makes sure all emotes end with a period. - msg += "\nIt is [pose]" - - to_chat(user,msg) + . += "It is [pose]" /mob/living/silicon/infomorph/Life() //We're dead or EMP'd or something. diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index a3a794c4fd..cbf3a6af4c 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -472,10 +472,6 @@ var/obj/item/weapon/grab/G = W if(!ismob(G.affecting)) return - for(var/mob/living/carbon/slime/M in range(1, G.affecting)) - if(M.Victim == G.affecting) - to_chat(usr, "[G.affecting:name] will not fit into the [src.name] because they have a slime latched onto their head.") - return var/mob/M = G.affecting if(put_mob(M)) qdel(G) diff --git a/code/modules/scripting/Implementations/Telecomms.dm b/code/modules/scripting/Implementations/Telecomms.dm index 98052576d4..ffe15da21d 100644 --- a/code/modules/scripting/Implementations/Telecomms.dm +++ b/code/modules/scripting/Implementations/Telecomms.dm @@ -253,7 +253,7 @@ datum/signal newsign.data["realname"] = newsign.data["name"] newsign.data["job"] = job newsign.data["compression"] = 0 - newsign.data["message"] = message + newsign.data["message"] = message_to_multilingual(message) newsign.data["type"] = 2 // artificial broadcast if(!isnum(freq)) freq = text2num(freq) @@ -264,7 +264,7 @@ datum/signal newsign.data["radio"] = hradio - newsign.data["vmessage"] = message + newsign.data["vmessage"] = message_to_multilingual(message) newsign.data["vname"] = source newsign.data["vmask"] = 0 newsign.data["level"] = list() diff --git a/code/modules/security levels/security levels.dm b/code/modules/security levels/security levels.dm index 8224b72e22..4929b62bd6 100644 --- a/code/modules/security levels/security levels.dm +++ b/code/modules/security levels/security levels.dm @@ -64,10 +64,6 @@ else security_announcement_down.Announce("[config.alert_desc_red_downto]", "Attention! Code red!") security_level = SEC_LEVEL_RED - /* - At the time of commit, setting status displays didn't work properly - var/obj/machinery/computer/communications/CC = locate(/obj/machinery/computer/communications,world) - if(CC) - CC.post_status("alert", "redalert")*/ if(SEC_LEVEL_DELTA) security_announcement_up.Announce("[config.alert_desc_delta]", "Attention! Delta alert level reached!", new_sound = 'sound/effects/siren.ogg') security_level = SEC_LEVEL_DELTA @@ -84,6 +80,10 @@ atc.reroute_traffic(yes = 1) // Tell them fuck off we're busy. else atc.reroute_traffic(yes = 0) + + spawn() + SSnightshift.check_nightshift() + admin_chat_message(message = "Security level is now: [uppertext(get_security_level())]", color = "#CC2222") //VOREStation Add /proc/get_security_level() diff --git a/code/modules/shieldgen/directional_shield.dm b/code/modules/shieldgen/directional_shield.dm index 00c416895e..818b78a21e 100644 --- a/code/modules/shieldgen/directional_shield.dm +++ b/code/modules/shieldgen/directional_shield.dm @@ -203,9 +203,9 @@ playsound(get_turf(src), 'sound/machines/defib_safetyOff.ogg', 75, 0) /obj/item/shield_projector/examine(var/mob/user) - ..() - if(get_dist(src, user) <= 1) - to_chat(user, "\The [src]'s shield matrix is at [round( (shield_health / max_shield_health) * 100, 0.01)]% strength.") + . = ..() + if(Adjacent(user)) + . += "Its shield matrix is at [round( (shield_health / max_shield_health) * 100, 0.01)]% strength." /obj/item/shield_projector/emp_act(var/severity) adjust_health(-max_shield_health / severity) // A strong EMP will kill the shield instantly, but weaker ones won't on the first hit. diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm index 923d1ec327..21e244cc36 100644 --- a/code/modules/shieldgen/emergency_shield.dm +++ b/code/modules/shieldgen/emergency_shield.dm @@ -153,9 +153,10 @@ create_shields() - idle_power_usage = 0 + var/new_power_usage = 0 for(var/obj/machinery/shield/shield_tile in deployed_shields) - idle_power_usage += shield_tile.shield_idle_power + new_power_usage += shield_tile.shield_idle_power + update_idle_power_usage(new_power_usage) update_use_power(USE_POWER_IDLE) /obj/machinery/shieldgen/proc/shields_down() @@ -205,7 +206,7 @@ new_power_usage += shield_tile.shield_idle_power if (new_power_usage != idle_power_usage) - idle_power_usage = new_power_usage + update_idle_power_usage(new_power_usage) use_power(0) check_delay = 60 diff --git a/code/modules/shieldgen/handheld_defuser.dm b/code/modules/shieldgen/handheld_defuser.dm index 21eca0587f..471aa90ef6 100644 --- a/code/modules/shieldgen/handheld_defuser.dm +++ b/code/modules/shieldgen/handheld_defuser.dm @@ -54,5 +54,5 @@ /obj/item/weapon/shield_diffuser/examine(mob/user) . = ..() - to_chat(user, "The charge meter reads [cell ? cell.percent() : 0]%") - to_chat(user, "It is [enabled ? "enabled" : "disabled"].") \ No newline at end of file + . += "The charge meter reads [cell ? cell.percent() : 0]%" + . += "It is [enabled ? "enabled" : "disabled"]." diff --git a/code/modules/shieldgen/shield_diffuser.dm b/code/modules/shieldgen/shield_diffuser.dm index 52c57db020..f8d9328402 100644 --- a/code/modules/shieldgen/shield_diffuser.dm +++ b/code/modules/shieldgen/shield_diffuser.dm @@ -89,6 +89,6 @@ /obj/machinery/shield_diffuser/examine(var/mob/user) . = ..() - to_chat(user, "It is [enabled ? "enabled" : "disabled"].") + . += "It is [enabled ? "enabled" : "disabled"]." if(alarm) - to_chat(user, "A red LED labeled \"Proximity Alarm\" is blinking on the control panel.") + . += "A red LED labeled \"Proximity Alarm\" is blinking on the control panel." diff --git a/code/modules/shuttles/landmarks.dm b/code/modules/shuttles/landmarks.dm index 38f2d41f25..0c750dc246 100644 --- a/code/modules/shuttles/landmarks.dm +++ b/code/modules/shuttles/landmarks.dm @@ -44,7 +44,6 @@ else base_area = locate(base_area || world.area) - name = (name + " ([x],[y])") SSshuttles.register_landmark(landmark_tag, src) /obj/effect/shuttle_landmark/LateInitialize() @@ -124,14 +123,16 @@ name = "Navpoint" landmark_tag = "navpoint" flags = SLANDMARK_FLAG_AUTOSET + var/original_name = null // Save our mapped-in name so we can rebuild our name when moving sectors. /obj/effect/shuttle_landmark/automatic/Initialize() + original_name = name landmark_tag += "-[x]-[y]-[z]-[random_id("landmarks",1,9999)]" return ..() /obj/effect/shuttle_landmark/automatic/sector_set(var/obj/effect/overmap/visitable/O) ..() - name = ("[O.name] - [initial(name)] ([x],[y])") + name = ("[O.name] - [original_name] ([x],[y])") //Subtype that calls explosion on init to clear space for shuttles /obj/effect/shuttle_landmark/automatic/clearing diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index 808a1f55e7..7e393c99d1 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -249,16 +249,16 @@ log_shuttle("Shuttle [src] aborting attempt_move() because current_location=[current_location] refuses.") return FALSE + // Observer pattern pre-move + var/old_location = current_location + GLOB.shuttle_pre_move_event.raise_event(src, old_location, destination) + current_location.shuttle_departed(src) + log_shuttle("[src] moving to [destination]. Areas are [english_list(shuttle_area)]") var/list/translation = list() for(var/area/A in shuttle_area) log_shuttle("Translating [A]") translation += get_turf_translation(get_turf(current_location), get_turf(destination), A.contents) - var/old_location = current_location - - // Observer pattern pre-move - GLOB.shuttle_pre_move_event.raise_event(src, old_location, destination) - current_location.shuttle_departed(src) // Actually do it! (This never fails) perform_shuttle_move(destination, translation) @@ -331,6 +331,10 @@ //M.throw_at_random(FALSE, 4, 1) if(istype(M, /mob/living/carbon)) M.Weaken(3) + //VOREStation Add + if(move_direction) + throw_a_mob(M,move_direction) + //VOREStation Add End // We only need to rebuild powernets for our cables. No need to check machines because they are on top of cables. for(var/obj/structure/cable/C in A) powernets |= C.powernet diff --git a/code/modules/shuttles/shuttle_emergency.dm b/code/modules/shuttles/shuttle_emergency.dm index 4310b9e6ce..efb321e55c 100644 --- a/code/modules/shuttles/shuttle_emergency.dm +++ b/code/modules/shuttles/shuttle_emergency.dm @@ -37,7 +37,7 @@ if (emergency_shuttle.evac) priority_announcement.Announce(replacetext(replacetext(using_map.emergency_shuttle_leaving_dock, "%dock_name%", "[using_map.dock_name]"), "%ETA%", "[estimated_time] minute\s")) else - priority_announcement.Announce(replacetext(replacetext(using_map.shuttle_leaving_dock, "%dock_name%", "[using_map.dock_name]"), "%ETA%", "[estimated_time] minute\s")) + priority_announcement.Announce(replacetext(replacetext(using_map.shuttle_leaving_dock, "%dock_name%", "[using_map.dock_name]"), "%ETA%", "[estimated_time] minute\s"), "Transfer System", 'sound/AI/tramdepart.ogg') ..() /datum/shuttle/autodock/ferry/emergency/can_launch(var/user) diff --git a/code/modules/shuttles/shuttles_vr.dm b/code/modules/shuttles/shuttles_vr.dm index bc643d3838..7582e37ae7 100644 --- a/code/modules/shuttles/shuttles_vr.dm +++ b/code/modules/shuttles/shuttles_vr.dm @@ -1,3 +1,25 @@ +/datum/shuttle + var/move_direction //Null is legacy behavior, otherwise people are thrown in the opposite direction + +/datum/shuttle/proc/throw_a_mob(var/mob/living/carbon/M, direction) + direction = turn(direction, 180) + var/atom/target + switch(direction) + if(NORTH) + var/y = (M.y + world.view) > world.maxy ? world.maxy : M.y + world.view + target = locate(M.x, y, M.z) + if(SOUTH) + var/y = (M.y - world.view) < 1 ? 1 : M.y - world.view + target = locate(M.x, y, M.z) + if(EAST) + var/x = (M.x + world.view) > world.maxx ? world.maxx : M.x + world.view + target = locate(x, M.y, M.z) + if(WEST) + var/x = (M.x - world.view) < 1 ? 1 : M.x - world.view + target = locate(x, M.y, M.z) + if(target) + M.throw_at(target, world.view, 1) + /obj/machinery/computer/shuttle_control/multi/admin name = "centcom shuttle control console" req_access = list(access_cent_general) diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm index 3ae280a65b..831d44ba2f 100644 --- a/code/modules/spells/spellbook.dm +++ b/code/modules/spells/spellbook.dm @@ -300,13 +300,11 @@ icon_state ="booksmoke" desc = "This book is overflowing with the dank arts." -/obj/item/weapon/spellbook/oneuse/smoke/recoil(mob/user as mob) +/obj/item/weapon/spellbook/oneuse/smoke/recoil(mob/living/user as mob) ..() to_chat(user, "Your stomach rumbles...") if(user.nutrition) - user.nutrition -= 200 - if(user.nutrition <= 0) - user.nutrition = 0 + user.adjust_nutrition(-200) /obj/item/weapon/spellbook/oneuse/blind spell = /spell/targeted/genetic/blind diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 03fb7ad40f..e6e4554090 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -162,7 +162,7 @@ // Not staying still fails you too. if(success) var/calc_duration = rand(S.min_duration, S.max_duration) - if(!do_mob(user, M, calc_duration * toolspeed, zone)) + if(!do_mob(user, M, calc_duration * toolspeed, zone, exclusive = TRUE)) success = FALSE to_chat(user, "You must remain close to and keep focused on your patient to conduct surgery.") diff --git a/code/modules/tables/presets_vr.dm b/code/modules/tables/presets_vr.dm index 085c4c6d8f..ccb852a256 100644 --- a/code/modules/tables/presets_vr.dm +++ b/code/modules/tables/presets_vr.dm @@ -19,3 +19,24 @@ return /obj/structure/table/alien/blue icon = 'icons/turf/shuttle_alien_blue.dmi' + + +/obj/structure/table/fancyblack + name = "fancy table" + desc = "Cloth!" + icon = 'icons/obj/tablesfancy_vr.dmi' + icon_state = "fancyblack" + flipped = -1 + can_reinforce = FALSE + can_plate = FALSE + +/obj/structure/table/fancyblack/New() + material = get_material_by_name("fancyblack") + verbs -= /obj/structure/table/verb/do_flip + verbs -= /obj/structure/table/proc/do_put + + ..() + +/obj/structure/table/fancyblack/dismantle(obj/item/weapon/wrench/W, mob/user) + to_chat(user, "You cannot dismantle \the [src].") + return \ No newline at end of file diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm index c5b7bde70e..f853e224fc 100644 --- a/code/modules/tables/tables.dm +++ b/code/modules/tables/tables.dm @@ -28,8 +28,6 @@ var/list/table_icon_cache = list() var/carpeted = 0 var/carpeted_type = /obj/item/stack/tile/carpet - var/list/connections = list("nw0", "ne0", "sw0", "se0") - var/item_place = 1 //allows items to be placed on the table, but not on benches. /obj/structure/table/proc/update_material() @@ -92,11 +90,11 @@ var/list/table_icon_cache = list() if(health < maxhealth) switch(health / maxhealth) if(0.0 to 0.5) - to_chat(user, "It looks severely damaged!") + . += "It looks severely damaged!" if(0.25 to 0.5) - to_chat(user, "It looks damaged!") + . += "It looks damaged!" if(0.5 to 1.0) - to_chat(user, "It has a few scrapes and dents.") + . += "It has a few scrapes and dents." /obj/structure/table/attackby(obj/item/weapon/W, mob/user) @@ -402,60 +400,6 @@ var/list/table_icon_cache = list() if(carpeted) overlays += "carpet_flip[type]" -// set propagate if you're updating a table that should update tables around it too, for example if it's a new table or something important has changed (like material). -/obj/structure/table/proc/update_connections(propagate=0) - if(!material) - connections = list("0", "0", "0", "0") - - if(propagate) - for(var/obj/structure/table/T in oview(src, 1)) - T.update_connections() - return - - var/list/blocked_dirs = list() - for(var/obj/structure/window/W in get_turf(src)) - if(W.is_fulltile()) - connections = list("0", "0", "0", "0") - return - blocked_dirs |= W.dir - - for(var/D in list(NORTH, SOUTH, EAST, WEST) - blocked_dirs) - var/turf/T = get_step(src, D) - for(var/obj/structure/window/W in T) - if(W.is_fulltile() || W.dir == reverse_dir[D]) - blocked_dirs |= D - break - else - if(W.dir != D) // it's off to the side - blocked_dirs |= W.dir|D // blocks the diagonal - - for(var/D in list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) - blocked_dirs) - var/turf/T = get_step(src, D) - - for(var/obj/structure/window/W in T) - if(W.is_fulltile() || W.dir & reverse_dir[D]) - blocked_dirs |= D - break - - // Blocked cardinals block the adjacent diagonals too. Prevents weirdness with tables. - for(var/x in list(NORTH, SOUTH)) - for(var/y in list(EAST, WEST)) - if((x in blocked_dirs) || (y in blocked_dirs)) - blocked_dirs |= x|y - - var/list/connection_dirs = list() - - for(var/obj/structure/table/T in orange(src, 1)) - var/T_dir = get_dir(src, T) - if(T_dir in blocked_dirs) continue - if(material && T.material && material.name == T.material.name && flipped == T.flipped) - connection_dirs |= T_dir - if(propagate) - spawn(0) - T.update_connections() - T.update_icon() - - connections = dirs_to_corner_states(connection_dirs) #define CORNER_NONE 0 #define CORNER_COUNTERCLOCKWISE 1 diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index db5459404d..9f1a34760e 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -38,8 +38,9 @@ return ..() /obj/machinery/computer/telescience/examine(mob/user) - ..() - to_chat(user, "There are [crystals.len ? crystals.len : "no"] bluespace crystal\s in the crystal slots.") + . = ..() + if(Adjacent(user)) + . += "There are [crystals.len ? crystals.len : "no"] bluespace crystal\s in the crystal slots." /obj/machinery/computer/telescience/Initialize() . = ..() diff --git a/code/modules/vchat/css/ss13styles.css b/code/modules/vchat/css/ss13styles.css index 1e60cb435e..d4676f123e 100644 --- a/code/modules/vchat/css/ss13styles.css +++ b/code/modules/vchat/css/ss13styles.css @@ -162,8 +162,10 @@ h1.alert, h2.alert {color: #000000;} .vulpkanin {color: #B97A57;} .enochian {color: #848A33; letter-spacing:-1pt; word-spacing:4pt; font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;} .daemon {color: #5E339E; letter-spacing:-1pt; word-spacing:0pt; font-family: "Courier New", Courier, monospace;} -.bug {color: #9e9e39;} +.bug {color: #9e9e39;} .vox {color: #AA00AA;} +.promethean {color: #5A5A5A; font-family:"Comic Sans MS","Comic Sans",cursive;} +.inverted .promethean {color: #A5A5A5; font-family:"Comic Sans MS","Comic Sans",cursive;} .zaddat {color: #941C1C;} .rough {font-family: "Trebuchet MS", cursive, sans-serif;} .say_quote {font-family: Georgia, Verdana, sans-serif;} diff --git a/code/modules/vchat/js/vchat.js b/code/modules/vchat/js/vchat.js index 4a25f1bec2..90a0b97284 100644 --- a/code/modules/vchat/js/vchat.js +++ b/code/modules/vchat/js/vchat.js @@ -136,7 +136,7 @@ function start_vue() { //The table to map game css classes to our vchat categories type_table: [ { - matches: ".say, .emote", + matches: ".filter_say, .say, .emote", becomes: "vc_localchat", pretty: "Local Chat", tooltip: "In-character local messages (say, emote, etc)", @@ -144,7 +144,7 @@ function start_vue() { admin: false }, { - matches: ".alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster", + matches: ".filter_radio, .alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster", becomes: "vc_radio", pretty: "Radio Comms", tooltip: "All departments of radio messages", @@ -152,7 +152,7 @@ function start_vue() { admin: false }, { - matches: ".notice:not(.pm), .adminnotice, .info, .sinister, .cult", + matches: ".filter_notice, .notice:not(.pm), .adminnotice, .info, .sinister, .cult", becomes: "vc_info", pretty: "Notices", tooltip: "Non-urgent messages from the game and items", @@ -160,7 +160,7 @@ function start_vue() { admin: false }, { - matches: ".critical, .danger, .userdanger, .warning:not(.pm), .italics", + matches: ".filter_warning, .warning:not(.pm), .critical, .userdanger, .italics", becomes: "vc_warnings", pretty: "Warnings", tooltip: "Urgent messages from the game and items", @@ -168,7 +168,7 @@ function start_vue() { admin: false }, { - matches: ".deadsay", + matches: ".filter_deadsay, .deadsay", becomes: "vc_deadchat", pretty: "Deadchat", tooltip: "All of deadchat", @@ -176,7 +176,7 @@ function start_vue() { admin: false }, { - matches: ".ooc:not(.looc)", + matches: ".filter_ooc, .ooc:not(.looc)", becomes: "vc_globalooc", pretty: "Global OOC", tooltip: "The bluewall of global OOC messages", @@ -194,7 +194,7 @@ function start_vue() { }, //VOREStation Add End { - matches: ".pm", + matches: ".filter_pm, .pm", becomes: "vc_adminpm", pretty: "Admin PMs", tooltip: "Messages to/from admins ('adminhelps'), always enabled", @@ -202,7 +202,7 @@ function start_vue() { admin: false }, { - matches: ".admin_channel", + matches: ".filter_ASAY, .admin_channel", becomes: "vc_adminchat", pretty: "Admin Chat", tooltip: "ASAY messages", @@ -210,7 +210,7 @@ function start_vue() { admin: true }, { - matches: ".mod_channel", + matches: ".filter_MSAY, .mod_channel", becomes: "vc_modchat", pretty: "Mod Chat", tooltip: "MSAY messages", @@ -218,7 +218,7 @@ function start_vue() { admin: true }, { - matches: ".event_channel", + matches: ".filter_ESAY, .event_channel", becomes: "vc_eventchat", pretty: "Event Chat", tooltip: "ESAY messages", @@ -226,14 +226,46 @@ function start_vue() { admin: true }, { - matches: ".ooc.looc, .ooc .looc", //Dumb game + matches: ".filter_combat, .danger", + becomes: "vc_combat", + pretty: "Combat Logs", + tooltip: "Urist McTraitor has stabbed you with a knife!", + required: false, + admin: false + }, + { + matches: ".filter_adminlogs, .log_message", + becomes: "vc_adminlogs", + pretty: "Admin Logs", + tooltip: "ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z", + required: false, + admin: true + }, + { + matches: ".filter_attacklogs", + becomes: "vc_attacklogs", + pretty: "Attack Logs", + tooltip: "Urist McTraitor has shot John Doe", + required: false, + admin: true + }, + { + matches: ".filter_debuglogs", + becomes: "vc_debuglogs", + pretty: "Debug Logs", + tooltip: "DEBUG: SSPlanets subsystem Recover().", + required: false, + admin: true + }, + { + matches: ".ooc.looc, .ooc, .looc", //Dumb game becomes: "vc_looc", pretty: "Local OOC", tooltip: "Local OOC messages", required: false //YW Edit }, { - matches: ".boldannounce", + matches: ".boldannounce, .filter_system", becomes: "vc_system", pretty: "System Messages", tooltip: "Messages from your client, always enabled", @@ -556,6 +588,10 @@ function start_vue() { } } + newmessage.content = newmessage.content.replace( + /(\b(https?):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z09+&@#\/%=~_|])/img, //Honestly good luck with this regex ~Gear + '$1'); + //Unread indicator and insertion into current tab shown messages if sensible if(this.current_categories.length && (this.current_categories.indexOf(newmessage.category) < 0)) { //Not in the current categories if (isNaN(this.unread_messages[newmessage.category])) { diff --git a/code/modules/vchat/vchat_db.dm b/code/modules/vchat/vchat_db.dm index 0dc7e7982d..3fc0833aca 100644 --- a/code/modules/vchat/vchat_db.dm +++ b/code/modules/vchat/vchat_db.dm @@ -103,7 +103,7 @@ GLOBAL_DATUM(vchatdb, /database) var/list/messagedef = list( "INSERT INTO messages (ckey,worldtime,message) VALUES (?, ?, ?)", ckey, - world.time, + world.time || 0, message) return vchat_exec_update(messagedef) diff --git a/code/modules/vehicles/Securitrain_vr.dm b/code/modules/vehicles/Securitrain_vr.dm index 27d8847446..81afed4177 100644 --- a/code/modules/vehicles/Securitrain_vr.dm +++ b/code/modules/vehicles/Securitrain_vr.dm @@ -207,14 +207,11 @@ return ..() /obj/vehicle/train/security/engine/examine(mob/user) - if(!..(user, 1)) - return - - if(!istype(usr, /mob/living/carbon/human)) - return - - to_chat(user, "The power light is [on ? "on" : "off"].\nThere are[key ? "" : " no"] keys in the ignition.") - to_chat(user, "The charge meter reads [cell? round(cell.percent(), 0.01) : 0]%") + . = ..() + if(Adjacent(user)) + . += "The power light is [on ? "on" : "off"]." + . += "There are[key ? "" : " no"] keys in the ignition." + . += "The charge meter reads [cell? round(cell.percent(), 0.01) : 0]%" /obj/vehicle/train/security/engine/verb/start_engine() set name = "Start engine" diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm index c02e19fdb4..eb4f1141b8 100644 --- a/code/modules/vehicles/cargo_train.dm +++ b/code/modules/vehicles/cargo_train.dm @@ -192,14 +192,10 @@ return ..() /obj/vehicle/train/engine/examine(mob/user) - if(!..(user, 1)) - return - - if(!istype(usr, /mob/living/carbon/human)) - return - - to_chat(user, "The power light is [on ? "on" : "off"].\nThere are[key ? "" : " no"] keys in the ignition.") - to_chat(user, "The charge meter reads [cell? round(cell.percent(), 0.01) : 0]%") + . = ..() + if(ishuman(user) && Adjacent(user)) + . += "The power light is [on ? "on" : "off"].\nThere are[key ? "" : " no"] keys in the ignition." + . += "The charge meter reads [cell? round(cell.percent(), 0.01) : 0]%" /obj/vehicle/train/engine/verb/start_engine() set name = "Start engine" diff --git a/code/modules/vehicles/quad.dm b/code/modules/vehicles/quad.dm index 99adccf459..657d4976f4 100644 --- a/code/modules/vehicles/quad.dm +++ b/code/modules/vehicles/quad.dm @@ -45,19 +45,18 @@ icon_state = "quad_keys" w_class = ITEMSIZE_TINY -/obj/vehicle/train/engine/quadbike/Move(var/turf/destination) - var/turf/T = get_turf(src) - ..() //Move it move it, so we can test it test it. - if(T != get_turf(src) && !istype(destination, T.type)) //Did we move at all, and are we changing turf types? - if(istype(destination, /turf/simulated/floor/water)) +/obj/vehicle/train/engine/quadbike/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() //Move it move it, so we can test it test it. + if(!istype(loc, old_loc.type) && !istype(old_loc, loc.type)) //Did we move at all, and are we changing turf types? + if(istype(loc, /turf/simulated/floor/water)) speed_mod = outdoors_speed_mod * 4 //It kind of floats due to its tires, but it is slow. - else if(istype(destination, /turf/simulated/floor/outdoors/rocks)) + else if(istype(loc, /turf/simulated/floor/outdoors/rocks)) speed_mod = initial(speed_mod) //Rocks are good, rocks are solid. - else if(istype(destination, /turf/simulated/floor/outdoors/dirt) || istype(destination, /turf/simulated/floor/outdoors/grass)) + else if(istype(loc, /turf/simulated/floor/outdoors/dirt) || istype(loc, /turf/simulated/floor/outdoors/grass)) speed_mod = outdoors_speed_mod //Dirt and grass are the outdoors bench mark. - else if(istype(destination, /turf/simulated/floor/outdoors/mud)) + else if(istype(loc, /turf/simulated/floor/outdoors/mud)) speed_mod = outdoors_speed_mod * 1.5 //Gets us roughly 1. Mud may be fun, but it's not the best. - else if(istype(destination, /turf/simulated/floor/outdoors/snow)) + else if(istype(loc, /turf/simulated/floor/outdoors/snow)) speed_mod = outdoors_speed_mod * 1.7 //Roughly a 1.25. Snow is coarse and wet and gets everywhere, especially your electric motors. else speed_mod = initial(speed_mod) @@ -193,8 +192,8 @@ ..() update_icon() -/obj/vehicle/train/trolley/trailer/Move() - ..() +/obj/vehicle/train/trolley/trailer/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() if(lead) switch(dir) //Due to being a Big Boy sprite, it has to have special pixel shifting to look 'normal'. if(1) diff --git a/code/modules/vehicles/rover_vr.dm b/code/modules/vehicles/rover_vr.dm index 47a87d1389..fa7e51ebd9 100644 --- a/code/modules/vehicles/rover_vr.dm +++ b/code/modules/vehicles/rover_vr.dm @@ -205,14 +205,11 @@ return ..() /obj/vehicle/train/rover/engine/examine(mob/user) - if(!..(user, 1)) - return - - if(!istype(usr, /mob/living/carbon/human)) - return - - to_chat(user, "The power light is [on ? "on" : "off"].\nThere are[key ? "" : " no"] keys in the ignition.") - to_chat(user, "The charge meter reads [cell? round(cell.percent(), 0.01) : 0]%") + . = ..() + if(Adjacent(user)) + . += "The power light is [on ? "on" : "off"]." + . += "There are[key ? "" : " no"] keys in the ignition." + . += "The charge meter reads [cell? round(cell.percent(), 0.01) : 0]%" /obj/vehicle/train/rover/engine/verb/start_engine() set name = "Start engine" diff --git a/code/modules/vehicles/train.dm b/code/modules/vehicles/train.dm index 24d24b1179..67fc0735a3 100644 --- a/code/modules/vehicles/train.dm +++ b/code/modules/vehicles/train.dm @@ -29,14 +29,11 @@ /obj/vehicle/train/Move() var/old_loc = get_turf(src) - if(..()) + if((. = ..())) if(tow) tow.Move(old_loc) - return 1 - else - if(lead) - unattach() - return 0 + else if(lead) + unattach() /obj/vehicle/train/Bump(atom/Obstacle) if(!istype(Obstacle, /atom/movable)) diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 87a1b72466..ed7bdc9a2a 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -66,54 +66,29 @@ /obj/vehicle/unbuckle_mob(mob/living/buckled_mob, force = FALSE) . = ..(buckled_mob, force) - buckled_mob.update_water() + buckled_mob?.update_water() if(riding_datum) riding_datum.restore_position(buckled_mob) riding_datum.handle_vehicle_offsets() // So the person in back goes to the front. -/obj/vehicle/set_dir(newdir) - ..(newdir) - if(riding_datum) - riding_datum.handle_vehicle_offsets() +/obj/vehicle/Move(var/newloc, var/direction, var/movetime) + if(world.time < l_move_time + move_delay) //This AND the riding datum move speed limit? + return -//MOVEMENT -/obj/vehicle/relaymove(mob/user, direction) - if(riding_datum) - riding_datum.handle_ride(user, direction) + if(mechanical && on && powered && cell.charge < charge_use) + turn_off() + return -/obj/vehicle/Moved() . = ..() - if(riding_datum) - riding_datum.handle_vehicle_layer() - riding_datum.handle_vehicle_offsets() -/obj/vehicle/Move() - if(world.time > l_move_time + move_delay) - var/old_loc = get_turf(src) - if(mechanical && on && powered && cell.charge < charge_use) - turn_off() + if(mechanical && on && powered) + cell.use(charge_use) - var/init_anc = anchored - anchored = 0 - if(!..()) - anchored = init_anc - return 0 - - set_dir(get_dir(old_loc, loc)) - anchored = init_anc - - if(mechanical && on && powered) - cell.use(charge_use) - - //Dummy loads do not have to be moved as they are just an overlay - //See load_object() proc in cargo_trains.dm for an example - if(load && !istype(load, /datum/vehicle_dummy_load)) - load.forceMove(loc) - load.set_dir(dir) - - return 1 - else - return 0 + //Dummy loads do not have to be moved as they are just an overlay + //See load_object() proc in cargo_trains.dm for an example + //Also mobs are buckled to the vehicle and get moved in atom/movable/Move's call to take care of that + if(load && !(load in buckled_mobs) && !istype(load, /datum/vehicle_dummy_load)) + load.forceMove(loc) /obj/vehicle/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/hand_labeler)) diff --git a/code/modules/virus2/analyser.dm b/code/modules/virus2/analyser.dm index e7f5dd64e3..b45dba31ed 100644 --- a/code/modules/virus2/analyser.dm +++ b/code/modules/virus2/analyser.dm @@ -1,7 +1,7 @@ /obj/machinery/disease2/diseaseanalyser name = "disease analyser" desc = "Analyzes diseases to find out information about them!" - icon = 'icons/obj/virology.dmi' + icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "analyser" anchored = 1 density = 1 diff --git a/code/modules/virus2/centrifuge.dm b/code/modules/virus2/centrifuge.dm index 433a26977b..fddfb04441 100644 --- a/code/modules/virus2/centrifuge.dm +++ b/code/modules/virus2/centrifuge.dm @@ -1,7 +1,7 @@ /obj/machinery/computer/centrifuge name = "isolation centrifuge" desc = "Used to separate things with different weight. Spin 'em round, round, right round." - icon = 'icons/obj/virology.dmi' + icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "centrifuge" var/curing var/isolating diff --git a/code/modules/virus2/dishincubator.dm b/code/modules/virus2/dishincubator.dm index 3ebe688c78..15638718a4 100644 --- a/code/modules/virus2/dishincubator.dm +++ b/code/modules/virus2/dishincubator.dm @@ -3,7 +3,7 @@ desc = "Encourages the growth of diseases. This model comes with a dispenser system and a small radiation generator." density = 1 anchored = 1 - icon = 'icons/obj/virology.dmi' + icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "incubator" var/obj/item/weapon/virusdish/dish var/obj/item/weapon/reagent_containers/glass/beaker = null diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index ea7de6ccac..742af67d46 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -424,7 +424,7 @@ stage = 2 /datum/disease2/effect/hungry/activate(var/mob/living/carbon/mob,var/multiplier) - mob.nutrition = max(0, mob.nutrition - 200) + mob.adjust_nutrition(-200) /datum/disease2/effect/fridge name = "Reduced Circulation" diff --git a/code/modules/virus2/isolator.dm b/code/modules/virus2/isolator.dm index d22b379ee1..2a6d39d230 100644 --- a/code/modules/virus2/isolator.dm +++ b/code/modules/virus2/isolator.dm @@ -8,7 +8,7 @@ desc = "Used to isolate and identify diseases, allowing for comparison with a remote database." density = 1 anchored = 1 - icon = 'icons/obj/virology.dmi' + icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "isolator" var/isolating = 0 var/state = HOME diff --git a/code/modules/virus2/items_devices.dm b/code/modules/virus2/items_devices.dm index 3e477972b0..a69cd8179e 100644 --- a/code/modules/virus2/items_devices.dm +++ b/code/modules/virus2/items_devices.dm @@ -66,9 +66,9 @@ qdel(src) /obj/item/weapon/virusdish/examine(mob/user) - ..() + . = ..() if(basic_info) - to_chat(user, "[basic_info] : More Information") + . += "[basic_info] : More Information" /obj/item/weapon/virusdish/Topic(href, href_list) . = ..() diff --git a/code/modules/vore/appearance/spider_taur_powers_vr.dm b/code/modules/vore/appearance/spider_taur_powers_vr.dm index b66026b2da..80e1264ea2 100644 --- a/code/modules/vore/appearance/spider_taur_powers_vr.dm +++ b/code/modules/vore/appearance/spider_taur_powers_vr.dm @@ -1,15 +1,6 @@ -// --------------------------------------------- -// -!-!-!-!-!-!-!-!- READ ME -!-!-!-!-!-!-!-!-!- -// --------------------------------------------- - -//Beep beep hello -// -//Use this file to define the exclusive abilities of the spidertaur folk -// -//ahuhuhuhu -//-Antsnap - -/obj/item/clothing/suit/straight_jacket/web_bindings +/obj/item/clothing/suit/web_bindings + icon = 'icons/vore/custom_clothes_vr.dmi' + icon_override = 'icons/vore/custom_clothes_vr.dmi' name = "web bindings" desc = "A webbed cocoon that completely restrains the wearer." icon = 'icons/obj/clothing/web.dmi' @@ -21,34 +12,21 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL -//yw edit start - Teshari Sprite +/*yw edit start - Teshari Sprite /Commented out until we know this is needed again if it is please just uncomment this, Izac /obj/item/clothing/suit/straight_jacket/web_bindings/get_worn_icon_file(var/body_type,var/slot_name,var/default_icon,var/inhands) if(body_type == SPECIES_TESHARI) if(!inhands) return 'icons/vore/custom_onmob_yw.dmi' else return ..() -//yw edit end +*/yw edit end -/* //Commenting all this out, as people keep abusing it. Sorry! -mob/proc/weaveWeb() - set name = "Weave Web" - set category = "Species Powers" - if(nutrition >= 500) //People decided to abuse it. Sorry. It was asked to be made so it couldn't be spammed, and what do ya know, people are spamming it everywhere. - src.visible_message("\the [src] weaves a web from their spinneret silk.") - nutrition -= 500 - spawn(30) //3 seconds to form - new /obj/effect/spider/stickyweb(src.loc) - else - to_chat(src, "You do not have enough nutrition to create webbing!") -*/ - -/mob/proc/weaveWebBindings() +/mob/living/proc/weaveWebBindings() set name = "Weave Web Bindings" set category = "Species Powers" if(nutrition >= 30) //This isn't a huge problem. This is so you can bind people up. src.visible_message("\the [src] pulls silk from their manibles and delicately weaves it into bindings.") - nutrition -= 30 + adjust_nutrition(-30) spawn(30) //5 seconds to weave the bindings~ var/obj/item/clothing/suit/straight_jacket/web_bindings/bindings = new() //This sprite is amazing, I must say. src.put_in_hands(bindings) diff --git a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm index 9503eaa1e5..4e39dfcfcf 100644 --- a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm @@ -20,7 +20,7 @@ return TRUE /datum/riding/taur/force_dismount(mob/M) - . =..() + . = ..() ridden.visible_message("[M] stops riding [ridden]!") //Hoooo boy. @@ -276,6 +276,7 @@ name = "Deer dual-color (Taur)" icon_state = "deer_s" extra_overlay = "deer_markings" + suit_sprites = 'icons/mob/taursuits_deer_vr.dmi' msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!" msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!" @@ -387,6 +388,7 @@ /datum/sprite_accessory/tail/taur/slug name = "Slug (Taur)" icon_state = "slug_s" + suit_sprites = 'icons/mob/taursuits_slug_vr.dmi' msg_owner_help_walk = "You carefully slither around %prey." msg_prey_help_walk = "%owner's huge tail slithers past beside you!" @@ -429,6 +431,7 @@ name = "Otie (Taur)" icon_state = "otie_s" extra_overlay = "otie_markings" + suit_sprites = 'icons/mob/taursuits_otie_vr.dmi' /datum/sprite_accessory/tail/taur/alraune/alraune_2c name = "Alraune (dual color)" diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm index ee3f58b234..d7814bdaab 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -367,6 +367,29 @@ color_blend_mode = ICON_MULTIPLY extra_overlay = "vulp-inner" +/datum/sprite_accessory/ears/vulp_short + name = "vulpkanin short" + desc = "" + icon_state = "vulp_terrier" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/vulp_short_dc + name = "vulpkanin short, dual-color" + desc = "" + icon_state = "vulp_terrier" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "vulp_terrier-inner" + +/datum/sprite_accessory/ears/vulp_jackal + name = "vulpkanin thin, dual-color" + desc = "" + icon_state = "vulp_jackal" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "vulp_jackal-inner" + /datum/sprite_accessory/ears/bunny_floppy name = "floopy bunny ears (colorable)" desc = "" @@ -1694,3 +1717,19 @@ 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 + name = "Ward-Takahashi Tail" + desc = "" + icon_state = "wardtakahashi_vulp" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/wartacosushi_tail_dc + name = "Ward-Takahashi Tail, dual-color" + desc = "" + icon_state = "wardtakahashi_vulp_dc" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "wardtakahashi_vulp_dc_mark" + diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 5c48e5ea22..ebde3b5eae 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -54,7 +54,6 @@ var/tmp/mob/living/owner // The mob whose belly this is. var/tmp/digest_mode = DM_HOLD // Current mode the belly is set to from digest_modes (+transform_modes if human) - var/tmp/tf_mode = DM_TRANSFORM_REPLICA // Current transformation mode. var/tmp/list/items_preserved = list() // Stuff that wont digest so we shouldn't process it again. var/tmp/next_emote = 0 // When we're supposed to print our next emote, as a world.time var/tmp/recent_sound = FALSE // Prevent audio spam @@ -201,6 +200,17 @@ var/taste if(can_taste && (taste = M.get_taste_message(FALSE))) to_chat(owner, "[M] tastes of [taste].") + //Stop AI processing in bellies + if(M.ai_holder) + M.ai_holder.go_sleep() + +// Called whenever an atom leaves this belly +/obj/belly/Exited(atom/movable/thing, atom/OldLoc) + . = ..() + if(isliving(thing) && !isbelly(thing.loc)) + var/mob/living/L = thing + if((L.stat != DEAD) && L.ai_holder) + L.ai_holder.go_wake() // Release all contents of this belly into the owning mob's location. // If that location is another mob, contents are transferred into whichever of its bellies the owning mob is in. @@ -475,7 +485,7 @@ if(!digested) items_preserved |= item else - owner.nutrition += ((nutrition_percent / 100) * 5 * digested) + owner.adjust_nutrition((nutrition_percent / 100) * 5 * digested) if(isrobot(owner)) var/mob/living/silicon/robot/R = owner R.cell.charge += (50 * digested) diff --git a/code/modules/vore/eating/bellymodes_datum_vr.dm b/code/modules/vore/eating/bellymodes_datum_vr.dm new file mode 100644 index 0000000000..19deb66621 --- /dev/null +++ b/code/modules/vore/eating/bellymodes_datum_vr.dm @@ -0,0 +1,254 @@ +GLOBAL_LIST_INIT(digest_modes, list()) + +/datum/digest_mode + var/id = DM_HOLD + var/noise_chance = 0 + +/** + * This proc has all the behavior for the given digestion mode. + * It returns either null, or an associative list in the following format: + * list("to_update" = TRUE/FALSE, "soundToPlay" = sound()) + * where to_update is whether or not a updateVorePanel() call is necessary, + * and soundToPlay will play the given sound at the end of the process tick. + */ +/datum/digest_mode/proc/process_mob(obj/belly/B, mob/living/L) + return null + +/datum/digest_mode/digest + id = DM_DIGEST + noise_chance = 50 + +/datum/digest_mode/digest/process_mob(obj/belly/B, mob/living/L) + //Pref protection! + if(!L.digestable || L.absorbed) + return null + + //Person just died in guts! + if(L.stat == DEAD) + if(L.is_preference_enabled(/datum/client_preference/digestion_noises)) + if(!B.fancy_vore) + SEND_SOUND(L, sound(get_sfx("classic_death_sounds"))) + else + SEND_SOUND(L, sound(get_sfx("fancy_death_prey"))) + B.handle_digestion_death(L) + if(!B.fancy_vore) + return list("to_update" = TRUE, "soundToPlay" = sound(get_sfx("classic_death_sounds"))) + return list("to_update" = TRUE, "soundToPlay" = sound(get_sfx("fancy_death_pred"))) + + // Deal digestion damage (and feed the pred) + var/old_brute = L.getBruteLoss() + var/old_burn = L.getFireLoss() + L.adjustBruteLoss(B.digest_brute) + L.adjustFireLoss(B.digest_burn) + var/actual_brute = L.getBruteLoss() - old_brute + var/actual_burn = L.getFireLoss() - old_burn + var/damage_gain = actual_brute + actual_burn + + var/offset = (1 + ((L.weight - 137) / 137)) // 130 pounds = .95 140 pounds = 1.02 + var/difference = B.owner.size_multiplier / L.size_multiplier + if(isrobot(B.owner)) + var/mob/living/silicon/robot/R = B.owner + R.cell.charge += 25 * damage_gain + if(offset) // If any different than default weight, multiply the % of offset. + B.owner.adjust_nutrition(offset*((B.nutrition_percent / 100) * 4.5 * (damage_gain) / difference)) //4.5 nutrition points per health point. Normal same size 100+100 health prey with average weight would give 900 points if the digestion was instant. With all the size/weight offset taxes plus over time oxyloss+hunger taxes deducted with non-instant digestion, this should be enough to not leave the pred starved. + else + B.owner.adjust_nutrition((B.nutrition_percent / 100) * 4.5 * (damage_gain) / difference) + +/datum/digest_mode/absorb + id = DM_ABSORB + noise_chance = 10 + +/datum/digest_mode/absorb/process_mob(obj/belly/B, mob/living/L) + if(!L.absorbable || L.absorbed) + return null + B.steal_nutrition(L) + if(L.nutrition < 100) + B.absorb_living(L) + return list("to_update" = TRUE) + +/datum/digest_mode/unabsorb + id = DM_UNABSORB + +/datum/digest_mode/unabsorb/process_mob(obj/belly/B, mob/living/L) + if(L.absorbed && B.owner.nutrition >= 100) + L.absorbed = FALSE + to_chat(L, "You suddenly feel solid again.") + to_chat(B.owner,"You feel like a part of you is missing.") + B.owner.adjust_nutrition(-100) + return list("to_update" = TRUE) + +/datum/digest_mode/drain + id = DM_DRAIN + noise_chance = 10 + +/datum/digest_mode/drain/process_mob(obj/belly/B, mob/living/L) + B.steal_nutrition(L) + +/datum/digest_mode/drain/shrink + id = DM_SHRINK + +/datum/digest_mode/drain/shrink/process_mob(obj/belly/B, mob/living/L) + if(L.size_multiplier > B.shrink_grow_size) + L.resize(L.size_multiplier - 0.01) // Shrink by 1% per tick + . = ..() + +/datum/digest_mode/grow + id = DM_GROW + noise_chance = 10 + +/datum/digest_mode/grow/process_mob(obj/belly/B, mob/living/L) + if(L.size_multiplier < B.shrink_grow_size) + L.resize(L.size_multiplier + 0.01) // Shrink by 1% per tick + +/datum/digest_mode/drain/sizesteal + id = DM_SIZE_STEAL + +/datum/digest_mode/drain/sizesteal/process_mob(obj/belly/B, mob/living/L) + if(L.size_multiplier > B.shrink_grow_size && B.owner.size_multiplier < 2) //Grow until either pred is large or prey is small. + B.owner.resize(B.owner.size_multiplier + 0.01) //Grow by 1% per tick. + L.resize(L.size_multiplier - 0.01) //Shrink by 1% per tick + . = ..() + +/datum/digest_mode/heal + id = DM_HEAL + noise_chance = 50 //Wet heals! The secret is you can leave this on for gurgle noises for fun. + +/datum/digest_mode/heal/process_mob(obj/belly/B, mob/living/L) + if(L.stat == DEAD) + return null // Can't heal the dead with healbelly + if(B.owner.nutrition > 90 && (L.health < L.maxHealth)) + L.adjustBruteLoss(-2.5) + L.adjustFireLoss(-2.5) + L.adjustToxLoss(-5) + L.adjustOxyLoss(-5) + L.adjustCloneLoss(-1.25) + B.owner.adjust_nutrition(-2) + if(L.nutrition <= 400) + L.adjust_nutrition(1) + else if(B.owner.nutrition > 90 && (L.nutrition <= 400)) + B.owner.adjust_nutrition(-1) + L.adjust_nutrition(1) + +// TRANSFORM MODES +/datum/digest_mode/transform + var/stabilize_nutrition = FALSE + var/changes_eyes = FALSE + var/changes_hair_solo = FALSE + var/changes_hairandskin = FALSE + var/changes_gender = FALSE + var/changes_gender_to = null + var/changes_species = FALSE + var/changes_ears_tail_wing_nocolor = FALSE + var/changes_ears_tail_wing_color = FALSE + var/eggs = FALSE + +/datum/digest_mode/transform/process_mob(obj/belly/B, mob/living/carbon/human/H) + if(!istype(H) || H.stat == DEAD) + return null + if(stabilize_nutrition) + if(B.owner.nutrition > 400 && H.nutrition < 400) + B.owner.adjust_nutrition(-2) + H.adjust_nutrition(1.5) + if(changes_eyes && B.check_eyes(H)) + B.change_eyes(H, 1) + return null + if(changes_hair_solo && B.check_hair(H)) + B.change_hair(H) + return null + if(changes_hairandskin && (B.check_hair(H) || B.check_skin(H))) + B.change_hair(H) + B.change_skin(H, 1) + return null + if(changes_species) + if(changes_ears_tail_wing_nocolor && (B.check_ears(H) || B.check_tail_nocolor(H) || B.check_wing_nocolor(H) || B.check_species(H))) + B.change_ears(H) + B.change_tail_nocolor(H) + B.change_wing_nocolor(H) + B.change_species(H, 1, 1) // ,1) preserves coloring + return null + if(changes_ears_tail_wing_color && (B.check_ears(H) || B.check_tail(H) || B.check_wing(H) || B.check_species(H))) + B.change_ears(H) + B.change_tail(H) + B.change_wing(H) + B.change_species(H, 1, 2) // ,2) does not preserve coloring. + return null + if(changes_gender && B.check_gender(H, changes_gender_to)) + B.change_gender(H, changes_gender_to, 1) + return null + if(eggs && (!H.absorbed)) + B.put_in_egg(H, 1) + return null + +// Regular TF Modes +/datum/digest_mode/transform/hairandeyes + id = DM_TRANSFORM_HAIR_AND_EYES + stabilize_nutrition = TRUE + changes_eyes = TRUE + changes_hair_solo = TRUE + +/datum/digest_mode/transform/gender + id = DM_TRANSFORM_FEMALE + changes_eyes = TRUE + changes_hairandskin = TRUE + changes_gender = TRUE + changes_gender_to = FEMALE + stabilize_nutrition = TRUE + +/datum/digest_mode/transform/gender/male + id = DM_TRANSFORM_FEMALE + changes_gender_to = MALE + +/datum/digest_mode/transform/keepgender + id = DM_TRANSFORM_KEEP_GENDER + changes_eyes = TRUE + changes_hairandskin = TRUE + stabilize_nutrition = TRUE + +/datum/digest_mode/transform/speciesandtaur + id = DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR + changes_species = TRUE + changes_ears_tail_wing_nocolor = TRUE + stabilize_nutrition = TRUE + +/datum/digest_mode/transform/replica + id = DM_TRANSFORM_REPLICA + changes_eyes = TRUE + changes_hairandskin = TRUE + changes_species = TRUE + changes_ears_tail_wing_color = TRUE + +// E G G +/datum/digest_mode/transform/egg + id = DM_EGG + eggs = TRUE + +/datum/digest_mode/transform/egg/gender + id = DM_TRANSFORM_FEMALE_EGG + changes_eyes = TRUE + changes_hairandskin = TRUE + changes_gender = TRUE + changes_gender_to = FEMALE + stabilize_nutrition = TRUE + +/datum/digest_mode/transform/egg/gender/male + id = DM_TRANSFORM_MALE_EGG + changes_gender_to = MALE + +/datum/digest_mode/transform/egg/nogender + id = DM_TRANSFORM_KEEP_GENDER_EGG + changes_eyes = TRUE + changes_hairandskin = TRUE + stabilize_nutrition = TRUE + +/datum/digest_mode/transform/egg/speciesandtaur + id = DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG + changes_species = TRUE + changes_ears_tail_wing_nocolor = TRUE + stabilize_nutrition = TRUE + +/datum/digest_mode/transform/egg/replica + id = DM_TRANSFORM_REPLICA_EGG + changes_eyes = TRUE + changes_hairandskin = TRUE + changes_species = TRUE + changes_ears_tail_wing_color = TRUE \ No newline at end of file diff --git a/code/modules/vore/eating/bellymodes_tf_vr.dm b/code/modules/vore/eating/bellymodes_tf_vr.dm deleted file mode 100644 index 32a6e91a4c..0000000000 --- a/code/modules/vore/eating/bellymodes_tf_vr.dm +++ /dev/null @@ -1,92 +0,0 @@ -/obj/belly/proc/process_tf(mode, list/touchable_mobs) //We pass mode so it's mega-ultra local. - /* May not be necessary... Transform only shows up in the panel for humans. - if(!ishuman(owner)) - return //Need DNA and junk for this. - */ - - //Cast here for reduced duplication - var/mob/living/carbon/human/O = owner - - var/stabilize_nutrition = FALSE - var/changes_eyes = FALSE - var/changes_hair_solo = FALSE - var/changes_hairandskin = FALSE - var/changes_gender = FALSE - var/changes_gender_to = null - var/changes_species = FALSE - var/changes_ears_tail_wing_nocolor = FALSE - var/changes_ears_tail_wing_color = FALSE - var/eggs = FALSE - - switch(mode) - if(DM_TRANSFORM_HAIR_AND_EYES) - stabilize_nutrition = TRUE - changes_eyes = TRUE - changes_hair_solo = TRUE - if(DM_TRANSFORM_MALE, DM_TRANSFORM_FEMALE, DM_TRANSFORM_MALE_EGG, DM_TRANSFORM_FEMALE_EGG) - changes_eyes = TRUE - changes_hairandskin = TRUE - changes_gender = TRUE - changes_gender_to = (mode == DM_TRANSFORM_MALE || mode == DM_TRANSFORM_MALE_EGG) ? MALE : FEMALE - stabilize_nutrition = TRUE - eggs = (mode == DM_TRANSFORM_MALE_EGG || mode == DM_TRANSFORM_FEMALE_EGG) - if(DM_TRANSFORM_KEEP_GENDER, DM_TRANSFORM_KEEP_GENDER_EGG) - changes_eyes = TRUE - changes_hairandskin = TRUE - stabilize_nutrition = TRUE - eggs = (mode == DM_TRANSFORM_KEEP_GENDER_EGG) - if(DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR, DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG) - changes_species = TRUE - changes_ears_tail_wing_nocolor = TRUE - stabilize_nutrition = TRUE - eggs = (mode == DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG) - if(DM_TRANSFORM_REPLICA, DM_TRANSFORM_REPLICA_EGG) - changes_eyes = TRUE - changes_hairandskin = TRUE - changes_species = TRUE - changes_ears_tail_wing_color = TRUE - eggs = (mode == DM_TRANSFORM_REPLICA_EGG) - if(DM_EGG) - eggs = TRUE - - /* This is designed to do *gradual* transformations. - * For each human in the TF belly per cycle, they can only have one "stage" of transformation applied to them. - * Some transformation modes have different amounts of stages than others and that's okay. - * All stages in order: Eyes, Hair & Skin, Ears & Tail & Wings & Species, Gender, Egg - */ - for(var/mob/living/carbon/human/H in touchable_mobs) - if(H.stat == DEAD) - continue - if(stabilize_nutrition) - if(O.nutrition > 400 && H.nutrition < 400) - O.nutrition -= 2 - H.nutrition += 1.5 - if(changes_eyes && check_eyes(H)) - change_eyes(H, 1) - continue - if(changes_hair_solo && check_hair(H)) - change_hair(H) - continue - if(changes_hairandskin && (check_hair(H) || check_skin(H))) - change_hair(H) - change_skin(H, 1) - continue - if(changes_species) - if(changes_ears_tail_wing_nocolor && (check_ears(H) || check_tail_nocolor(H) || check_wing_nocolor(H) || check_species(H))) - change_ears(H) - change_tail_nocolor(H) - change_wing_nocolor(H) - change_species(H, 1, 1) // ,1) preserves coloring - continue - if(changes_ears_tail_wing_color && (check_ears(H) || check_tail(H) || check_wing(H) || check_species(H))) - change_ears(H) - change_tail(H) - change_wing(H) - change_species(H, 1, 2) // ,2) does not preserve coloring. - continue - if(changes_gender && check_gender(H, changes_gender_to)) - change_gender(H, changes_gender_to, 1) - continue - if(eggs && (!H.absorbed)) - put_in_egg(H, 1) - continue \ No newline at end of file diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 40d2b32a4e..d11af09376 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -16,39 +16,88 @@ prey_loop() /////////////////////////// Sound Selections /////////////////////////// + var/digestion_noise_chance = 0 var/sound/prey_digest - var/sound/prey_death var/sound/pred_digest - var/sound/pred_death if(!fancy_vore) prey_digest = sound(get_sfx("classic_digestion_sounds")) - prey_death = sound(get_sfx("classic_death_sounds")) pred_digest = sound(get_sfx("classic_digestion_sounds")) - pred_death = sound(get_sfx("classic_death_sounds")) else prey_digest = sound(get_sfx("fancy_digest_prey")) - prey_death = sound(get_sfx("fancy_death_prey")) pred_digest = sound(get_sfx("fancy_digest_pred")) - pred_death = sound(get_sfx("fancy_death_pred")) /////////////////////////// Exit Early //////////////////////////// var/list/touchable_atoms = contents - items_preserved if(!length(touchable_atoms)) return - var/list/touchable_mobs = list() + var/list/touchable_mobs = null + + var/list/hta_returns = handle_touchable_atoms(touchable_atoms) + if(islist(hta_returns)) + if(hta_returns["digestion_noise_chance"]) + digestion_noise_chance = hta_returns["digestion_noise_chance"] + if(hta_returns["touchable_mobs"]) + touchable_mobs = hta_returns["touchable_mobs"] + if(hta_returns["to_update"]) + to_update = hta_returns["to_update"] + + if(!islist(touchable_mobs)) + return ///////////////////// Early Non-Mode Handling ///////////////////// - if(contents.len && next_emote <= world.time) + var/list/EL = emote_lists[digest_mode] + if(LAZYLEN(EL) && touchable_mobs && next_emote <= world.time) next_emote = world.time + emote_time - var/list/EL = emote_lists[digest_mode] - if(LAZYLEN(EL)) - for(var/mob/living/M in contents) - if(M.digestable || digest_mode != DM_DIGEST) // don't give digesty messages to indigestible people - to_chat(M, "[pick(EL)]") + for(var/mob/living/M in contents) + if(digest_mode == DM_DIGEST && !M.digestable) + continue // don't give digesty messages to indigestible people + to_chat(M, "[pick(EL)]") + var/datum/digest_mode/DM = GLOB.digest_modes["[digest_mode]"] + if(!DM) + log_debug("Digest mode [digest_mode] didn't exist in the digest_modes list!!") + return FALSE + + if(!digestion_noise_chance) + digestion_noise_chance = DM.noise_chance + + for(var/target in touchable_mobs) + var/mob/living/L = target + if(!istype(L)) + continue + var/list/returns = DM.process_mob(src, target) + if(istype(returns) && returns["to_update"]) + to_update = TRUE + if(istype(returns) && returns["soundToPlay"] && !play_sound) + play_sound = returns["soundToPlay"] + +/////////////////////////// Make any noise /////////////////////////// + if(digestion_noise_chance && prob(digestion_noise_chance)) + for(var/mob/M in contents) + if(M && M.is_preference_enabled(/datum/client_preference/digestion_noises)) + SEND_SOUND(M, prey_digest) + play_sound = pred_digest + + if(play_sound) + for(var/mob/M in hearers(VORE_SOUND_RANGE, owner)) //so we don't fill the whole room with the sound effect + if(!M.is_preference_enabled(/datum/client_preference/digestion_noises)) + continue + if(isturf(M.loc) || (M.loc != src)) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check + if(fancy_vore) + M.playsound_local(owner.loc, play_sound, vol = 75, vary = 1, falloff = VORE_SOUND_FALLOFF) + else + M.playsound_local(owner.loc, play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + //these are all external sound triggers now, so it's ok. + + if(to_update) + updateVRPanels() + +/obj/belly/proc/handle_touchable_atoms(list/touchable_atoms) var/did_an_item = FALSE // Only do one item per cycle. + var/to_update = FALSE var/digestion_noise_chance = 0 + var/list/touchable_mobs = list() for(var/A in touchable_atoms) //Handle stray items @@ -99,125 +148,7 @@ else if(istype(A, /obj/effect/decal/cleanable)) qdel(A) - if(digest_mode == DM_HOLD) - //We deliberately do not want any gurgly noises if the belly is in DM_HOLD - if(to_update) - updateVRPanels() - return - - if(digest_mode == DM_TRANSFORM) - process_tf(tf_mode, touchable_mobs) - - for(var/target in touchable_mobs) - var/mob/living/L = target - if(!istype(L)) - continue - switch(digest_mode) - if(DM_DIGEST) - digestion_noise_chance = 50 - //Pref protection! - if(!L.digestable || L.absorbed) - continue - - //Person just died in guts! - if(L.stat == DEAD) - play_sound = pred_death - if(L.is_preference_enabled(/datum/client_preference/digestion_noises)) - SEND_SOUND(L, prey_death) - handle_digestion_death(L) - to_update = TRUE - continue - - // Deal digestion damage (and feed the pred) - var/old_brute = L.getBruteLoss() - var/old_burn = L.getFireLoss() - L.adjustBruteLoss(digest_brute) - L.adjustFireLoss(digest_burn) - var/actual_brute = L.getBruteLoss() - old_brute - var/actual_burn = L.getFireLoss() - old_burn - var/damage_gain = actual_brute + actual_burn - - var/offset = (1 + ((L.weight - 137) / 137)) // 130 pounds = .95 140 pounds = 1.02 - var/difference = owner.size_multiplier / L.size_multiplier - if(isrobot(owner)) - var/mob/living/silicon/robot/R = owner - R.cell.charge += 25 * damage_gain - if(offset) // If any different than default weight, multiply the % of offset. - owner.nutrition += offset*((nutrition_percent / 100) * 4.5 * (damage_gain) / difference) //4.5 nutrition points per health point. Normal same size 100+100 health prey with average weight would give 900 points if the digestion was instant. With all the size/weight offset taxes plus over time oxyloss+hunger taxes deducted with non-instant digestion, this should be enough to not leave the pred starved. - else - owner.nutrition += (nutrition_percent / 100) * 4.5 * (damage_gain) / difference - if(DM_ABSORB) - if(!L.absorbable || L.absorbed) - continue - digestion_noise_chance = 10 - steal_nutrition(L) - if(L.nutrition < 100) - absorb_living(L) - to_update = TRUE - if(DM_UNABSORB) - if(L.absorbed && owner.nutrition >= 100) - L.absorbed = FALSE - to_chat(L, "You suddenly feel solid again.") - to_chat(owner,"You feel like a part of you is missing.") - owner.nutrition -= 100 - to_update = TRUE - if(DM_DRAIN) - digestion_noise_chance = 10 - steal_nutrition(L) - if(DM_SHRINK) - digestion_noise_chance = 10 - if(L.size_multiplier > shrink_grow_size) - L.resize(L.size_multiplier - 0.01) // Shrink by 1% per tick - steal_nutrition(L) - if(DM_GROW) - digestion_noise_chance = 10 - if(L.size_multiplier < shrink_grow_size) - L.resize(L.size_multiplier - 0.01) // Grow by 1% per tick - if(DM_SIZE_STEAL) - digestion_noise_chance = 10 - if(L.size_multiplier > shrink_grow_size && owner.size_multiplier < 2) //Grow until either pred is large or prey is small. - owner.resize(owner.size_multiplier+0.01) //Grow by 1% per tick. - L.resize(L.size_multiplier-0.01) //Shrink by 1% per tick - steal_nutrition(L) - if(DM_HEAL) - digestion_noise_chance = 50 //Wet heals! The secret is you can leave this on for gurgle noises for fun. - if(L.stat == DEAD) - continue // Can't heal the dead with healbelly - if(owner.nutrition > 90 && (L.health < L.maxHealth)) - L.adjustBruteLoss(-2.5) - L.adjustFireLoss(-2.5) - L.adjustToxLoss(-5) - L.adjustOxyLoss(-5) - L.adjustCloneLoss(-1.25) - owner.nutrition -= 2 - if(L.nutrition <= 400) - L.nutrition += 1 - else if(owner.nutrition > 90 && (L.nutrition <= 400)) - owner.nutrition -= 1 - L.nutrition += 1 - -/////////////////////////// Make any noise /////////////////////////// - if(digestion_noise_chance && prob(digestion_noise_chance)) - for(var/mob/M in contents) - if(M && M.is_preference_enabled(/datum/client_preference/digestion_noises)) - SEND_SOUND(M, prey_digest) - play_sound = pred_digest - - if(play_sound) - for(var/mob/M in hearers(VORE_SOUND_RANGE, owner)) //so we don't fill the whole room with the sound effect - if(!M.is_preference_enabled(/datum/client_preference/digestion_noises)) - continue - if(isturf(M.loc) || (M.loc != src)) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check - if(fancy_vore) - M.playsound_local(owner.loc, play_sound, vol = 75, vary = 1, falloff = VORE_SOUND_FALLOFF) - else - M.playsound_local(owner.loc, play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) - //these are all external sound triggers now, so it's ok. - - if(to_update) - updateVRPanels() - - return + return list("to_update" = to_update, "touchable_mobs" = touchable_mobs, "digestion_noise_chance" = digestion_noise_chance) /obj/belly/proc/prey_loop() for(var/mob/living/M in contents) @@ -283,13 +214,13 @@ var/mob/living/silicon/robot/R = owner R.cell.charge += 25*compensation else - owner.nutrition += (nutrition_percent / 100)*4.5*compensation + owner.adjust_nutrition((nutrition_percent / 100)*4.5*compensation) /obj/belly/proc/steal_nutrition(mob/living/L) if(L.nutrition >= 100) var/oldnutrition = (L.nutrition * 0.05) L.nutrition = (L.nutrition * 0.95) - owner.nutrition += oldnutrition + owner.adjust_nutrition(oldnutrition) /obj/belly/proc/updateVRPanels() for(var/mob/living/M in contents) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 535768fea3..e73eff48f3 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -327,7 +327,7 @@ if(!istype(tasted)) return - if(!canClick() || incapacitated(INCAPACITATION_ALL)) + if(!checkClickCooldown() || incapacitated(INCAPACITATION_ALL)) return setClickCooldown(DEFAULT_ATTACK_COOLDOWN) @@ -741,17 +741,18 @@ "diamond" = list("nutrition" = 50, "remark" = "The heavenly taste of [O] almost brings a tear to your eye. Its glimmering gloriousness is even better on the tongue than you imagined, so you savour it fondly."), "platinum" = list("nutrition" = 40, "remark" = "A bit tangy but elegantly balanced with a long faintly sour finish. Delectible."), "mhydrogen" = list("nutrition" = 30, "remark" = "Quite sweet on the tongue, you savour the light and easy to chew [O], finishing it quickly."), + "rutile" = list("nutrition" = 50, "remark" = "A little... angular, you savour the light but chewy [O], finishing it quickly."), MAT_VERDANTIUM = list("nutrition" = 50, "remark" = "You taste scientific mystery and a rare delicacy. Your tastebuds tingle pleasantly as you eat [O] and the feeling warmly blossoms in your chest for a moment."), MAT_LEAD = list("nutrition" = 40, "remark" = "It takes some work to break down [O] but you manage it, unlocking lasting tangy goodness in the process. Yum."), ) if(O.material in rock_munch) var/S = rock_munch[O.material] to_chat(src, "[S["remark"]]") - nutrition += S["nutrition"] + adjust_nutrition(S["nutrition"]) else //Handle everything else. if(istype(O, /obj/item/weapon/ore/slag/)) to_chat(src, "You taste dusty, crunchy mistakes. This is a travesty... but at least it is an edible one.") - nutrition += 15 + adjust_nutrition(15) else //Random rock. to_chat(src, "You taste stony, gravelly goodness - but you crave something with actual nutritional value.") @@ -763,10 +764,10 @@ set desc = "Switch sharp/fuzzy scaling for current mob." appearance_flags ^= PIXEL_SCALE -/mob/living/examine(mob/user, distance, infix, suffix) - . = ..(user, distance, infix, suffix) +/mob/living/examine(mob/user, infix, suffix) + . = ..() if(showvoreprefs) - to_chat(user, "\[Mechanical Vore Preferences\]") + . += "\[Mechanical Vore Preferences\]" /mob/living/Topic(href, href_list) //Can't find any instances of Topic() being overridden by /mob/living in polaris' base code, even though /mob/living/carbon/human's Topic() has a ..() call if(href_list["vore_prefs"]) @@ -791,6 +792,6 @@ dispvoreprefs += "Healbelly permission: [permit_healbelly ? "Allowed" : "Disallowed"]
      " dispvoreprefs += "Spontaneous vore prey: [can_be_drop_prey ? "Enabled" : "Disabled"]
      " dispvoreprefs += "Spontaneous vore pred: [can_be_drop_pred ? "Enabled" : "Disabled"]
      " - user << browse("Vore prefs: [src]
      [dispvoreprefs]
      ", "window=[name];size=200x300;can_resize=0;can_minimize=0") + user << browse("Vore prefs: [src]
      [dispvoreprefs]
      ", "window=[name]mvp;size=200x300;can_resize=0;can_minimize=0") onclose(user, "[name]") return diff --git a/code/modules/vore/eating/silicon_vr.dm b/code/modules/vore/eating/silicon_vr.dm index ba9e279043..37ed30e8c6 100644 --- a/code/modules/vore/eating/silicon_vr.dm +++ b/code/modules/vore/eating/silicon_vr.dm @@ -98,13 +98,9 @@ //This can go here with all the references. /obj/effect/overlay/aiholo/examine(mob/user) - . = ..(user) - - var/msg = "\n" + . = ..() //If you need an ooc_notes copy paste, this is NOT the one to use. var/ooc_notes = master.ooc_notes if(ooc_notes) - msg += "OOC Notes: \[View\]\n" - - to_chat(user,msg) + . += "OOC Notes: \[View\]" diff --git a/code/modules/vore/eating/transforming_vr.dm b/code/modules/vore/eating/transforming_vr.dm index 3e78920419..8f9eea2371 100644 --- a/code/modules/vore/eating/transforming_vr.dm +++ b/code/modules/vore/eating/transforming_vr.dm @@ -206,7 +206,7 @@ if(!istype(M) || !istype(O)) return 0 - if(M.species != O.species || M.custom_species != O.custom_species) + if(M.species.name != O.species.name || M.custom_species != O.custom_species) return 1 return 0 @@ -227,7 +227,7 @@ if(color_action == 1) M.set_species(O.species.name,0,1,M) else if(color_action == 2) - M.set_species(O.species.name,0,1,O) + M.species = O.species else M.set_species(O.species.name) M.custom_species = O.custom_species diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index fad62eff35..72575492ed 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -59,54 +59,53 @@ open = TRUE /datum/vore_look/proc/gen_ui(var/mob/living/user) - var/dat + var/list/dat = list() var/atom/userloc = user.loc if(isbelly(userloc)) var/obj/belly/inside_belly = userloc var/mob/living/eater = inside_belly.owner - //Don't display this part if we couldn't find the belly since could be held in hand. - if(inside_belly) - dat += "You are currently [user.absorbed ? "absorbed into " : "inside "] [eater]'s [inside_belly]!

      " + dat += "You are currently [user.absorbed ? "absorbed into " : "inside "] [eater]'s [inside_belly.name]!

      " - if(inside_belly.desc) - dat += "[inside_belly.desc]

      " + if(inside_belly.desc) + dat += "[inside_belly.desc]

      " //Extra br - if(inside_belly.contents.len > 1) - dat += "You can see the following around you:
      " - for (var/atom/movable/O in inside_belly) - if(istype(O,/mob/living)) - var/mob/living/M = O - //That's just you - if(M == user) + if(inside_belly.contents.len > 1) + dat += "You can see the following around you:
      " + var/list/belly_contents = list() + for (var/atom/movable/O in inside_belly) + if(istype(O,/mob/living)) + var/mob/living/M = O + //That's just you + if(M == user) + continue + + //That's an absorbed person you're checking + if(M.absorbed) + if(user.absorbed) + belly_contents += "[O]" + continue + else continue - //That's an absorbed person you're checking - if(M.absorbed) - if(user.absorbed) - dat += "[O]" - continue - else - continue + //Anything else + dat += "[O]​" - //Anything else - dat += "[O]​" + //Zero-width space, for wrapping + dat += "​" - //Zero-width space, for wrapping - dat += "​" + dat += jointext(belly_contents, null) //Add in belly contents to main running list else dat += "You aren't inside anyone." - dat += "
      " - - dat += "
        " + var/list/belly_list = list("
          ") for(var/belly in user.vore_organs) var/obj/belly/B = belly if(B == selected) - dat += "
        1. [B.name]" + belly_list += "
        2. [B.name]" else - dat += "
        3. [B.name]" + belly_list += "
        4. [B.name]" var/spanstyle switch(B.digest_mode) @@ -126,46 +125,46 @@ spanstyle = "color:purple;" if(DM_SIZE_STEAL) spanstyle = "color:purple;" - if(DM_TRANSFORM) - switch(B.tf_mode) - if(DM_TRANSFORM_MALE) - spanstyle = "color:purple;" - if(DM_TRANSFORM_HAIR_AND_EYES) - spanstyle = "color:purple;" - if(DM_TRANSFORM_FEMALE) - spanstyle = "color:purple;" - if(DM_TRANSFORM_KEEP_GENDER) - spanstyle = "color:purple;" - if(DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR) - spanstyle = "color:purple;" - if(DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG) - spanstyle = "color:purple;" - if(DM_TRANSFORM_REPLICA) - spanstyle = "color:purple;" - if(DM_TRANSFORM_REPLICA_EGG) - spanstyle = "color:purple;" - if(DM_TRANSFORM_KEEP_GENDER_EGG) - spanstyle = "color:purple;" - if(DM_TRANSFORM_MALE_EGG) - spanstyle = "color:purple;" - if(DM_TRANSFORM_FEMALE_EGG) - spanstyle = "color:purple;" - if(DM_EGG) - spanstyle = "color:purple;" + if(DM_TRANSFORM_MALE) + spanstyle = "color:purple;" + if(DM_TRANSFORM_HAIR_AND_EYES) + spanstyle = "color:purple;" + if(DM_TRANSFORM_FEMALE) + spanstyle = "color:purple;" + if(DM_TRANSFORM_KEEP_GENDER) + spanstyle = "color:purple;" + if(DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR) + spanstyle = "color:purple;" + if(DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG) + spanstyle = "color:purple;" + if(DM_TRANSFORM_REPLICA) + spanstyle = "color:purple;" + if(DM_TRANSFORM_REPLICA_EGG) + spanstyle = "color:purple;" + if(DM_TRANSFORM_KEEP_GENDER_EGG) + spanstyle = "color:purple;" + if(DM_TRANSFORM_MALE_EGG) + spanstyle = "color:purple;" + if(DM_TRANSFORM_FEMALE_EGG) + spanstyle = "color:purple;" + if(DM_EGG) + spanstyle = "color:purple;" - dat += " ([B.contents.len])
        5. " + belly_list += " ([B.contents.len])" if(user.vore_organs.len < BELLIES_MAX) - dat += "
        6. New+
        7. " - dat += "
        " - dat += "
        " + belly_list += "
      1. New+
      2. " + belly_list += "

      " + + dat += jointext(belly_list, null) //Add in belly list to main running list // Selected Belly (contents, configuration) if(!selected) dat += "No belly selected. Click one to select it." else + var/list/belly_contents = list() if(selected.contents.len) - dat += "Contents: " + belly_contents += "Contents: " for(var/O in selected) //Mobs can be absorbed, so treat them separately from everything else @@ -174,110 +173,93 @@ //Absorbed gets special color OOoOOOOoooo if(M.absorbed) - dat += "[O]" + belly_contents += "[O]" continue //Anything else - dat += "[O]" + belly_contents += "[O]" //Zero-width space, for wrapping - dat += "​" + belly_contents += "​" //If there's more than one thing, add an [All] button if(selected.contents.len > 1) - dat += "\[All\]" + belly_contents += "\[All\]" - dat += "
      " + belly_contents += "
      " + + if(belly_contents.len) + dat += jointext(belly_contents, null) //Belly Name Button - dat += "Name:" - dat += " '[selected.name]'" + dat += "
      Name: '[selected.name]'" //Belly Type button - dat += "
      Is this belly fleshy:" - dat += "[selected.is_wet ? "Yes" : "No"]" + dat += "
      Is this belly fleshy: [selected.is_wet ? "Yes" : "No"]" if(selected.is_wet) - dat += "
      Internal loop for prey?:" - dat += "[selected.wet_loop ? "Yes" : "No"]" + dat += "
      Internal loop for prey?: [selected.wet_loop ? "Yes" : "No"]" //Digest Mode Button - dat += "
      Belly Mode:" var/mode = selected.digest_mode - dat += " [mode == DM_TRANSFORM ? selected.tf_mode : mode]" + dat += "
      Belly Mode: [mode]" //Mode addons button - dat += "
      Mode Addons:" var/list/flag_list = list() for(var/flag_name in selected.mode_flag_list) if(selected.mode_flags & selected.mode_flag_list[flag_name]) flag_list += flag_name if(flag_list.len) - dat += " [english_list(flag_list)]" + dat += "
      Mode Addons: [english_list(flag_list)]" else - dat += " None" + dat += "
      Mode Addons: None" //Item Digest Mode Button - dat += "
      Item Mode:" - dat += "[selected.item_digest_mode]" + dat += "
      Item Mode: [selected.item_digest_mode]" //Will it contaminate contents? - dat += "
      Contaminates:" - dat += " [selected.contaminates ? "Yes" : "No"]" + dat += "
      Contaminates: [selected.contaminates ? "Yes" : "No"]" if(selected.contaminates) //Contamination descriptors - dat += "
      Contamination Flavor:" - dat += "[selected.contamination_flavor]" + dat += "
      Contamination Flavor: [selected.contamination_flavor]" //Contamination color - dat += "
      Contamination Color:" - dat += "[selected.contamination_color]" + dat += "
      Contamination Color: [selected.contamination_color]" //Belly verb - dat += "
      Vore Verb:" - dat += " '[selected.vore_verb]'" + dat += "
      Vore Verb: '[selected.vore_verb]'" //Inside flavortext - dat += "
      Flavor Text:" - dat += " '[selected.desc]'" + dat += "
      Flavor Text: '[selected.desc]'" //Belly Sound Fanciness - dat += "
      Use Fancy Sounds:" - dat += "[selected.fancy_vore ? "Yes" : "No"]" + dat += "
      Use Fancy Sounds: [selected.fancy_vore ? "Yes" : "No"]" //Belly sound - dat += "
      Vore Sound: [selected.vore_sound]" - dat += "Test" + dat += "
      Vore Sound: [selected.vore_sound] Test" //Release sound - dat += "
      Release Sound: [selected.release_sound]" - dat += "Test" + dat += "
      Release Sound: [selected.release_sound] Test" //Belly messages dat += "
      Belly Messages" //Can belly taste? - dat += "
      Can Taste:" - dat += " [selected.can_taste ? "Yes" : "No"]" + dat += "
      Can Taste: [selected.can_taste ? "Yes" : "No"]" //Nutritional percentage - dat += "
      Nutritional Gain:" - dat += " [selected.nutrition_percent]%" + dat += "
      Nutritional Gain: [selected.nutrition_percent]%" //How much brute damage - dat += "
      Digest Brute Damage:" - dat += " [selected.digest_brute]" + dat += "
      Digest Brute Damage: [selected.digest_brute]" //How much burn damage - dat += "
      Digest Burn Damage:" - dat += " [selected.digest_burn]" + dat += "
      Digest Burn Damage: [selected.digest_burn]" //Minimum size prey must be to show up. - dat += "
      Required examine size:" - dat += " [selected.bulge_size*100]%" + dat += "
      Required examine size: [selected.bulge_size*100]%" //Size that prey will be grown/shrunk to. - dat += "
      Shrink/Grow size:" - dat += "[selected.shrink_grow_size*100]%" + dat += "
      Shrink/Grow size: [selected.shrink_grow_size*100]%" //Belly escapability dat += "
      Belly Interactions ([selected.escapable ? "On" : "Off"])" @@ -285,96 +267,99 @@ dat += "[show_interacts ? "Hide" : "Show"]" if(show_interacts && selected.escapable) - dat += "
      " - dat += "Interaction Settings ?" - dat += "
      Set Belly Escape Chance" - dat += " [selected.escapechance]%" + var/list/interacts = list() + interacts += "
      " + interacts += "Interaction Settings ?" + interacts += "
      Set Belly Escape Chance" + interacts += " [selected.escapechance]%" - dat += "
      Set Belly Escape Time" - dat += " [selected.escapetime/10]s" + interacts += "
      Set Belly Escape Time" + interacts += " [selected.escapetime/10]s" //Special
      here to add a gap - dat += "
      " - dat += "
      Set Belly Transfer Chance" - dat += " [selected.transferchance]%" + interacts += "
      " + interacts += "
      Set Belly Transfer Chance" + interacts += " [selected.transferchance]%" - dat += "
      Set Belly Transfer Location" - dat += " [selected.transferlocation ? selected.transferlocation : "Disabled"]" + interacts += "
      Set Belly Transfer Location" + interacts += " [selected.transferlocation ? selected.transferlocation : "Disabled"]" //Special
      here to add a gap - dat += "
      " - dat += "
      Set Belly Absorb Chance" - dat += " [selected.absorbchance]%" + interacts += "
      " + interacts += "
      Set Belly Absorb Chance" + interacts += " [selected.absorbchance]%" - dat += "
      Set Belly Digest Chance" - dat += " [selected.digestchance]%" - dat += "
      " + interacts += "
      Set Belly Digest Chance" + interacts += " [selected.digestchance]%" + interacts += "
      " + dat += jointext(interacts, null) //Delete button - dat += "
      Delete Belly" + dat += "Delete Belly" dat += "
      " + var/list/nightmare_list = list() switch(user.digestable) if(TRUE) - dat += "Toggle Digestable (Currently: ON)" + nightmare_list += "Toggle Digestable (Currently: ON)" if(FALSE) - dat += "Toggle Digestable (Currently: OFF)" + nightmare_list += "Toggle Digestable (Currently: OFF)" switch(user.devourable) if(TRUE) - dat += "Toggle Devourable (Currently: ON)" + nightmare_list += "Toggle Devourable (Currently: ON)" if(FALSE) - dat += "Toggle Devourable (Currently: OFF)" + nightmare_list += "Toggle Devourable (Currently: OFF)" switch(user.feeding) if(TRUE) - dat += "
      Toggle Feeding (Currently: ON)" + nightmare_list += "
      Toggle Feeding (Currently: ON)" if(FALSE) - dat += "
      Toggle Feeding (Currently: OFF)" + nightmare_list += "
      Toggle Feeding (Currently: OFF)" switch(user.absorbable) if(TRUE) - dat += "Toggle Absorbtion Permission (Currently: ON)" + nightmare_list += "Toggle Absorbtion Permission (Currently: ON)" if(FALSE) - dat += "Toggle Absorbtion Permission (Currently: OFF)" + nightmare_list += "Toggle Absorbtion Permission (Currently: OFF)" switch(user.digest_leave_remains) if(TRUE) - dat += "Toggle Leaving Remains (Currently: ON)" + nightmare_list += "Toggle Leaving Remains (Currently: ON)" if(FALSE) - dat += "Toggle Leaving Remains (Currently: OFF)" + nightmare_list += "Toggle Leaving Remains (Currently: OFF)" switch(user.allowmobvore) if(TRUE) - dat += "
      Toggle Mob Vore (Currently: ON)" + nightmare_list += "
      Toggle Mob Vore (Currently: ON)" if(FALSE) - dat += "
      Toggle Mob Vore (Currently: OFF)" + nightmare_list += "
      Toggle Mob Vore (Currently: OFF)" switch(user.permit_healbelly) if(TRUE) - dat += "Toggle Healbelly Permission (Currently: ON)" + nightmare_list += "Toggle Healbelly Permission (Currently: ON)" if(FALSE) - dat += "Toggle Healbelly Permission (Currently: OFF)" + nightmare_list += "Toggle Healbelly Permission (Currently: OFF)" switch(user.can_be_drop_prey) if(TRUE) - dat += "
      Toggle Prey Spontaneous Vore (Currently: ON)" + nightmare_list += "
      Toggle Prey Spontaneous Vore (Currently: ON)" if(FALSE) - dat += "
      Toggle Prey Spontaneous Vore (Currently: OFF)" + nightmare_list += "
      Toggle Prey Spontaneous Vore (Currently: OFF)" switch(user.can_be_drop_pred) if(TRUE) - dat += "Toggle Pred Spontaneous Vore (Currently: ON)" + nightmare_list += "Toggle Pred Spontaneous Vore (Currently: ON)" if(FALSE) - dat += "Toggle Pred Spontaneous Vore (Currently: OFF)" + nightmare_list += "Toggle Pred Spontaneous Vore (Currently: OFF)" + + dat += jointext(nightmare_list, null) //AAAA dat += "
      Set Your Taste" - dat += "Toggle Hunger Noises" - - dat += "
      " + dat += "
      Toggle Hunger Noises" //Under the last HR, save and stuff. - dat += "Save Prefs" - dat += "Refresh" - dat += "Reload Slot Prefs" + dat += "
      Save Prefs" + dat += "
      Refresh" + dat += "
      Reload Slot Prefs" //Returns the dat html to the vore_look - return dat + return jointext(dat, null) /datum/vore_look/proc/vp_interact(href, href_list) var/mob/living/user = usr @@ -407,7 +392,11 @@ intent = alert("What do you want to do to them?","Query","Examine","Help Out","Devour") switch(intent) if("Examine") //Examine a mob inside another mob - M.examine(user) + var/list/results = M.examine(user) + if(!results || !results.len) + results = list("You were unable to examine that. Tell a developer!") + to_chat(user, jointext(results, "
      ")) + return FALSE if("Help Out") //Help the inside-mob out if(user.stat || user.absorbed || M.absorbed) @@ -457,7 +446,11 @@ intent = alert("What do you want to do to that?","Query","Examine","Use Hand") switch(intent) if("Examine") - T.examine(user) + var/list/results = T.examine(user) + if(!results || !results.len) + results = list("You were unable to examine that. Tell a developer!") + to_chat(user, jointext(results, "
      ")) + return FALSE if("Use Hand") if(user.stat) @@ -504,7 +497,11 @@ intent = alert("Examine, Eject, Move? Examine if you want to leave this box.","Query","Examine","Eject","Move") switch(intent) if("Examine") - tgt.examine(user) + var/list/results = tgt.examine(user) + if(!results || !results.len) + results = list("You were unable to examine that. Tell a developer!") + to_chat(user, jointext(results, "
      ")) + return FALSE if("Eject") if(user.stat) @@ -594,10 +591,11 @@ if(new_mode == DM_TRANSFORM) //Snowflek submenu var/list/tf_list = selected.transform_modes - var/new_tf_mode = input("Choose TF Mode (currently [selected.tf_mode])") as null|anything in tf_list + var/new_tf_mode = input("Choose TF Mode (currently [selected.digest_mode])") as null|anything in tf_list if(!new_tf_mode) return FALSE - selected.tf_mode = new_tf_mode + selected.digest_mode = new_tf_mode + return selected.digest_mode = new_mode //selected.items_preserved.Cut() //Re-evaltuate all items in belly on belly-mode change //Handled with item modes now @@ -889,7 +887,7 @@ if(href_list["applyprefs"]) var/alert = alert("Are you sure you want to reload character slot preferences? This will remove your current vore organs and eject their contents.","Confirmation","Reload","Cancel") - if(!alert == "Reload") + if(alert != "Reload") return FALSE if(!user.apply_vore_prefs()) alert("ERROR: Virgo-specific preferences failed to apply!","Error") diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index 877f18e33b..45db1edb3e 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -1858,7 +1858,7 @@ Departamental Swimsuits, for general use //Burrito Justice: Jayda Wilson /obj/item/clothing/under/solgov/utility/sifguard/medical/fluff - desc = "The utility uniform of the Society of Universal Cartographers, made from biohazard resistant material. This is an older issuing of the uniform, with integrated department markings." + desc = "The utility uniform of the Terran Commonwealth Explorer Corps, made from biohazard resistant material. This is an older issuing of the uniform, with integrated department markings." icon = 'icons/vore/custom_clothes_vr.dmi' icon_override = 'icons/vore/custom_clothes_vr.dmi' diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 86bce46181..4e2494fb69 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -37,37 +37,37 @@ var/from_suit = /obj/item/clothing/suit/space/void var/to_helmet = /obj/item/clothing/head/cardborg var/to_suit = /obj/item/clothing/suit/cardborg - - //conversion costs. refunds parts by default. + + //conversion costs. refunds all parts by default, but can be tweaked per-kit var/from_helmet_cost = 1 var/from_suit_cost = 2 var/to_helmet_cost = -1 var/to_suit_cost = -2 - + var/owner_ckey = null //ckey of the kit owner as a string - var/skip_contents = FALSE //can we skip the contents check? we generally shouldn't, but this is necessary for rigs/etc. - var/transfer_contents = FALSE //should we transfer the contents across before deleting? we generally shouldn't, but it might be needed + var/skip_content_check = FALSE //can we skip the contents check? we generally shouldn't, but this is necessary for rigs/coats with hoods/etc. + var/transfer_contents = FALSE //should we transfer the contents across before deleting? we generally shouldn't, esp. in the case of rigs/coats with hoods/etc. note this does nothing if skip is FALSE. var/can_repair = FALSE //can we be used to repair damaged voidsuits when converting them? var/can_revert = TRUE //can we revert items, or is it a one-way trip? var/delete_on_empty = FALSE //do we self-delete when emptied? - + //Conversion proc /obj/item/device/modkit_conversion/afterattack(obj/O, mob/user as mob) var/cost var/to_type var/keycheck - //we have to check that it's not the original type first, because otherwise it'll convert wrong because the subtype still counts as the basetype - //changing an item back to its base type refunds the parts cost - //order of checks has been reshuffled to work better + + if(isturf(O)) //silently fail if you click on a turf. shouldn't work anyway because turfs aren't objects but if I don't do this it spits runtimes. + return if(istype(O,/obj/item/clothing/suit/space/void/) && !can_repair) //check if we're a voidsuit and if we're allowed to repair - if(O:breaches.len) //this has to be underneath the istype or it'll spit a runtime if used on non-voidsuits + var/obj/item/clothing/suit/space/void/SS = O + if(LAZYLEN(SS.breaches)) to_chat(user, "You should probably repair that before you start tinkering with it.") return - if(isturf(O)) //silently fail if you click on a turf. shouldn't work anyway because turfs aren't objects but if I don't do this it spits runtimes. - return - if(O.blood_DNA || O.contaminated) //check if we're bloody or gooey, so modkits can't be used to hide crimes easily. + if(O.blood_DNA || O.contaminated) //check if we're bloody or gooey or whatever, so modkits can't be used to hide crimes easily. to_chat(user, "You should probably clean that up before you start tinkering with it.") return + //we have to check that it's not the original type first, because otherwise it might convert wrong based on pathing; the subtype can still count as the basetype if(istype(O,to_helmet) && can_revert) cost = to_helmet_cost to_type = from_helmet @@ -91,11 +91,11 @@ if(!isturf(O.loc)) to_chat(user, "You need to put \the [O] on the ground, a table, or other worksurface before modifying it.") return - if(!skip_contents && O.contents.len) //check if we're loaded/modified, in the event of gun/suit kits, to avoid purging stuff like badges, armbands, or suit helmets + if(!skip_content_check && O.contents.len) //check if we're loaded/modified, in the event of gun/suit kits, to avoid purging stuff like ammo, badges, armbands, or suit helmets to_chat(user, "You should probably remove any attached items or loaded ammunition before trying to modify that!") return if(cost > parts) - to_chat(user, "This kit doesn't have enough parts left.") + to_chat(user, "The kit doesn't have enough parts left to modify that.") if(can_revert && ((to_helmet_cost || to_suit_cost) < 0)) to_chat(user, " You can recover parts by using the kit on an already-modified item.") return @@ -106,36 +106,56 @@ playsound(user.loc, 'sound/items/Screwdriver.ogg', 100, 1) var/obj/N = new to_type(O.loc) user.visible_message("[user] opens \the [src] and modifies \the [O] into \the [N].","You open \the [src] and modify \the [O] into \the [N].") - - //messy, but transfer prints and fibers to avoid forensics abuse, same as the bloody/gooey check above + + //crude, but transfer prints and fibers to avoid forensics abuse, same as the bloody/gooey check above N.fingerprints = O.fingerprints N.fingerprintshidden = O.fingerprintshidden N.fingerprintslast = O.fingerprintslast N.suit_fibers = O.suit_fibers - - //also messy and I really don't like using the lookdown checks here but fuck it, it works. the istypes are essential though, or else it runtimes and won't get to the qdel for the source item, allowing item duping. - if(skip_contents && transfer_contents) //skip and transfer + + //transfer logic could technically be made more thorough and handle stuff like helmet/boots/tank vars for suits, but in those cases you should be removing the items first anyway + if(skip_content_check && transfer_contents) N.contents = O.contents if(istype(N,/obj/item/weapon/gun/projectile/)) - N:magazine_type = O:magazine_type - N:ammo_magazine = O:ammo_magazine + var/obj/item/weapon/gun/projectile/NN = N + var/obj/item/weapon/gun/projectile/OO = O + NN.magazine_type = OO.magazine_type + NN.ammo_magazine = OO.ammo_magazine if(istype(N,/obj/item/weapon/gun/energy/)) - N:cell_type = O:cell_type - else //nuke any ammo it'd normally spawn with, if it's a gun. we have to do this per-gun, not globally, or it breaks hoods a little bit and suit storage a lot. + var/obj/item/weapon/gun/energy/NE = N + var/obj/item/weapon/gun/energy/OE = O + NE.cell_type = OE.cell_type + else if(istype(N,/obj/item/weapon/gun/projectile/)) - N:contents = list() - N:magazine_type = null - N:ammo_magazine = null + var/obj/item/weapon/gun/projectile/NM = N + NM.contents = list() + NM.magazine_type = null + NM.ammo_magazine = null if(istype(N,/obj/item/weapon/gun/energy/)) - N:contents = list() - N:cell_type = null - + var/obj/item/weapon/gun/energy/NO = N + NO.contents = list() + NO.cell_type = null + qdel(O) parts -= cost if(!parts && delete_on_empty) qdel(src) //YW EDITS END +//DEBUG ITEM +/obj/item/device/modkit_conversion/fluff/debug_gunkit + name = "Gun Transformation Kit" + desc = "A kit containing all the needed tools and fabric to modify one sidearm to another." + skip_content_check = FALSE + transfer_contents = FALSE + + icon = 'icons/vore/custom_items_vr.dmi' + icon_state = "harmony_kit" + + from_helmet = /obj/item/weapon/gun/energy/laser + to_helmet = /obj/item/weapon/gun/energy/retro +//DEBUG ITEM ENDS + //JoanRisu:Joan Risu /obj/item/weapon/flame/lighter/zippo/fluff/joan name = "Federation Zippo Lighter" @@ -422,8 +442,8 @@ //SilencedMP5A5:Serdykov Antoz /obj/item/clothing/suit/armor/vest/wolftaur/serdy //SilencedMP5A5's specialty armor suit. - name = "KSS-8 security armor" - desc = "A set of armor made from pieces of many other armors. There are two orange holobadges on it, one on the chestplate, one on the steel flank plates. The holobadges appear to be russian in origin. 'Kosmicheskaya Stantsiya-8' is printed in faded white letters on one side, along the spine. It smells strongly of dog." + name = "custom security cuirass" + desc = "An armored vest that protects against some damage. It appears to be created for a wolfhound. The name 'Serdykov L. Antoz' is written on a tag inside one of the haunchplates." species_restricted = null //Species restricted since all it cares about is a taur half icon = 'icons/mob/taursuits_wolf_vr.dmi' icon_state = "serdy_armor" @@ -437,16 +457,27 @@ to_chat(H, "You need to have a wolf-taur half to wear this.") return 0 -/obj/item/clothing/head/helmet/serdy //SilencedMP5A5's specialty helmet. Uncomment if/when they make their custom item app and are accepted. - name = "KSS-8 security helmet" - desc = "desc = An old production model steel-ceramic lined helmet with a white stripe and a custom orange holographic visor. It has ear holes, and smells of dog. It's been heavily modified, and fitted with a metal mask to protect the jaw." +/obj/item/clothing/head/serdyhelmet //SilencedMP5A5's specialty helmet. + name = "custom security helmet" + desc = "An old production model steel-ceramic lined helmet with a white stripe and a custom orange holographic visor. It has ear holes, and smells of dog." icon = 'icons/vore/custom_clothes_vr.dmi' icon_state = "serdyhelm" - + valid_accessory_slots = (ACCESSORY_SLOT_HELM_C) + restricted_accessory_slots = (ACCESSORY_SLOT_HELM_C) + flags = THICKMATERIAL + armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0) icon_override = 'icons/vore/custom_clothes_vr.dmi' item_state = "serdyhelm_mob" + cold_protection = HEAD + min_cold_protection_temperature = HELMET_MIN_COLD_PROTECTION_TEMPERATURE + heat_protection = HEAD + max_heat_protection_temperature = HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + siemens_coefficient = 0.7 + w_class = ITEMSIZE_NORMAL + ear_protection = 1 + drop_sound = 'sound/items/drop/helm.ogg' + -/* //SilencedMP5A5:Serdykov Antoz /obj/item/device/modkit_conversion/fluff/serdykit name = "Serdykov's armor modification kit" @@ -457,9 +488,9 @@ from_helmet = /obj/item/clothing/head/helmet from_suit = /obj/item/clothing/suit/armor/vest/wolftaur - to_helmet = /obj/item/clothing/head/helmet/serdy + to_helmet = /obj/item/clothing/head/serdyhelmet to_suit = /obj/item/clothing/suit/armor/vest/wolftaur/serdy -*/ + //Cameron653: Diana Kuznetsova /obj/item/clothing/suit/fluff/purp_robes @@ -856,7 +887,7 @@ set src in view(1) //do_reagent_implant(usr) - if(!isliving(usr) || !usr.canClick()) + if(!isliving(usr) || !usr.checkClickCooldown()) return if(usr.incapacitated() || usr.stat > CONSCIOUS) @@ -925,7 +956,7 @@ set src in view(1) //do_reagent_implant(usr) - if(!isliving(usr) || !usr.canClick()) + if(!isliving(usr) || !usr.checkClickCooldown()) return if(usr.incapacitated() || usr.stat > CONSCIOUS) @@ -994,7 +1025,7 @@ set src in view(1) //do_reagent_implant(usr) - if(!isliving(usr) || !usr.canClick()) + if(!isliving(usr) || !usr.checkClickCooldown()) return if(usr.incapacitated() || usr.stat > CONSCIOUS) @@ -1079,7 +1110,7 @@ set src in view(1) //do_reagent_implant(usr) - if(!isliving(usr) || !usr.canClick()) + if(!isliving(usr) || !usr.checkClickCooldown()) return if(usr.incapacitated() || usr.stat > CONSCIOUS) @@ -1439,7 +1470,7 @@ set src in view(1) //do_reagent_implant(usr) - if(!isliving(usr) || !usr.canClick()) + if(!isliving(usr) || !usr.checkClickCooldown()) return if(usr.incapacitated() || usr.stat > CONSCIOUS) @@ -1766,3 +1797,28 @@ return 0 else return 1 + +//Nickcrazy - Damon Bones Xrim +/obj/item/clothing/suit/storage/toggle/bomber/bombersec + name = "Security Bomber Jacket" + desc = "A black bomber jacket with the security emblem sewn onto it." + icon = 'icons/vore/custom_items_vr.dmi' + icon_override = 'icons/vore/custom_items_vr.dmi' + icon_state = "bombersec" + + +//pimientopyro - Scylla Casmus +/obj/item/clothing/glasses/fluff/scylla + name = "Cherry-Red Shades" + desc = "These cheap, cherry-red cat-eye glasses seem to give you the inclination to eat chalk when you wear them." + + icon = 'icons/vore/custom_items_vr.dmi' + icon_state = "blindshades" + + icon_override = 'icons/vore/custom_clothes_vr.dmi' + item_state = "blindshades_mob" + +//Storesund97 - Aurora +/obj/item/clothing/accessory/solgov/department/security/aurora + name = "Old security insignia" + desc = "Insignia denoting assignment to the security department. These fit Expeditionary Corps uniforms. This one seems to be from the 2100s..." diff --git a/code/modules/vore/resizing/grav_pull_vr.dm b/code/modules/vore/resizing/grav_pull_vr.dm index 64b8581aff..b73fafca8f 100644 --- a/code/modules/vore/resizing/grav_pull_vr.dm +++ b/code/modules/vore/resizing/grav_pull_vr.dm @@ -31,7 +31,7 @@ // Let's just make this one loop. for(var/X in orange(pull_radius, location)) // Movable atoms only - if(!ismovableatom(X) || istype(X, /obj/effect/overlay)) + if(!ismovable(X) || istype(X, /obj/effect/overlay)) continue if(ishuman(X)) diff --git a/code/modules/vore/resizing/holder_micro_vr.dm b/code/modules/vore/resizing/holder_micro_vr.dm index b797ef4f5f..1675e506a9 100644 --- a/code/modules/vore/resizing/holder_micro_vr.dm +++ b/code/modules/vore/resizing/holder_micro_vr.dm @@ -11,8 +11,9 @@ pixel_y = 0 // Override value from parent. /obj/item/weapon/holder/micro/examine(mob/user) + . = list() for(var/mob/living/M in contents) - M.examine(user) + . += M.examine(user) /obj/item/weapon/holder/MouseDrop(mob/M) ..() @@ -25,16 +26,12 @@ /obj/item/weapon/holder/micro/attack_self(mob/living/carbon/user) //reworked so it works w/ nonhumans for(var/L in contents) - if(ishuman(L) && user.canClick()) // These canClicks() are repeated here to make sure users can't avoid the click delay + if(ishuman(L)) var/mob/living/carbon/human/H = L H.help_shake_act(user) - user.setClickCooldown(user.get_attack_speed()) //uses the same cooldown as regular attack_hand - return - if(isanimal(L) && user.canClick()) + if(isanimal(L)) var/mob/living/simple_mob/S = L user.visible_message("[user] [S.response_help] \the [S].") - user.setClickCooldown(user.get_attack_speed()) - /obj/item/weapon/holder/micro/update_state() if(isturf(loc) || !held_mob || held_mob.loc != src) diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm index af87fc7dfd..b7e671e9b3 100644 --- a/code/modules/vore/resizing/resize_vr.dm +++ b/code/modules/vore/resizing/resize_vr.dm @@ -42,7 +42,7 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2 ASSERT(!ishuman(src)) var/matrix/M = matrix() M.Scale(size_multiplier) - M.Translate(0, 16*(size_multiplier-1)) + M.Translate(0, (vis_height/2)*(size_multiplier-1)) transform = M /** diff --git a/code/modules/vore/resizing/sizegun_vr.dm b/code/modules/vore/resizing/sizegun_vr.dm index 491ffdf7de..7fdd357d7f 100644 --- a/code/modules/vore/resizing/sizegun_vr.dm +++ b/code/modules/vore/resizing/sizegun_vr.dm @@ -49,9 +49,8 @@ to_chat(usr, "You set the size to [size_select]%") /obj/item/weapon/gun/energy/sizegun/examine(mob/user) - ..() - var/size_examine = (size_set_to*100) - to_chat(user, "It is currently set at [size_examine]%") + . = ..() + . += "It is currently set at [size_set_to*100]%" // // Beams for size gun diff --git a/code/modules/vore/weight/fitness_machines_vr.dm b/code/modules/vore/weight/fitness_machines_vr.dm index 733cb2faca..df828e8eef 100644 --- a/code/modules/vore/weight/fitness_machines_vr.dm +++ b/code/modules/vore/weight/fitness_machines_vr.dm @@ -20,7 +20,7 @@ else //If they have enough nutrition and body weight, they can exercise. user.setClickCooldown(cooldown) - user.nutrition -= 10 * weightloss_power + user.adjust_nutrition(-10 * weightloss_power) user.weight -= 0.025 * weightloss_power * (0.01 * user.weight_loss) flick("[icon_state]2", src) var/message = pick(messages) diff --git a/code/modules/xenoarcheaology/artifacts/artifact.dm b/code/modules/xenoarcheaology/artifacts/artifact.dm index 840c2096c5..60e3543e19 100644 --- a/code/modules/xenoarcheaology/artifacts/artifact.dm +++ b/code/modules/xenoarcheaology/artifacts/artifact.dm @@ -9,19 +9,43 @@ var/datum/artifact_effect/secondary_effect var/being_used = 0 + var/predefined_effects = FALSE + + var/predefined_primary + var/predefined_secondary + + var/predefined_icon_num + + var/predefined_triggers = FALSE + + var/predefined_trig_primary + var/predefined_trig_secondary + /obj/machinery/artifact/New() ..() - var/effecttype = pick(typesof(/datum/artifact_effect) - /datum/artifact_effect) - my_effect = new effecttype(src) + if(predefined_effects && predefined_primary) + my_effect = new predefined_primary(src) + + if(predefined_secondary) + secondary_effect = new predefined_secondary(src) + if(prob(75)) + secondary_effect.ToggleActivate(0) + + else + var/effecttype = pick(typesof(/datum/artifact_effect) - /datum/artifact_effect) + my_effect = new effecttype(src) - if(prob(75)) - effecttype = pick(typesof(/datum/artifact_effect) - /datum/artifact_effect) - secondary_effect = new effecttype(src) if(prob(75)) - secondary_effect.ToggleActivate(0) + effecttype = pick(typesof(/datum/artifact_effect) - /datum/artifact_effect) + secondary_effect = new effecttype(src) + if(prob(75)) + secondary_effect.ToggleActivate(0) - icon_num = rand(0, 14) + if(!isnull(predefined_icon_num)) + icon_num = predefined_icon_num + else + icon_num = rand(0, 14) icon_state = "ano[icon_num]0" if(icon_num == 7 || icon_num == 8) @@ -53,6 +77,13 @@ if(prob(60)) my_effect.trigger = pick(TRIGGER_TOUCH, TRIGGER_HEAT, TRIGGER_COLD, TRIGGER_PHORON, TRIGGER_OXY, TRIGGER_CO2, TRIGGER_NITRO) + if(predefined_triggers) + if(predefined_trig_primary && my_effect) + my_effect.trigger = predefined_trig_primary + + if(predefined_trig_secondary && secondary_effect) + secondary_effect.trigger = predefined_trig_secondary + /obj/machinery/artifact/proc/choose_effect() var/effect_type = input(usr, "What type do you want?", "Effect Type") as null|anything in typesof(/datum/artifact_effect) - /datum/artifact_effect if(effect_type) @@ -336,8 +367,8 @@ secondary_effect.ToggleActivate(0) return -/obj/machinery/artifact/Move() - ..() +/obj/machinery/artifact/Moved() + . = ..() if(my_effect) my_effect.UpdateMove() if(secondary_effect) diff --git a/code/modules/xenoarcheaology/artifacts/predefined/_predefined.dm b/code/modules/xenoarcheaology/artifacts/predefined/_predefined.dm new file mode 100644 index 0000000000..edec0dd052 --- /dev/null +++ b/code/modules/xenoarcheaology/artifacts/predefined/_predefined.dm @@ -0,0 +1,15 @@ +/obj/machinery/artifact/predefined + name = "alien artifact" + desc = "A large alien device." + + predefined_effects = TRUE + + predefined_primary = null + predefined_secondary = null + + predefined_icon_num = null + + predefined_triggers = FALSE + + predefined_trig_primary = null + predefined_trig_secondary = null diff --git a/code/modules/xenoarcheaology/artifacts/predefined/hungry_statue.dm b/code/modules/xenoarcheaology/artifacts/predefined/hungry_statue.dm new file mode 100644 index 0000000000..6a81c02b8b --- /dev/null +++ b/code/modules/xenoarcheaology/artifacts/predefined/hungry_statue.dm @@ -0,0 +1,15 @@ +/obj/machinery/artifact/predefined/hungry_statue + name = "alien artifact" + desc = "A large alien device." + + predefined_effects = TRUE + + predefined_primary = /datum/artifact_effect/animate_anomaly + predefined_secondary = /datum/artifact_effect/vampire + + predefined_icon_num = 14 + + predefined_triggers = TRUE + + predefined_trig_primary = TRIGGER_OXY + predefined_trig_secondary = TRIGGER_OXY diff --git a/code/modules/xenoarcheaology/effects/heal.dm b/code/modules/xenoarcheaology/effects/heal.dm index b195c736c1..39bb09d04e 100644 --- a/code/modules/xenoarcheaology/effects/heal.dm +++ b/code/modules/xenoarcheaology/effects/heal.dm @@ -17,7 +17,7 @@ affecting.heal_damage(25 * weakness, 25 * weakness) //H:heal_organ_damage(25, 25) H.vessel.add_reagent("blood",5) - H.nutrition += 50 * weakness + H.adjust_nutrition(50 * weakness) H.adjustBrainLoss(-25 * weakness) H.radiation -= min(H.radiation, 25 * weakness) H.bodytemperature = initial(H.bodytemperature) diff --git a/code/modules/xenoarcheaology/effects/hurt.dm b/code/modules/xenoarcheaology/effects/hurt.dm index fb38214e23..14aff4e624 100644 --- a/code/modules/xenoarcheaology/effects/hurt.dm +++ b/code/modules/xenoarcheaology/effects/hurt.dm @@ -14,6 +14,7 @@ C.adjustFireLoss(rand(5,25) * weakness) C.adjustBrainLoss(rand(1,5) * weakness) C.apply_effect(25 * weakness, IRRADIATE) + C.adjust_nutrition(-50 * weakness) C.nutrition -= min(50 * weakness, C.nutrition) C.make_dizzy(6 * weakness) C.weakened += 6 * weakness diff --git a/code/modules/xenoarcheaology/finds/find_spawning.dm b/code/modules/xenoarcheaology/finds/find_spawning.dm index 20f10e91da..fc78135381 100644 --- a/code/modules/xenoarcheaology/finds/find_spawning.dm +++ b/code/modules/xenoarcheaology/finds/find_spawning.dm @@ -674,8 +674,9 @@ if(talkative) new_item.talking_atom = new(new_item) - LAZYSET(new_item.origin_tech, TECH_ARCANE, 1) - LAZYSET(new_item.origin_tech, TECH_PRECURSOR, 1) + LAZYINITLIST(new_item.origin_tech) + new_item.origin_tech[TECH_ARCANE] += 1 + new_item.origin_tech[TECH_PRECURSOR] += 1 var/turf/simulated/mineral/T = get_turf(new_item) if(istype(T)) @@ -685,5 +686,6 @@ else if(talkative) src.talking_atom = new(src) - LAZYSET(new_item.origin_tech, TECH_ARCANE, 1) - LAZYSET(new_item.origin_tech, TECH_PRECURSOR, 1) + LAZYINITLIST(origin_tech) + origin_tech[TECH_ARCANE] += 1 + origin_tech[TECH_PRECURSOR] += 1 diff --git a/code/modules/xenoarcheaology/finds/special.dm b/code/modules/xenoarcheaology/finds/special.dm index d93e47a1dd..3ed9ce38e8 100644 --- a/code/modules/xenoarcheaology/finds/special.dm +++ b/code/modules/xenoarcheaology/finds/special.dm @@ -29,11 +29,11 @@ var/mob/living/M = src.loc M.say(pick(heard_talk)) -/obj/item/clothing/mask/gas/poltergeist/hear_talk(mob/M as mob, text) +/obj/item/clothing/mask/gas/poltergeist/hear_talk(mob/M, list/message_pieces, verb) ..() if(heard_talk.len > max_stored_messages) heard_talk.Remove(pick(heard_talk)) - heard_talk.Add(text) + heard_talk.Add(multilingual_to_message(message_pieces)) if(istype(src.loc, /mob/living) && world.time - last_twitch > 50) last_twitch = world.time @@ -116,7 +116,7 @@ else if(get_dist(W, src) > 10) shadow_wights.Remove(wight_check_index) -/obj/item/weapon/vampiric/hear_talk(mob/M as mob, text) +/obj/item/weapon/vampiric/hear_talk(mob/M, list/message_pieces, verb) ..() if(world.time - last_bloodcall >= bloodcall_interval && M in view(7, src)) bloodcall(M) diff --git a/code/modules/xenoarcheaology/sampling.dm b/code/modules/xenoarcheaology/sampling.dm index 01c00ed000..8c2a99a570 100644 --- a/code/modules/xenoarcheaology/sampling.dm +++ b/code/modules/xenoarcheaology/sampling.dm @@ -93,8 +93,9 @@ var/obj/item/weapon/evidencebag/filled_bag /obj/item/device/core_sampler/examine(var/mob/user) - if(..(user, 2)) - to_chat(user, "Used to extract geological core samples - this one is [sampled_turf ? "full" : "empty"], and has [num_stored_bags] bag[num_stored_bags != 1 ? "s" : ""] remaining.") + . = ..() + if(get_dist(user, src) <= 2) + . += "Used to extract geological core samples - this one is [sampled_turf ? "full" : "empty"], and has [num_stored_bags] bag[num_stored_bags != 1 ? "s" : ""] remaining." /obj/item/device/core_sampler/attackby(var/obj/item/I, var/mob/living/user) if(istype(I, /obj/item/weapon/evidencebag)) diff --git a/code/modules/xenoarcheaology/tools/artifact_analyser.dm b/code/modules/xenoarcheaology/tools/artifact_analyser.dm index a3e69c4e7e..500b1a9970 100644 --- a/code/modules/xenoarcheaology/tools/artifact_analyser.dm +++ b/code/modules/xenoarcheaology/tools/artifact_analyser.dm @@ -1,7 +1,7 @@ /obj/machinery/artifact_analyser name = "Anomaly Analyser" desc = "Studies the emissions of anomalous materials to discover their uses." - icon = 'icons/obj/virology.dmi' + icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "isolator" anchored = 1 density = 1 diff --git a/code/modules/xenoarcheaology/tools/artifact_harvester.dm b/code/modules/xenoarcheaology/tools/artifact_harvester.dm index 8222eaa1f0..d4c843bbb7 100644 --- a/code/modules/xenoarcheaology/tools/artifact_harvester.dm +++ b/code/modules/xenoarcheaology/tools/artifact_harvester.dm @@ -1,6 +1,6 @@ /obj/machinery/artifact_harvester name = "Exotic Particle Harvester" - icon = 'icons/obj/virology.dmi' + icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "incubator" //incubator_on anchored = 1 density = 1 diff --git a/code/modules/xenoarcheaology/tools/geosample_scanner.dm b/code/modules/xenoarcheaology/tools/geosample_scanner.dm index 5cb5d32479..c5e5c029fd 100644 --- a/code/modules/xenoarcheaology/tools/geosample_scanner.dm +++ b/code/modules/xenoarcheaology/tools/geosample_scanner.dm @@ -3,7 +3,7 @@ desc = "A specialised, complex scanner for gleaning information on all manner of small things." anchored = 1 density = 1 - icon = 'icons/obj/virology.dmi' + icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "analyser" use_power = USE_POWER_IDLE diff --git a/code/modules/xenoarcheaology/tools/tools_pickaxe.dm b/code/modules/xenoarcheaology/tools/tools_pickaxe.dm index 778a204387..d9e00f64e9 100644 --- a/code/modules/xenoarcheaology/tools/tools_pickaxe.dm +++ b/code/modules/xenoarcheaology/tools/tools_pickaxe.dm @@ -195,6 +195,5 @@ icon_state = "excavationdrill5" //The other 2 sprites are comically long. Let's just cut it at 5. /obj/item/weapon/pickaxe/excavationdrill/examine(mob/user) - ..() - var/depth = excavation_amount - to_chat(user, "It is currently set at [depth]cms.") \ No newline at end of file + . = ..() + . += "It is currently set at [excavation_amount]cms." diff --git a/code/modules/xenobio/items/extracts.dm b/code/modules/xenobio/items/extracts.dm index b9e100d983..fddbb13a5e 100644 --- a/code/modules/xenobio/items/extracts.dm +++ b/code/modules/xenobio/items/extracts.dm @@ -33,11 +33,11 @@ ..() /obj/item/slime_extract/examine(mob/user) - ..() + . = ..() if(uses) - to_chat(user, "This extract has [uses] more use\s.") + . += "This extract has [uses] more use\s." else - to_chat(user, "This extract is inert.") + . += "This extract is inert." /datum/chemical_reaction/slime var/required = null diff --git a/code/modules/xenobio2/machinery/gene_manipulators.dm b/code/modules/xenobio2/machinery/gene_manipulators.dm index d0b368335d..761a2a98d4 100644 --- a/code/modules/xenobio2/machinery/gene_manipulators.dm +++ b/code/modules/xenobio2/machinery/gene_manipulators.dm @@ -115,7 +115,7 @@ /obj/machinery/xenobio/extractor name = "biological product destructive analyzer" - icon = 'icons/obj/hydroponics_machines.dmi' + icon = 'icons/obj/hydroponics_machines_vr.dmi' //VOREStation Edit icon_state = "traitcopier" circuit = /obj/item/weapon/circuitboard/bioproddestanalyzer diff --git a/code/modules/xenobio2/mob/slime/slime life.dm b/code/modules/xenobio2/mob/slime/slime life.dm index ef5f4aa2a5..ca5075f705 100644 --- a/code/modules/xenobio2/mob/slime/slime life.dm +++ b/code/modules/xenobio2/mob/slime/slime life.dm @@ -10,7 +10,7 @@ Slime specific life events go here. if(is_child) if(nutrition >= 275) growthcounter++ - nutrition -= hunger_factor + adjust_nutrition(-hunger_factor) if(nutrition <= 75) growthcounter-- if(growthcounter >= growthpoint) diff --git a/code/modules/xenobio2/mob/xeno procs.dm b/code/modules/xenobio2/mob/xeno procs.dm index 4b05bbf2e9..1fd17c964b 100644 --- a/code/modules/xenobio2/mob/xeno procs.dm +++ b/code/modules/xenobio2/mob/xeno procs.dm @@ -75,7 +75,7 @@ Divergence proc, used in mutation to make unique datums. heal_overall_damage(reagent_response["heal"] * reagent_total) if(reagent_response["nutr"]) - nutrition += reagent_response["nutr"] * reagent_total + adjust_nutrition(reagent_response["nutr"] * reagent_total) if(reagent_response["mut"]) mut_level += reagent_response["mut"] * reagent_total @@ -112,23 +112,11 @@ Divergence proc, used in mutation to make unique datums. /mob/living/simple_mob/xeno/proc/RandomizeTraits() return -/mob/living/simple_mob/xeno/hear_say(var/message, var/verb = "says", var/datum/language/language, var/alt_name = "",var/italics = 0, var/mob/speaker = null) +/mob/living/simple_mob/xeno/hear_say(var/list/message_pieces, var/verb = "says", var/italics = 0, var/mob/speaker = null) if(traitdat.traits[TRAIT_XENO_CANLEARN]) - /* - Until this gets sorted out to a functioning point, or waiting on Psi's saycode update. - var/learned_message = say_understands(speaker, language) - if(!message || isxeno(speaker)) - return - if(learned_message) //Is it understood? - var/complete_message = ",[language.key] [message]" - if(!(complete_message in speak)) - speech_buffer.Add(complete_message) - log_debug("Added '[complete_message]'.") - else - */ if(!(message in speak)) - speech_buffer.Add(message) - ..(message,verb,language,alt_name,italics,speaker) + speech_buffer.Add(multilingual_to_message(message_pieces)) + . = ..() /mob/living/simple_mob/xeno/proc/ProcessSpeechBuffer() if(speech_buffer.len) diff --git a/code/modules/xenobio2/mob/xeno.dm b/code/modules/xenobio2/mob/xeno.dm index 74a35aacc4..9996be9e61 100644 --- a/code/modules/xenobio2/mob/xeno.dm +++ b/code/modules/xenobio2/mob/xeno.dm @@ -67,7 +67,7 @@ Also includes Life and New nutrition = 0 if((nutrition > 0 ) && traitdat.traits[TRAIT_XENO_EATS]) if(nutrition >= 300) - nutrition -= hunger_factor + adjust_nutrition(-hunger_factor) else if(traitdat.traits[TRAIT_XENO_EATS]) health = starve_damage diff --git a/code/stylesheet.dm b/code/stylesheet.dm index 4e8f06447a..22bee5dda4 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -106,6 +106,7 @@ h1.alert, h2.alert {color: #000000;} .bug {color: #9e9e39;} .vox {color: #AA00AA;} .zaddat {color: #941C1C;} +.promethean {color: #5A5A5A;} .rough {font-family: "Trebuchet MS", cursive, sans-serif;} .say_quote {font-family: Georgia, Verdana, sans-serif;} .terminus {font-family: "Times New Roman", Times, serif, sans-serif} diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt index 2b13077b60..7578901734 100644 --- a/config/alienwhitelist.txt +++ b/config/alienwhitelist.txt @@ -1,6 +1,5 @@ some~user - Species -911earlyarther - Xenomorph Hybrid admiraldragon - Vox aetherelemental - Daemon arandomalien - Xenochimera @@ -9,10 +8,9 @@ aruis - Diona aruis - Xenochimera amarewolf - Xenochimera azmodan412 - Xenochimera -azmodan412 - Xenomorph Hybrid bothnevarbackwards - Diona -cameron653 - Xenomorph Hybrid crossexonar - Protean +chillyfang - Black-Eyed Shadekin flaktual - Vox funnyman2003 - Xenochimera hawkerthegreat - Vox @@ -20,7 +18,6 @@ hollifex - Diona inuzari - Diona jademanique - Xenochimera jemli - Gutter -killerdragn - Xenomorph Hybrid ktccd - Diona mewchild - Diona mewchild - Vox @@ -31,28 +28,23 @@ paradoxspace - Xenochimera rapidvalj - Vox rapidvalj - Common Skrellian rapidvalj - High Skrellian -rikaru19xjenkins - Xenomorph Hybrid rikaru19xjenkins - Xenochimera rixunie - Diona rixunie - Gutter rykkastormheart - Xenochimera seiga - Vox sepulchre - Vox -sepulchre - Xenomorph Hybrid silvertalismen - Diona silvertalismen - Vox silvertalismen - Xenochimera singo - Gutter +tastypred - Black-Eyed Shadekin tastypred - Xenochimera timidvi - Diona varonis - Xenochimera verkister - Xenochimera -westfire - Xenomorph Hybrid wickedtemp - Shadekin Empathy -wtfismyname - Xenomorph Hybrid xioen - Diona xioen - Xenochimera -xioen - Xenomorph Hybrid zalvine - Shadekin Empathy zammyman215 - Vox -zekesturm - Xenomorph Hybrid diff --git a/config/example/config.txt b/config/example/config.txt index 57cfa86a36..cf7be2756f 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -528,4 +528,7 @@ SQLITE_FEEDBACK_COOLDOWN 0 SQLITE_FEEDBACK_MIN_AGE 7 ## Uncomment this if you want to disable the popup alert for people on the same CID (Don't do this on a live server if you ban multikeying) -#DISABLE_CID_WARN_POPUP \ No newline at end of file +#DISABLE_CID_WARN_POPUP + +## Comment this out if you don't want to use the 'nightshift lighting' subsystem to adjust lights based on ingame time +ENABLE_NIGHT_SHIFTS \ No newline at end of file diff --git a/html/changelog.html b/html/changelog.html index e345663e70..6045c2ca04 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,56 @@ -->
      +

      29 April 2020

      +

      Leshana updated:

      +
        +
      • Ship Helm, Sensors, Navigation, and Engine Control consoles are now de-/constructable.
      • +
      • Exploration (Overmap) Shuttle Console is now de-/constructable.
      • +
      • Mappers no longer need to varedit shuttle_tag on shuttle consoles.
      • +
      • Admin Start Now verb can be used at any time during startup and it won't actually start the game until initialization is completed.
      • +
      • Lobby stat panel shows time remaining on lobby votes and if the server is done initializing.
      • +
      +

      Neerti updated:

      +
        +
      • You can now eat as much food as you want, even while 'full'.
      • +
      +

      Novacat updated:

      +
        +
      • Re-enabled dual wielding penalties for most weapons that had them.
      • +
      • New dual-wielding sprites for weapons that needed them and did not have them.
      • +
      +

      Shadow Quill updated:

      +
        +
      • Fixes the 'broken/damaged' message when an airlock is just broken.
      • +
      • Heavy duty cell chargers now have flashing lights as they charge! When all the lights are flashing, that means the cell is done.
      • +
      +

      atlantiscze updated:

      +
        +
      • Shutoff valve monitoring is now also available as a modular computer program. Its UI has also been cleaned up a little.
      • +
      • Research robot module now has basic exploration and xenoarchaeology tools.
      • +
      + +

      20 April 2020

      +

      Atermonera updated:

      +
        +
      • Circuit clothes can have accessories attached.
      • +
      • Control-shift-click on circuit clothes to use items on the circuit.
      • +
      • Employment records can have comments similar to medical records.
      • +
      • Added a preference to switch between a few extra modes of examining things. Verb in the preferences tab.
      • +
      • Added Combat Logs filter category, to filter messages from things hitting you. This category will also eat up most other messages that are red and bold, please report any such messages that aren't specifically related to punching things.
      • +
      • Added categories for sorting various types of admin logs.
      • +
      • Adds a preference to forcibly disable (or enable) VChat. Useful mostly for people on linux, to skip the 60s waiting period where it tries to work and keeps you from seeing chat. Reloading VChat or reconnecting to the server are required for any changes to the preference to take effect. Support for issues that arise as a result of this preference is not guaranteed.
      • +
      +

      Leshana updated:

      +
        +
      • Glass Emergency Shutters are now constructable and deconstructing them will give you the glass back.
      • +
      +

      Neerti updated:

      +
        +
      • All sources of stasis (sleepers, stasis bags) will prolong the amount of time that lets someone be revived by a defib, proportional to how powerful the stasis effect is.
      • +
      • Opening a stasis bag that's being used now gives a prompt to confirm if you want to open it and make the bag expire. No more misclicks making doctors want to murder you.
      • +
      +

      05 April 2020

      Atermonera updated:

        diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 5f691beb23..08eaf8a18c 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -5082,3 +5082,53 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. only took a year for someone to fix it. novacat: - rscadd: Adds action buttons for scoping all sniper weapons. +2020-04-20: + Atermonera: + - bugfix: Circuit clothes can have accessories attached. + - tweak: Control-shift-click on circuit clothes to use items on the circuit. + - tweak: Employment records can have comments similar to medical records. + - rscadd: Added a preference to switch between a few extra modes of examining things. + Verb in the preferences tab. + - rscadd: Added Combat Logs filter category, to filter messages from things hitting + you. This category will also eat up most other messages that are red and bold, + please report any such messages that aren't specifically related to punching + things. + - rscadd: Added categories for sorting various types of admin logs. + - rscadd: Adds a preference to forcibly disable (or enable) VChat. Useful mostly + for people on linux, to skip the 60s waiting period where it tries to work and + keeps you from seeing chat. Reloading VChat or reconnecting to the server are + required for any changes to the preference to take effect. Support for issues + that arise as a result of this preference is not guaranteed. + Leshana: + - rscadd: Glass Emergency Shutters are now constructable and deconstructing them + will give you the glass back. + Neerti: + - rscadd: All sources of stasis (sleepers, stasis bags) will prolong the amount + of time that lets someone be revived by a defib, proportional to how powerful + the stasis effect is. + - tweak: Opening a stasis bag that's being used now gives a prompt to confirm if + you want to open it and make the bag expire. No more misclicks making doctors + want to murder you. +2020-04-29: + Leshana: + - rscadd: Ship Helm, Sensors, Navigation, and Engine Control consoles are now de-/constructable. + - rscadd: Exploration (Overmap) Shuttle Console is now de-/constructable. + - tweak: Mappers no longer need to varedit shuttle_tag on shuttle consoles. + - rscadd: Admin Start Now verb can be used at any time during startup and it won't + actually start the game until initialization is completed. + - rscadd: Lobby stat panel shows time remaining on lobby votes and if the server + is done initializing. + Neerti: + - rscadd: You can now eat as much food as you want, even while 'full'. + Novacat: + - tweak: Re-enabled dual wielding penalties for most weapons that had them. + - rscadd: New dual-wielding sprites for weapons that needed them and did not have + them. + Shadow Quill: + - bugfix: Fixes the 'broken/damaged' message when an airlock is just broken. + - tweak: Heavy duty cell chargers now have flashing lights as they charge! When + all the lights are flashing, that means the cell is done. + atlantiscze: + - rscadd: Shutoff valve monitoring is now also available as a modular computer program. + Its UI has also been cleaned up a little. + - rscadd: Research robot module now has basic exploration and xenoarchaeology tools. diff --git a/html/changelogs/Layne - Promethean Language.yml b/html/changelogs/Layne - Promethean Language.yml new file mode 100644 index 0000000000..ed0f2e7ab3 --- /dev/null +++ b/html/changelogs/Layne - Promethean Language.yml @@ -0,0 +1,5 @@ +author: Layne +delete-after: True +changes: + - rscadd: "Promethean language." + - tweak: "NONVERBAL define was changed a bit." diff --git a/html/changelogs/atermonera_circuitpants_holstered.yml b/html/changelogs/atermonera_circuitpants_holstered.yml deleted file mode 100644 index 059a266933..0000000000 --- a/html/changelogs/atermonera_circuitpants_holstered.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Atermonera -delete-after: True -changes: - - bugfix: "Circuit clothes can have accessories attached." - - tweak: "Control-shift-click on circuit clothes to use items on the circuit." diff --git a/html/changelogs/atermonera_employment_comments.yml b/html/changelogs/atermonera_employment_comments.yml deleted file mode 100644 index 9070a68054..0000000000 --- a/html/changelogs/atermonera_employment_comments.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Atermonera -delete-after: True -changes: - - tweak: "Employment records can have comments similar to medical records." diff --git a/html/changelogs/atermonera_examine_pref.yml b/html/changelogs/atermonera_examine_pref.yml deleted file mode 100644 index 5551bec2bb..0000000000 --- a/html/changelogs/atermonera_examine_pref.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Atermonera -delete-after: True -changes: - - rscadd: "Added a preference to switch between a few extra modes of examining things. Verb in the preferences tab." diff --git a/html/changelogs/ateromnera_vchat_pref.yml b/html/changelogs/ateromnera_vchat_pref.yml deleted file mode 100644 index 903399b418..0000000000 --- a/html/changelogs/ateromnera_vchat_pref.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Atermonera -delete-after: True -changes: - - rscadd:"Adds a preference to forcibly disable (or enable) VChat. Useful mostly for people on linux, to skip the 60s waiting period where it tries to work and keeps you from seeing chat. Reloading VChat or reconnecting to the server are required for any changes to the preference to take effect. Support for issues that arise as a result of this preference is not guaranteed." diff --git a/html/changelogs/atlantiscze-dumpsterdive.yml b/html/changelogs/atlantiscze-dumpsterdive.yml new file mode 100644 index 0000000000..ee988d11b9 --- /dev/null +++ b/html/changelogs/atlantiscze-dumpsterdive.yml @@ -0,0 +1,6 @@ +author: atlantiscze + +delete-after: True + +changes: + - rscadd: "Robots can now search loot piles." \ No newline at end of file diff --git a/html/changelogs/atlantiscze-hardsuit.yml b/html/changelogs/atlantiscze-hardsuit.yml new file mode 100644 index 0000000000..92cea41472 --- /dev/null +++ b/html/changelogs/atlantiscze-hardsuit.yml @@ -0,0 +1,6 @@ +author: atlantiscze + +delete-after: True + +changes: + - rscadd: "Hardsuits now allow backpacks to be carried in storage slot. This is limited to hardsuits which are worn on the back slot." \ No newline at end of file diff --git a/html/changelogs/atlantiscze-power.yml b/html/changelogs/atlantiscze-power.yml new file mode 100644 index 0000000000..31e354cc55 --- /dev/null +++ b/html/changelogs/atlantiscze-power.yml @@ -0,0 +1,10 @@ +author: atlantiscze +delete-after: True + +changes: + - rscadd: "SMES units now have automatic load balancing both on inputs and outputs" + - rscadd: "SMES units (and derived objects, such as PSUs) can now have more than one input terminal. This allows for input from more otherwise isolated power networks." + - tweak: "Completely redesigned cell rack PSUs, removed ghetto variant. Cell rack PSUs now support multiple power cells and hot-swapping of cells during operation. This allows for either charging multiple cells at once in one device (directly from power cable) or for powering up various machinery with only a power cell. They are still inferior to SMESes in pretty much all aspects." + - tweak: "Multitool on a cable now shows nicer results with large currents (uses kW or MW accordingly)" + - tweak: "Multitool may be now used to change colour of cable coils." + \ No newline at end of file diff --git a/html/changelogs/neerti-qol_medical_2.yml b/html/changelogs/mechoid-newhorizon.yml similarity index 59% rename from html/changelogs/neerti-qol_medical_2.yml rename to html/changelogs/mechoid-newhorizon.yml index f8491b9803..e9740680a3 100644 --- a/html/changelogs/neerti-qol_medical_2.yml +++ b/html/changelogs/mechoid-newhorizon.yml @@ -1,37 +1,44 @@ -################################ -# Example Changelog File -# -# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. -# -# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) -# When it is, any changes listed below will disappear. -# -# Valid Prefixes: -# bugfix -# wip (For works in progress) -# tweak -# soundadd -# sounddel -# rscadd (general adding of nice things) -# rscdel (general deleting of nice things) -# imageadd -# imagedel -# maptweak -# spellcheck (typo fixes) -# experiment -################################# - -# Your name. -author: Neerti - -# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. -delete-after: True - -# Any changes you've made. See valid prefix list above. -# INDENT WITH TWO SPACES. NOT TABS. SPACES. -# SCREW THIS UP AND IT WON'T WORK. -# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. -# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. -changes: - - rscadd: "All sources of stasis (sleepers, stasis bags) will prolong the amount of time that lets someone be revived by a defib, proportional to how powerful the stasis effect is." - - tweak: "Opening a stasis bag that's being used now gives a prompt to confirm if you want to open it and make the bag expire. No more misclicks making doctors want to murder you." +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Mechoid + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds more interactions with animals, like shearing and taming." + - rscadd: "Sif moss turfs can now spawn animal groups." + - rscadd: "New PoIs" + - rscadd: "Thermal poncho attachment, has minor slowdown, but gives thermal protection to the armor it is attached to." + - rscadd: "Mercenaries now drop their guns again. Most likely to be broken, however they can be repaired. Examining when adjacent will allow you to inspect the gun for what is needed." + - rscadd: "Mercenary Snipers now exist. They will telegraph their shots approximately 2 seconds in advance, and can fire at 14 tiles away. Will occasionally drop pieces of their PTRs that survive combat." + - tweak: "Clothing can now check attachments for temperature resistance." + - bugfix: "MHD Howitzer beam effect actually exists again. + - bugfix: "Xenoresin ground cover is properly colored again." diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index 6c631498f6..4115b01ef2 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/effects/effects_rcd.dmi b/icons/effects/effects_rcd.dmi new file mode 100644 index 0000000000..efb13bfb11 Binary files /dev/null and b/icons/effects/effects_rcd.dmi differ diff --git a/icons/effects/progessbar.dmi b/icons/effects/progressbar.dmi similarity index 100% rename from icons/effects/progessbar.dmi rename to icons/effects/progressbar.dmi diff --git a/icons/goonstation/turf/martiantiles.dmi b/icons/goonstation/turf/martiantiles.dmi new file mode 100644 index 0000000000..adc48d1b66 Binary files /dev/null and b/icons/goonstation/turf/martiantiles.dmi differ diff --git a/icons/goonstation/turf/timeholefull.dmi b/icons/goonstation/turf/timeholefull.dmi new file mode 100644 index 0000000000..34097cb084 Binary files /dev/null and b/icons/goonstation/turf/timeholefull.dmi differ diff --git a/icons/goonstation/turf/voidwarp.dmi b/icons/goonstation/turf/voidwarp.dmi new file mode 100644 index 0000000000..7c32437e1c Binary files /dev/null and b/icons/goonstation/turf/voidwarp.dmi differ diff --git a/icons/mecha/fighters64x64.dmi b/icons/mecha/fighters64x64.dmi index 2022efbd51..7240417552 100644 Binary files a/icons/mecha/fighters64x64.dmi and b/icons/mecha/fighters64x64.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index e956f35874..0c0dce59bc 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 99f3f4fd4c..5555d0e1ad 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/dogborg_vr.dmi b/icons/mob/dogborg_vr.dmi index 6b77c5a222..4bf56f830a 100644 Binary files a/icons/mob/dogborg_vr.dmi and b/icons/mob/dogborg_vr.dmi differ diff --git a/icons/mob/feet_vr.dmi b/icons/mob/feet_vr.dmi index 41062144df..800d211b20 100644 Binary files a/icons/mob/feet_vr.dmi and b/icons/mob/feet_vr.dmi differ diff --git a/icons/mob/head_vr.dmi b/icons/mob/head_vr.dmi index 3db239e18d..57bd8f01cb 100644 Binary files a/icons/mob/head_vr.dmi and b/icons/mob/head_vr.dmi differ diff --git a/icons/mob/human_races/markings.dmi b/icons/mob/human_races/markings.dmi index 6841c92518..bdfe4b0f36 100644 Binary files a/icons/mob/human_races/markings.dmi and b/icons/mob/human_races/markings.dmi differ diff --git a/icons/mob/human_races/markings_vr.dmi b/icons/mob/human_races/markings_vr.dmi index 87c59161e6..487c66f674 100644 Binary files a/icons/mob/human_races/markings_vr.dmi and b/icons/mob/human_races/markings_vr.dmi differ diff --git a/icons/mob/items/lefthand_vr.dmi b/icons/mob/items/lefthand_vr.dmi index 009e558532..39a6e5bdbd 100644 Binary files a/icons/mob/items/lefthand_vr.dmi and b/icons/mob/items/lefthand_vr.dmi differ diff --git a/icons/mob/items/righthand_vr.dmi b/icons/mob/items/righthand_vr.dmi index c9a7af5fb8..abeedba03d 100644 Binary files a/icons/mob/items/righthand_vr.dmi and b/icons/mob/items/righthand_vr.dmi differ diff --git a/icons/mob/radial.dmi b/icons/mob/radial.dmi index da1f69840c..bf14a19734 100644 Binary files a/icons/mob/radial.dmi and b/icons/mob/radial.dmi differ diff --git a/icons/mob/radial_vr.dmi b/icons/mob/radial_vr.dmi new file mode 100644 index 0000000000..d5ecf5c8cc Binary files /dev/null and b/icons/mob/radial_vr.dmi differ diff --git a/icons/mob/species/akula/helmet_vr.dmi b/icons/mob/species/akula/helmet_vr.dmi index d92a0a7d41..69aef545f6 100644 Binary files a/icons/mob/species/akula/helmet_vr.dmi and b/icons/mob/species/akula/helmet_vr.dmi differ diff --git a/icons/mob/species/akula/suit_vr.dmi b/icons/mob/species/akula/suit_vr.dmi index ec3fb3f308..859d79a1fe 100644 Binary files a/icons/mob/species/akula/suit_vr.dmi and b/icons/mob/species/akula/suit_vr.dmi differ diff --git a/icons/mob/species/sergal/helmet_vr.dmi b/icons/mob/species/sergal/helmet_vr.dmi index f3336dadf2..c77450aaeb 100644 Binary files a/icons/mob/species/sergal/helmet_vr.dmi and b/icons/mob/species/sergal/helmet_vr.dmi differ diff --git a/icons/mob/species/sergal/suit_vr.dmi b/icons/mob/species/sergal/suit_vr.dmi index cd397fe036..1f62670b49 100644 Binary files a/icons/mob/species/sergal/suit_vr.dmi and b/icons/mob/species/sergal/suit_vr.dmi differ diff --git a/icons/mob/species/seromi/head.dmi b/icons/mob/species/seromi/head.dmi index f5222773f7..0c8999a9b5 100644 Binary files a/icons/mob/species/seromi/head.dmi and b/icons/mob/species/seromi/head.dmi differ diff --git a/icons/mob/species/seromi/suit.dmi b/icons/mob/species/seromi/suit.dmi index fa263e5974..d10902a6ff 100644 Binary files a/icons/mob/species/seromi/suit.dmi and b/icons/mob/species/seromi/suit.dmi differ diff --git a/icons/mob/species/skrell/helmet.dmi b/icons/mob/species/skrell/helmet.dmi index 74f0afd7b9..7a95007bd7 100644 Binary files a/icons/mob/species/skrell/helmet.dmi and b/icons/mob/species/skrell/helmet.dmi differ diff --git a/icons/mob/species/skrell/suit.dmi b/icons/mob/species/skrell/suit.dmi index 468975ff63..9a5d4ec447 100644 Binary files a/icons/mob/species/skrell/suit.dmi and b/icons/mob/species/skrell/suit.dmi differ diff --git a/icons/mob/species/tajaran/helmet.dmi b/icons/mob/species/tajaran/helmet.dmi index 9e1d5c5f37..4f8010b259 100644 Binary files a/icons/mob/species/tajaran/helmet.dmi and b/icons/mob/species/tajaran/helmet.dmi differ diff --git a/icons/mob/species/tajaran/suit.dmi b/icons/mob/species/tajaran/suit.dmi index 299f25a9ea..7dba50ef6b 100644 Binary files a/icons/mob/species/tajaran/suit.dmi and b/icons/mob/species/tajaran/suit.dmi differ diff --git a/icons/mob/species/unathi/helmet.dmi b/icons/mob/species/unathi/helmet.dmi index 38a23aeeda..10cf92dcf4 100644 Binary files a/icons/mob/species/unathi/helmet.dmi and b/icons/mob/species/unathi/helmet.dmi differ diff --git a/icons/mob/species/unathi/suit.dmi b/icons/mob/species/unathi/suit.dmi index cbd7579c9a..2d2d0a434b 100644 Binary files a/icons/mob/species/unathi/suit.dmi and b/icons/mob/species/unathi/suit.dmi differ diff --git a/icons/mob/species/vulpkanin/helmet.dmi b/icons/mob/species/vulpkanin/helmet.dmi index 52cefb40a2..47d3fd12ab 100644 Binary files a/icons/mob/species/vulpkanin/helmet.dmi and b/icons/mob/species/vulpkanin/helmet.dmi differ diff --git a/icons/mob/species/vulpkanin/suit.dmi b/icons/mob/species/vulpkanin/suit.dmi index 4b6de502f3..452c1fca56 100644 Binary files a/icons/mob/species/vulpkanin/suit.dmi and b/icons/mob/species/vulpkanin/suit.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 82a803af14..13ed45334c 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/suit_vr.dmi b/icons/mob/suit_vr.dmi index 12cada28eb..5df054af1e 100644 Binary files a/icons/mob/suit_vr.dmi and b/icons/mob/suit_vr.dmi differ diff --git a/icons/mob/taursuits_cow_vr.dmi b/icons/mob/taursuits_cow_vr.dmi index eef5bd698c..ce592d5edb 100644 Binary files a/icons/mob/taursuits_cow_vr.dmi and b/icons/mob/taursuits_cow_vr.dmi differ diff --git a/icons/mob/taursuits_deer_vr.dmi b/icons/mob/taursuits_deer_vr.dmi new file mode 100644 index 0000000000..6c53a6f4d0 Binary files /dev/null and b/icons/mob/taursuits_deer_vr.dmi differ diff --git a/icons/mob/taursuits_drake_vr.dmi b/icons/mob/taursuits_drake_vr.dmi index c8be86ed97..ca0db57532 100644 Binary files a/icons/mob/taursuits_drake_vr.dmi and b/icons/mob/taursuits_drake_vr.dmi differ diff --git a/icons/mob/taursuits_feline_vr.dmi b/icons/mob/taursuits_feline_vr.dmi index e180d1dad2..1d4c597e02 100644 Binary files a/icons/mob/taursuits_feline_vr.dmi and b/icons/mob/taursuits_feline_vr.dmi differ diff --git a/icons/mob/taursuits_horse_vr.dmi b/icons/mob/taursuits_horse_vr.dmi index 8dc33f3118..4162463c69 100644 Binary files a/icons/mob/taursuits_horse_vr.dmi and b/icons/mob/taursuits_horse_vr.dmi differ diff --git a/icons/mob/taursuits_lizard_vr.dmi b/icons/mob/taursuits_lizard_vr.dmi index 2971beb863..a6b9858f17 100644 Binary files a/icons/mob/taursuits_lizard_vr.dmi and b/icons/mob/taursuits_lizard_vr.dmi differ diff --git a/icons/mob/taursuits_naga_vr.dmi b/icons/mob/taursuits_naga_vr.dmi index ef00466c27..375081158f 100644 Binary files a/icons/mob/taursuits_naga_vr.dmi and b/icons/mob/taursuits_naga_vr.dmi differ diff --git a/icons/mob/taursuits_otie_vr.dmi b/icons/mob/taursuits_otie_vr.dmi new file mode 100644 index 0000000000..06e083854e Binary files /dev/null and b/icons/mob/taursuits_otie_vr.dmi differ diff --git a/icons/mob/taursuits_slug_vr.dmi b/icons/mob/taursuits_slug_vr.dmi new file mode 100644 index 0000000000..98692375f3 Binary files /dev/null and b/icons/mob/taursuits_slug_vr.dmi differ diff --git a/icons/mob/taursuits_wolf_vr.dmi b/icons/mob/taursuits_wolf_vr.dmi index 94422849f8..0f638ea6d3 100644 Binary files a/icons/mob/taursuits_wolf_vr.dmi and b/icons/mob/taursuits_wolf_vr.dmi differ diff --git a/icons/mob/ties_vr.dmi b/icons/mob/ties_vr.dmi index e965110112..7e06a43e11 100644 Binary files a/icons/mob/ties_vr.dmi and b/icons/mob/ties_vr.dmi differ diff --git a/icons/mob/uniform_vr.dmi b/icons/mob/uniform_vr.dmi index 616348ced9..9d0cf74b0e 100644 Binary files a/icons/mob/uniform_vr.dmi and b/icons/mob/uniform_vr.dmi differ diff --git a/icons/mob/vore/ears_vr.dmi b/icons/mob/vore/ears_vr.dmi index daeefa2337..c2f4bcbd98 100644 Binary files a/icons/mob/vore/ears_vr.dmi and b/icons/mob/vore/ears_vr.dmi differ diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi index d3b06e056b..9bb4bf0dd3 100644 Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ diff --git a/icons/mob/widerobot_vr.dmi b/icons/mob/widerobot_vr.dmi index 84f404cdb6..bf7c205d1f 100644 Binary files a/icons/mob/widerobot_vr.dmi and b/icons/mob/widerobot_vr.dmi differ diff --git a/icons/obj/ammo_vr.dmi b/icons/obj/ammo_vr.dmi index b3d64a736b..4d823c7542 100644 Binary files a/icons/obj/ammo_vr.dmi and b/icons/obj/ammo_vr.dmi differ diff --git a/icons/obj/biogenerator_vr.dmi b/icons/obj/biogenerator_vr.dmi new file mode 100644 index 0000000000..aca2c2716f Binary files /dev/null and b/icons/obj/biogenerator_vr.dmi differ diff --git a/icons/obj/cardboard_cutout.dmi b/icons/obj/cardboard_cutout.dmi new file mode 100644 index 0000000000..cde84fea71 Binary files /dev/null and b/icons/obj/cardboard_cutout.dmi differ diff --git a/icons/obj/cellrack.dmi b/icons/obj/cellrack.dmi new file mode 100644 index 0000000000..41347de3f7 Binary files /dev/null and b/icons/obj/cellrack.dmi differ diff --git a/icons/obj/clothing/hats_vr.dmi b/icons/obj/clothing/hats_vr.dmi index f2d9773b0b..a2cec1a3ba 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/modular_armor.dmi b/icons/obj/clothing/modular_armor.dmi index 1372ff9a5e..119f56d6b5 100644 Binary files a/icons/obj/clothing/modular_armor.dmi and b/icons/obj/clothing/modular_armor.dmi differ diff --git a/icons/obj/clothing/shoes_vr.dmi b/icons/obj/clothing/shoes_vr.dmi index aa3269278c..6b4534a217 100644 Binary files a/icons/obj/clothing/shoes_vr.dmi and b/icons/obj/clothing/shoes_vr.dmi differ diff --git a/icons/obj/clothing/species/akula/hats.dmi b/icons/obj/clothing/species/akula/hats.dmi index 4ab93687ff..b74f641dab 100644 Binary files a/icons/obj/clothing/species/akula/hats.dmi and b/icons/obj/clothing/species/akula/hats.dmi differ diff --git a/icons/obj/clothing/species/akula/suits.dmi b/icons/obj/clothing/species/akula/suits.dmi index 7ea4cbf96b..d204ff70f7 100644 Binary files a/icons/obj/clothing/species/akula/suits.dmi and b/icons/obj/clothing/species/akula/suits.dmi differ diff --git a/icons/obj/clothing/species/sergal/hats.dmi b/icons/obj/clothing/species/sergal/hats.dmi index f1542eeada..d05b40a680 100644 Binary files a/icons/obj/clothing/species/sergal/hats.dmi and b/icons/obj/clothing/species/sergal/hats.dmi differ diff --git a/icons/obj/clothing/species/sergal/suits.dmi b/icons/obj/clothing/species/sergal/suits.dmi index e782ed1f8c..0d0a5792e8 100644 Binary files a/icons/obj/clothing/species/sergal/suits.dmi and b/icons/obj/clothing/species/sergal/suits.dmi differ diff --git a/icons/obj/clothing/species/skrell/hats.dmi b/icons/obj/clothing/species/skrell/hats.dmi index 24f1cf14d3..6512b42d6e 100644 Binary files a/icons/obj/clothing/species/skrell/hats.dmi and b/icons/obj/clothing/species/skrell/hats.dmi differ diff --git a/icons/obj/clothing/species/skrell/suits.dmi b/icons/obj/clothing/species/skrell/suits.dmi index 65af0160d7..3874dac941 100644 Binary files a/icons/obj/clothing/species/skrell/suits.dmi and b/icons/obj/clothing/species/skrell/suits.dmi differ diff --git a/icons/obj/clothing/species/tajaran/hats.dmi b/icons/obj/clothing/species/tajaran/hats.dmi index c5a1415d0d..89f359a4a9 100644 Binary files a/icons/obj/clothing/species/tajaran/hats.dmi and b/icons/obj/clothing/species/tajaran/hats.dmi differ diff --git a/icons/obj/clothing/species/tajaran/suits.dmi b/icons/obj/clothing/species/tajaran/suits.dmi index 31df8f07f7..e8ab73eadf 100644 Binary files a/icons/obj/clothing/species/tajaran/suits.dmi and b/icons/obj/clothing/species/tajaran/suits.dmi differ diff --git a/icons/obj/clothing/species/unathi/hats.dmi b/icons/obj/clothing/species/unathi/hats.dmi index d9d7160f78..221503aa2b 100644 Binary files a/icons/obj/clothing/species/unathi/hats.dmi and b/icons/obj/clothing/species/unathi/hats.dmi differ diff --git a/icons/obj/clothing/species/unathi/suits.dmi b/icons/obj/clothing/species/unathi/suits.dmi index 0b3f7884a1..01bc6e4650 100644 Binary files a/icons/obj/clothing/species/unathi/suits.dmi and b/icons/obj/clothing/species/unathi/suits.dmi differ diff --git a/icons/obj/clothing/species/vulpkanin/hats.dmi b/icons/obj/clothing/species/vulpkanin/hats.dmi index c655925a01..2f94e6837a 100644 Binary files a/icons/obj/clothing/species/vulpkanin/hats.dmi and b/icons/obj/clothing/species/vulpkanin/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index d4013fe952..ad2cf41c4d 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/suits_vr.dmi b/icons/obj/clothing/suits_vr.dmi index a10d6cc9ea..972284dae7 100644 Binary files a/icons/obj/clothing/suits_vr.dmi and b/icons/obj/clothing/suits_vr.dmi differ diff --git a/icons/obj/clothing/ties_vr.dmi b/icons/obj/clothing/ties_vr.dmi index fc13c4f683..9df871aedc 100644 Binary files a/icons/obj/clothing/ties_vr.dmi and b/icons/obj/clothing/ties_vr.dmi differ diff --git a/icons/obj/clothing/uniforms_vr.dmi b/icons/obj/clothing/uniforms_vr.dmi index b5858c9fa5..2f3ea7266b 100644 Binary files a/icons/obj/clothing/uniforms_vr.dmi and b/icons/obj/clothing/uniforms_vr.dmi differ diff --git a/icons/obj/contraband_vr.dmi b/icons/obj/contraband_vr.dmi index 8b67cc1699..5a6988bb08 100644 Binary files a/icons/obj/contraband_vr.dmi and b/icons/obj/contraband_vr.dmi differ diff --git a/icons/obj/device_vr.dmi b/icons/obj/device_vr.dmi new file mode 100644 index 0000000000..1fa6835a94 Binary files /dev/null and b/icons/obj/device_vr.dmi differ diff --git a/icons/obj/disperser.dmi b/icons/obj/disperser.dmi new file mode 100644 index 0000000000..12f4e81776 Binary files /dev/null and b/icons/obj/disperser.dmi differ diff --git a/icons/obj/energygun.dmi b/icons/obj/energygun.dmi index 157c3c11f6..73c39449bb 100644 Binary files a/icons/obj/energygun.dmi and b/icons/obj/energygun.dmi differ diff --git a/icons/obj/food_vr.dmi b/icons/obj/food_vr.dmi index 0ebf8f48ef..5fa1150b5c 100644 Binary files a/icons/obj/food_vr.dmi and b/icons/obj/food_vr.dmi differ diff --git a/icons/obj/heartmonitor.dmi b/icons/obj/heartmonitor.dmi new file mode 100644 index 0000000000..dcbdfa4f54 Binary files /dev/null and b/icons/obj/heartmonitor.dmi differ diff --git a/icons/obj/hydroponics_machines_vr.dmi b/icons/obj/hydroponics_machines_vr.dmi new file mode 100644 index 0000000000..af15e80c3b Binary files /dev/null and b/icons/obj/hydroponics_machines_vr.dmi differ diff --git a/icons/obj/items_vr.dmi b/icons/obj/items_vr.dmi index 46276e7f7c..6e31f43624 100644 Binary files a/icons/obj/items_vr.dmi and b/icons/obj/items_vr.dmi differ diff --git a/icons/obj/machines/gravity_generator.dmi b/icons/obj/machines/gravity_generator.dmi new file mode 100644 index 0000000000..865db6115a Binary files /dev/null and b/icons/obj/machines/gravity_generator.dmi differ diff --git a/icons/obj/machines/particle_accelerator_vr.dmi b/icons/obj/machines/particle_accelerator_vr.dmi new file mode 100644 index 0000000000..8aa97aadbb Binary files /dev/null and b/icons/obj/machines/particle_accelerator_vr.dmi differ diff --git a/icons/obj/machines/washing_machine_vr.dmi b/icons/obj/machines/washing_machine_vr.dmi new file mode 100644 index 0000000000..56dce3cc30 Binary files /dev/null and b/icons/obj/machines/washing_machine_vr.dmi differ diff --git a/icons/obj/mining_vr.dmi b/icons/obj/mining_vr.dmi index 070a2bf8da..249a2b66c8 100644 Binary files a/icons/obj/mining_vr.dmi and b/icons/obj/mining_vr.dmi differ diff --git a/icons/obj/munitions.dmi b/icons/obj/munitions.dmi new file mode 100644 index 0000000000..4631b35ba4 Binary files /dev/null and b/icons/obj/munitions.dmi differ diff --git a/icons/obj/objects_vr.dmi b/icons/obj/objects_vr.dmi index f0cf8c8a96..1160e025de 100644 Binary files a/icons/obj/objects_vr.dmi and b/icons/obj/objects_vr.dmi differ diff --git a/icons/obj/pointdefense.dmi b/icons/obj/pointdefense.dmi index c0d0e09ffc..847a4056b3 100644 Binary files a/icons/obj/pointdefense.dmi and b/icons/obj/pointdefense.dmi differ diff --git a/icons/obj/power_vr.dmi b/icons/obj/power_vr.dmi index 05a1cfa484..0e8cdd0195 100644 Binary files a/icons/obj/power_vr.dmi and b/icons/obj/power_vr.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 1b753e9c87..1a56a0be84 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/icons/obj/stacks_vr.dmi b/icons/obj/stacks_vr.dmi index f9c4e0b319..c9bbef15a5 100644 Binary files a/icons/obj/stacks_vr.dmi and b/icons/obj/stacks_vr.dmi differ diff --git a/icons/obj/stationobjs_vr.dmi b/icons/obj/stationobjs_vr.dmi index 88c49a5045..3438e97b9f 100644 Binary files a/icons/obj/stationobjs_vr.dmi and b/icons/obj/stationobjs_vr.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 6f318cff60..a68346608f 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/icons/obj/surgery_vr.dmi b/icons/obj/surgery_vr.dmi index 9b0f9b8aed..7984e374c8 100644 Binary files a/icons/obj/surgery_vr.dmi and b/icons/obj/surgery_vr.dmi differ diff --git a/icons/obj/tablesfancy_vr.dmi b/icons/obj/tablesfancy_vr.dmi new file mode 100644 index 0000000000..0f6c3c88c0 Binary files /dev/null and b/icons/obj/tablesfancy_vr.dmi differ diff --git a/icons/obj/teleporter_vr.dmi b/icons/obj/teleporter_vr.dmi new file mode 100644 index 0000000000..005def0f17 Binary files /dev/null and b/icons/obj/teleporter_vr.dmi differ diff --git a/icons/obj/tools_vr.dmi b/icons/obj/tools_vr.dmi index 72316467dd..53cf604156 100644 Binary files a/icons/obj/tools_vr.dmi and b/icons/obj/tools_vr.dmi differ diff --git a/icons/obj/toy_vr.dmi b/icons/obj/toy_vr.dmi new file mode 100644 index 0000000000..4b7d00de02 Binary files /dev/null and b/icons/obj/toy_vr.dmi differ diff --git a/icons/obj/turrets.dmi b/icons/obj/turrets.dmi index 3495683205..32346c5a5e 100644 Binary files a/icons/obj/turrets.dmi and b/icons/obj/turrets.dmi differ diff --git a/icons/obj/uav.dmi b/icons/obj/uav.dmi new file mode 100644 index 0000000000..daae9a03da Binary files /dev/null and b/icons/obj/uav.dmi differ diff --git a/icons/obj/vending_vr.dmi b/icons/obj/vending_vr.dmi index 2763874ed4..de81ca5efa 100644 Binary files a/icons/obj/vending_vr.dmi and b/icons/obj/vending_vr.dmi differ diff --git a/icons/obj/virology_vr.dmi b/icons/obj/virology_vr.dmi new file mode 100644 index 0000000000..224c4c9014 Binary files /dev/null and b/icons/obj/virology_vr.dmi differ diff --git a/icons/turf/catwalks.dmi b/icons/turf/catwalks.dmi index 9e3d3d977c..20c5e1f4d9 100644 Binary files a/icons/turf/catwalks.dmi and b/icons/turf/catwalks.dmi differ diff --git a/icons/turf/shuttle_parts64.dmi b/icons/turf/shuttle_parts64.dmi new file mode 100644 index 0000000000..8f0004bbb7 Binary files /dev/null and b/icons/turf/shuttle_parts64.dmi differ diff --git a/icons/turf/shuttle_parts96.dmi b/icons/turf/shuttle_parts96.dmi new file mode 100644 index 0000000000..0ba521e880 Binary files /dev/null and b/icons/turf/shuttle_parts96.dmi differ diff --git a/icons/turf/wall_masks_vr.dmi b/icons/turf/wall_masks_vr.dmi new file mode 100644 index 0000000000..1e767e6994 Binary files /dev/null and b/icons/turf/wall_masks_vr.dmi differ diff --git a/icons/vore/custom_clothes_vr.dmi b/icons/vore/custom_clothes_vr.dmi index c1a3bf5383..1abc46e4d4 100644 Binary files a/icons/vore/custom_clothes_vr.dmi and b/icons/vore/custom_clothes_vr.dmi differ diff --git a/icons/vore/custom_guns_vr.dmi b/icons/vore/custom_guns_vr.dmi index 2fa1627876..05c146446d 100644 Binary files a/icons/vore/custom_guns_vr.dmi and b/icons/vore/custom_guns_vr.dmi differ diff --git a/icons/vore/custom_items_vr.dmi b/icons/vore/custom_items_vr.dmi index c1ededb969..a16ebe46d9 100644 Binary files a/icons/vore/custom_items_vr.dmi and b/icons/vore/custom_items_vr.dmi differ diff --git a/maps/example/example-2.dmm b/maps/example/example-2.dmm index 79a40529e0..d911c24d25 100644 --- a/maps/example/example-2.dmm +++ b/maps/example/example-2.dmm @@ -24,7 +24,7 @@ "x" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{ icon_state = "pipe-t"; dir = 1},/turf/simulated/floor/tiled/dark,/area/aisat_interior) "y" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled/dark,/area/aisat_interior) "z" = (/obj/machinery/light_switch,/turf/simulated/wall,/area/aisat_interior) -"A" = (/obj/machinery/power/fractal_reactor,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/dark,/area/aisat_interior) +"A" = (/obj/machinery/power/debug_items/infinite_generator,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/dark,/area/aisat_interior) "B" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/aisat_interior) "C" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled/dark,/area/aisat_interior) "D" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/lime/diagonal,/turf/simulated/floor/tiled/dark,/area/aisat_interior) diff --git a/maps/southern_cross/items/encryptionkey_vr.dm b/maps/southern_cross/items/encryptionkey_vr.dm deleted file mode 100644 index fe1032c09b..0000000000 --- a/maps/southern_cross/items/encryptionkey_vr.dm +++ /dev/null @@ -1,9 +0,0 @@ -/obj/item/device/encryptionkey/pilot - icon_state = "cypherkey" - channels = list("Explorer" = 1) - -/obj/item/device/encryptionkey/explorer - channels = list("Science" = 1, "Explorer" = 1) - -/obj/item/device/encryptionkey/talon - channels = list("Talon" = 1) diff --git a/maps/southern_cross/items/headset_vr.dm b/maps/southern_cross/items/headset_vr.dm deleted file mode 100644 index 8b6f7b1e97..0000000000 --- a/maps/southern_cross/items/headset_vr.dm +++ /dev/null @@ -1,33 +0,0 @@ -/obj/item/device/radio/headset/pilot - desc = "A headset used by pilots, has access to the explorer channel." - -/obj/item/device/radio/headset/pilot/alt - desc = "A bowman headset used by pilots, has access to the explorer channel." - -/obj/item/device/radio/headset/explorer - desc = "Headset used by explorers for exploring. Access to explorer and science channels." - -/obj/item/device/radio/headset/explorer/alt - desc = "Bowman headset used by explorers for exploring. Access to explorer and science channels." - -/obj/item/device/radio/headset/sar - name = "fm radio headset" - desc = "A headset for field medics." - -/obj/item/device/radio/headset/sar/alt - name = "fm radio bowman headset" - desc = "A bowman headset for field medics." - -/obj/item/device/radio/headset/volunteer - name = "volunteer's headset" - desc = "A headset used by volunteers to expedition teams, has access to the exploration channel." - icon_state = "pilot_headset" - adhoc_fallback = TRUE - ks2type = /obj/item/device/encryptionkey/pilot - -/obj/item/device/radio/headset/talon - name = "talon headset" - desc = "A headset for communication between the crew of the ITV Talon." - adhoc_fallback = TRUE - icon_state = "pilot_headset" - ks2type = /obj/item/device/encryptionkey/talon diff --git a/maps/southern_cross/job/outfits_vr.dm b/maps/southern_cross/job/outfits_vr.dm deleted file mode 100644 index e2976fb10c..0000000000 --- a/maps/southern_cross/job/outfits_vr.dm +++ /dev/null @@ -1,21 +0,0 @@ -/decl/hierarchy/outfit/job/pathfinder - name = OUTFIT_JOB_NAME("Pathfinder") - shoes = /obj/item/clothing/shoes/boots/winter/explorer - uniform = /obj/item/clothing/under/explorer //TODO: Uniforms. - l_ear = /obj/item/device/radio/headset/explorer - id_slot = slot_wear_id - pda_slot = slot_l_store - pda_type = /obj/item/device/pda/pathfinder - id_type = /obj/item/weapon/card/id/explorer/head - id_pda_assignment = "Pathfinder" - flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL - backpack_contents = list(/obj/item/clothing/accessory/permit/gun/planetside = 1) - -/decl/hierarchy/outfit/job/pathfinder/post_equip(mob/living/carbon/human/H) - ..() - for(var/obj/item/clothing/accessory/permit/gun/planetside/permit in H.back.contents) - permit.set_name(H.real_name) - -/decl/hierarchy/outfit/job/assistant/explorer - id_type = /obj/item/weapon/card/id/explorer - flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL diff --git a/maps/southern_cross/southern_cross-7.dmm b/maps/southern_cross/southern_cross-7.dmm index a9bad44316..a16bd52e92 100644 --- a/maps/southern_cross/southern_cross-7.dmm +++ b/maps/southern_cross/southern_cross-7.dmm @@ -261,9 +261,9 @@ ahajajajajajajalboboboboboboboalajajajajajajahajajajajajajajajajajajajajajajajaj ahajajajajajajalboboboboboboboalajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacabaFaXbnbebebebnbEaFabacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ahajajajajajajalboboboboboboboalajajajajajajahajajajalalalalalalalalalalalalalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacabaFbvbwbxbybzbwbAaFabacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajahaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ahajajajajajajalboboboboboboboalajajajajajajahajajalalbBbBbBbBbBbBbBbBbBbBbBalajajajajajajahaaaaaaaaaaaaaaaaaaabacacacacacacacacabaFbCaFbDbDbDaFbCaFabacacacacacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaaaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajalalalalalalalalalajajajajajajahajajalbBbBbBbBbBcMbBbBbBbBbBbBalajajajajajajahaaaaaaaaaaaaaaaaaaabacacacacacacacacabababaFbCbCbCaFabababacacacacacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajalalalalalalalalalajajajajajajahajajalbBbBbBbBbBbBbBbBbBbBbBbBalajajajajajajahaaaaaaaaaaaaaaaaaaabacacacacacacacacabababaFbCbCbCaFabababacacacacacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ahajajajajajajajajajajajajajajajajajajajajajahajajalbBbBbBbBbBbBbBbBbBbBbBbBalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacacacabababababababacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ahajajajajajajajajajajajajajajajajajajajajajahajajalbBbBbBbBbBbBbBbBbBbBbBbBalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoapckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckapcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjapaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ahajajajajajajajajajajajajajajajajajajajajajahajajalbBbBbBbBbBcMbBbBbBbBbBbBalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoapckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckapcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjapaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ahajajajajajajajajajajajajajajajajajajajajajahajajalalbBbBbBbBbBbBbBbBbBbBbBalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoapckbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGckapcjbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHcjapaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ahajajajajajajajajajajajajajajajajajajajajajahajajajalalalalalalalalalalalalalajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoapckbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGckapcjbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHcjapaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ahajajajajajajajajajajajajajajajajajajajajajahajajajajajajajajajajajajajajajajajajajajajajahaaaaaaaaaaaaaaaaaaagacacacacacacacacacacacacacacacacacacacacacacacacacacacagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoapckbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGckapcjbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHcjapaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/southern_cross/southern_cross_events.dm b/maps/southern_cross/southern_cross_events.dm index ab7ac253f6..589f6cfabd 100644 --- a/maps/southern_cross/southern_cross_events.dm +++ b/maps/southern_cross/southern_cross_events.dm @@ -4,4 +4,20 @@ /area/bridge, /area/bridge_hallway, /area/crew_quarters/heads/sc/sd - ) \ No newline at end of file + ) + +// So is xenoflora isolation it seems. +/datum/event2/meta/prison_break/xenobio + irrelevant_areas = list( + /area/rnd/xenobiology/xenoflora, + /area/rnd/xenobiology/xenoflora_storage, + /area/rnd/xenobiology/xenoflora_isolation + ) + +/datum/event2/event/prison_break/xenobio + area_types_to_ignore = list( + /area/rnd/xenobiology/xenoflora, + /area/rnd/xenobiology/xenoflora_storage, + /area/rnd/xenobiology/xenoflora_isolation + ) + ignore_blast_doors = TRUE // Needed to avoid a breach. \ No newline at end of file diff --git a/maps/southern_cross/southern_cross_shuttles.dm b/maps/southern_cross/southern_cross_shuttles.dm index b0a3942427..2b4de0bffa 100644 --- a/maps/southern_cross/southern_cross_shuttles.dm +++ b/maps/southern_cross/southern_cross_shuttles.dm @@ -274,6 +274,7 @@ ESCAPE_POD(8) /obj/effect/shuttle_landmark/southern_cross/cryostorage_transit landmark_tag = "cryostorage_transit" + flags = SLANDMARK_FLAG_AUTOSET // Large Escape Pod 1 /datum/shuttle/autodock/ferry/escape_pod/large_escape_pod1 @@ -301,6 +302,7 @@ ESCAPE_POD(8) /obj/effect/shuttle_landmark/southern_cross/large_escape_pod1/transit landmark_tag = "large_escape_pod1_transit" + flags = SLANDMARK_FLAG_AUTOSET // Large Escape Pod 2 /datum/shuttle/autodock/ferry/escape_pod/large_escape_pod2 @@ -328,6 +330,7 @@ ESCAPE_POD(8) /obj/effect/shuttle_landmark/southern_cross/large_escape_pod2/transit landmark_tag = "large_escape_pod2_transit" + flags = SLANDMARK_FLAG_AUTOSET // Destination datums diff --git a/maps/submaps/shelters/shelter_1.dmm b/maps/submaps/shelters/shelter_1.dmm index 46e59b1eac..61d664e6a8 100644 --- a/maps/submaps/shelters/shelter_1.dmm +++ b/maps/submaps/shelters/shelter_1.dmm @@ -46,6 +46,10 @@ "i" = ( /obj/structure/bed/pod, /obj/item/weapon/bedsheet/mime, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, /turf/simulated/shuttle/floor/voidcraft, /area/survivalpod) "j" = ( diff --git a/maps/submaps/shelters/shelter_4.dmm b/maps/submaps/shelters/shelter_4.dmm index 63100ce286..bd438cb4c2 100644 --- a/maps/submaps/shelters/shelter_4.dmm +++ b/maps/submaps/shelters/shelter_4.dmm @@ -44,10 +44,11 @@ "h" = ( /obj/machinery/smartfridge/survival_pod, /obj/item/weapon/storage/firstaid/combat, -/obj/item/weapon/storage/firstaid/insiderepair, -/obj/item/weapon/storage/firstaid/adv, -/obj/item/weapon/storage/firstaid/adv, /obj/item/weapon/storage/firstaid/combat, +/obj/item/weapon/storage/firstaid/combat, +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/adv, /obj/item/weapon/storage/mre/menu10, /obj/item/weapon/storage/mre/menu10, /obj/item/weapon/storage/mre/menu10, @@ -82,8 +83,6 @@ /obj/item/device/fbp_backup_cell, /obj/item/device/fbp_backup_cell, /obj/item/device/fbp_backup_cell, -/obj/item/weapon/storage/firstaid/combat, -/obj/item/weapon/storage/firstaid/insiderepair, /obj/item/weapon/storage/pill_bottle/nutriment, /obj/item/weapon/storage/pill_bottle/iron, /obj/item/weapon/storage/pill_bottle/arithrazine, @@ -462,10 +461,10 @@ /obj/item/weapon/tank/oxygen, /obj/item/weapon/tank/oxygen, /obj/item/weapon/tank/oxygen, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/shoes/magboots, +/obj/item/clothing/shoes/magboots/adv, +/obj/item/clothing/shoes/magboots/adv, +/obj/item/clothing/shoes/magboots/adv, +/obj/item/clothing/shoes/magboots/adv, /obj/item/clothing/mask/breath, /obj/item/clothing/mask/breath, /obj/item/clothing/mask/breath, diff --git a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm index e44e5185f8..8d1de5b00c 100644 --- a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm +++ b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm @@ -1,18 +1,39 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/turf/template_noop,/area/submap/Cavelake) -"c" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Cavelake) -"d" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) -"e" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) -"f" = (/turf/simulated/floor/outdoors/rocks,/area/submap/Cavelake) -"g" = (/mob/living/simple_mob/animal/sif/hooligan_crab,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) -"h" = (/turf/simulated/floor/water,/area/submap/Cavelake) -"i" = (/mob/living/simple_mob/animal/passive/fish/perch,/turf/simulated/floor/water,/area/submap/Cavelake) -"j" = (/obj/machinery/crystal,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) -"k" = (/mob/living/simple_mob/animal/passive/fish/trout,/turf/simulated/floor/water,/area/submap/Cavelake) -"l" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) -"m" = (/obj/random/mob/sif,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) -"n" = (/obj/item/clothing/mask/snorkel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) -"o" = (/obj/effect/decal/remains/mouse,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"b" = (/turf/template_noop,/area/submap/CaveTrench) +"c" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/CaveTrench) +"d" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"e" = (/turf/simulated/floor/outdoors/rocks,/area/submap/CaveTrench) +"f" = (/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench) +"g" = (/obj/random/mob/robotic/drone,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"h" = (/mob/living/simple_mob/animal/passive/fish/trout{faction = "malf_drone"},/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench) +"i" = (/obj/effect/decal/remains/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"j" = (/turf/simulated/wall,/area/submap/CaveTrench) +"k" = (/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"l" = (/mob/living/simple_mob/animal/passive/fish/trout,/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench) +"m" = (/turf/simulated/wall/wood,/area/submap/CaveTrench) +"n" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lantern,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"o" = (/obj/structure/table/woodentable,/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"p" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"q" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"r" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"s" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "Rellek's telling me that we're in deep shit if the townies found out I'm cooking up drones out here. Like I give a fuck, We're minning our asses off only to dig into some bug nest to get our legs chewed. Well I'm not looking a gift horse in the mouth. Those drone dudes out in the wild hooked us up with these machines so long as they get some of the metal we dig up. Win win for us, Guess we're retiring early after all."; name = "Note"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"t" = (/obj/structure/table/steel,/obj/item/robot_parts/robot_component/actuator,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"u" = (/obj/effect/decal/cleanable/blood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"v" = (/obj/structure/simple_door/wood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"w" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"x" = (/obj/structure/table/steel,/obj/item/device/robotanalyzer,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"y" = (/obj/structure/table/steel,/obj/item/weapon/storage/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"z" = (/obj/structure/table/bench/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"A" = (/obj/effect/decal/remains,/obj/item/clothing/under/rank/miner,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"B" = (/turf/simulated/shuttle/plating,/area/submap/CaveTrench) +"C" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"D" = (/obj/structure/coatrack,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"E" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"F" = (/obj/item/weapon/storage/box/shotgunammo,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"G" = (/obj/structure/table/steel,/obj/item/robot_parts/l_leg,/obj/item/robot_parts/head,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"H" = (/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) +"I" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/shuttle/plating,/area/submap/CaveTrench) +"J" = (/obj/machinery/drone_fabricator{fabricator_tag = "Unknown"},/turf/simulated/shuttle/plating,/area/submap/CaveTrench) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -55,4 +76,4 @@ abbbbbbbcccccccccccbbbbbccbbbbbbbbbbbbba abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -"} \ No newline at end of file +"} diff --git a/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm b/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm index 9b19efeea7..adeb82580f 100644 --- a/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm +++ b/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm @@ -25,6 +25,7 @@ "ay" = (/obj/effect/decal/mecha_wreckage/gygax{anchored = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) "az" = (/obj/effect/gibspawner/generic,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) "aA" = (/obj/structure/closet/medical_wall,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle) +"aB" = (/obj/machinery/artifact/predefined/hungry_statue,/obj/structure/largecrate,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) "aC" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "aD" = (/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "aE" = (/obj/structure/extinguisher_cabinet,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle) @@ -90,7 +91,7 @@ "bM" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "bN" = (/obj/structure/toilet{dir = 8},/obj/effect/gibspawner/generic,/obj/effect/decal/remains/human,/obj/item/weapon/card/id/syndicate{age = "\\42"; blood_type = "\\O+"; desc = "A strange ID card."; dna_hash = "\[REDACTED]"; fingerprint_hash = "\\------"; name = "Aaron Presley's ID Card(Delivery Service) "; registered_name = "Aaron Presley"; sex = "\\Male"},/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) "bO" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/remains/human,/obj/item/weapon/flame/lighter/random,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -103,7 +104,7 @@ aaaYaaaRacaaadadaZapbIbybIazbbadaNacanbJaaaaaaaaaa aaaababdbeapapapadadadbIadadauadaNaAaeaTanaaaaataa acaaaaaaapadauadadadacacaSacanadavacbhaeaeahaaaaaa aPadaVaRacadadadbiadacbjafafacadadadbKbpaHaraaaaaa -aaaPadaaacaMadbkadbbacbvafbwacaLadaSbKbqaHaoapaaaa +aaaPadaaacaMadbkadbbacbvaBbwacaLadaSbKbqaHaoapaaaa aPbxaVaRacaWadbbadbbanblbLbzanadbbasaebraFaIaabfaa aPaPaaaaaaaabEazadadanacacacaEadadahaebpaHaoaaaiaa aPaPadaaaJapbIadadaPaPadadadadadadacaeaeaeahaaaaaa @@ -118,4 +119,3 @@ aaaaaaaaaaaaadaLaaaabmbMbObmbmaaaaaaaaaaaaaaaaaaaa aaaaadadaaaaaaacaPbCbmbmbmaaajaaaaaaaaaaaaaaaaaaaa aaaaaaadaaaaaaaPaPaaaaaabmaaaaaaaaaaaaaaaaaaaaaaaa "} - diff --git a/maps/submaps/surface_submaps/mountains/excavation1.dmm b/maps/submaps/surface_submaps/mountains/excavation1.dmm new file mode 100644 index 0000000000..169efe4eb5 --- /dev/null +++ b/maps/submaps/surface_submaps/mountains/excavation1.dmm @@ -0,0 +1,51 @@ +"a" = (/turf/simulated/mineral,/area/template_noop) +"b" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/template_noop) +"c" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) +"d" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 9},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) +"e" = (/obj/structure/cliff/automatic,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) +"f" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 5},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) +"g" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 9},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) +"h" = (/obj/random/outcrop,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"i" = (/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"j" = (/obj/structure/cliff/automatic/corner,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) +"k" = (/obj/mecha/working/ripley,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"l" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) +"m" = (/obj/structure/table/sifwoodentable,/obj/item/mecha_parts/mecha_equipment/tool/drill/bore,/obj/item/weapon/ore/marble,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"n" = (/obj/item/weapon/ore,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"o" = (/obj/structure/table/sifwoodentable,/obj/item/mecha_parts/mecha_equipment/hardpoint_actuator,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"p" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) +"q" = (/obj/structure/table/sifwoodentable,/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"r" = (/obj/structure/table/sifwoodentable,/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy/rigged,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"s" = (/obj/item/weapon/ore/marble,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"t" = (/obj/item/weapon/ore/gold,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"u" = (/obj/item/weapon/ore/diamond,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"v" = (/mob/living/simple_mob/mechanical/mining_drone,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"w" = (/obj/structure/table/sifwoodentable,/obj/item/weapon/pickaxe/jackhammer,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"x" = (/obj/structure/table/sifwoodentable,/obj/random/projectile/scrapped_grenadelauncher,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"y" = (/obj/structure/table/sifwoodentable,/obj/random/medical/pillbottle,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"z" = (/obj/structure/table/sifwoodentable,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"A" = (/obj/structure/table/sifwoodentable,/obj/item/weapon/mining_scanner,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"B" = (/obj/structure/table/sifwoodentable,/obj/random/cigarettes,/obj/random/tool/powermaint,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Excavation) +"C" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 10},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) +"D" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 2},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) +"E" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 10},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) +"F" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 6},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) +"G" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 6},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Excavation) + +(1,1,1) = {" +aabbbbbbbaa +accdeeefcca +bcdghhijfcb +bdghikihjfb +bliimnoiipb +blhiqirihpb +bliniisnhpb +blhtiuiiipb +bliviinvhpb +blhwinixipb +blhynitzhpb +bliAiniBhpb +bliisinihpb +aCDEniiFDGa +aabbbbbbbaa +"} diff --git a/maps/submaps/surface_submaps/mountains/mountains.dm b/maps/submaps/surface_submaps/mountains/mountains.dm index 62cb5c4a26..c6a7a2f684 100644 --- a/maps/submaps/surface_submaps/mountains/mountains.dm +++ b/maps/submaps/surface_submaps/mountains/mountains.dm @@ -38,6 +38,7 @@ #include "Geyser2.dmm" #include "Geyser3.dmm" #include "Cliff1.dmm" +#include "excavation1.dmm" #endif // The 'mountains' is the mining z-level, and has a lot of caves. @@ -254,8 +255,8 @@ /datum/map_template/surface/mountains/normal/crashed_ufo_frigate //VOREStation Edit name = "Crashed UFO Frigate" - desc = "A (formerly) flying saucer that is now embedded into the mountain, yet its combat protocols still seem to be running..." - mappath = 'maps/submaps/surface_submaps/mountains/crashed_ufo.dmm' + desc = "A (formerly) flying saucer that is now embedded into the mountain, yet the combat protocols still seem to be running..." + mappath = 'maps/submaps/surface_submaps/mountains/crashed_ufo_frigate.dmm' cost = 60 discard_prob = 50 @@ -340,3 +341,9 @@ mappath = 'maps/submaps/surface_submaps/mountains/CrashedMedShuttle1_vr.dmm' //VOREStation Edit cost = 20 fixed_orientation = TRUE + +/datum/map_template/surface/mountains/deep/excavation1 + name = "Excavation Site" + desc = "An abandoned mining site." + mappath = 'maps/submaps/surface_submaps/mountains/excavation1.dmm' + cost = 20 diff --git a/maps/submaps/surface_submaps/mountains/mountains_areas.dm b/maps/submaps/surface_submaps/mountains/mountains_areas.dm index 00700bd7db..a6968fac98 100644 --- a/maps/submaps/surface_submaps/mountains/mountains_areas.dm +++ b/maps/submaps/surface_submaps/mountains/mountains_areas.dm @@ -134,4 +134,8 @@ /area/submap/lava_trench/outpost name = "POI - Trench Outpost" requires_power = FALSE - icon_state = "submap2" \ No newline at end of file + icon_state = "submap2" + +/area/submap/Excavation + name = "POI - Excavation Site" + ambience = AMBIENCE_FOREBODING diff --git a/maps/submaps/surface_submaps/plains/BuriedTreasure.dmm b/maps/submaps/surface_submaps/plains/BuriedTreasure.dmm new file mode 100644 index 0000000000..0018404dca --- /dev/null +++ b/maps/submaps/surface_submaps/plains/BuriedTreasure.dmm @@ -0,0 +1,10 @@ +"a" = (/turf/template_noop,/area/submap/BuriedTreasure) +"b" = (/obj/structure/closet/grave,/obj/random/gun/random,/obj/random/contraband,/obj/random/cash,/obj/random/cigarettes,/obj/random/trash,/obj/random/junk,/obj/random/drinkbottle,/turf/template_noop,/area/submap/BuriedTreasure) + +(1,1,1) = {" +aaaaa +aaaaa +aabaa +aaaaa +aaaaa +"} diff --git a/maps/submaps/surface_submaps/plains/BuriedTreasure2.dmm b/maps/submaps/surface_submaps/plains/BuriedTreasure2.dmm new file mode 100644 index 0000000000..f10b287e69 --- /dev/null +++ b/maps/submaps/surface_submaps/plains/BuriedTreasure2.dmm @@ -0,0 +1,10 @@ +"a" = (/turf/template_noop,/area/submap/BuriedTreasure) +"b" = (/obj/structure/closet/grave,/obj/random/contraband,/obj/random/contraband,/obj/random/cash,/obj/random/cash,/obj/random/cash,/obj/random/cash,/obj/random/drinkbottle,/obj/random/mre,/obj/random/projectile/sec,/obj/item/clothing/under/explorer/armored,/turf/template_noop,/area/submap/BuriedTreasure) + +(1,1,1) = {" +aaaaa +aaaaa +aabaa +aaaaa +aaaaa +"} diff --git a/maps/submaps/surface_submaps/plains/BuriedTreasure3.dmm b/maps/submaps/surface_submaps/plains/BuriedTreasure3.dmm new file mode 100644 index 0000000000..fdc989871d --- /dev/null +++ b/maps/submaps/surface_submaps/plains/BuriedTreasure3.dmm @@ -0,0 +1,10 @@ +"a" = (/turf/template_noop,/area/submap/BuriedTreasure) +"b" = (/obj/structure/closet/grave,/obj/random/energy,/obj/random/drinkbottle,/obj/random/contraband,/obj/random/ammo,/obj/random/ammo,/obj/random/mre,/obj/random/tool/power,/obj/random/unidentified_medicine/fresh_medicine,/obj/random/unidentified_medicine/combat_medicine,/obj/random/medical/pillbottle,/obj/random/soap,/turf/template_noop,/area/submap/BuriedTreasure) + +(1,1,1) = {" +aaaaa +aaaaa +aabaa +aaaaa +aaaaa +"} diff --git a/maps/submaps/surface_submaps/plains/PlainsKururak.dmm b/maps/submaps/surface_submaps/plains/PlainsKururak.dmm new file mode 100644 index 0000000000..f3a43e4c91 --- /dev/null +++ b/maps/submaps/surface_submaps/plains/PlainsKururak.dmm @@ -0,0 +1,26 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/PlainsKururak) +"c" = (/obj/random/trash,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/PlainsKururak) +"d" = (/obj/random/firstaid,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/PlainsKururak) +"e" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/PlainsKururak) +"f" = (/obj/random/projectile/sec,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/PlainsKururak) +"g" = (/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/PlainsKururak) +"h" = (/mob/living/simple_mob/animal/sif/kururak,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/PlainsKururak) +"i" = (/obj/random/outcrop,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/PlainsKururak) +"j" = (/obj/random/contraband,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/PlainsKururak) +"k" = (/mob/living/simple_mob/animal/sif/diyaab,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/PlainsKururak) +"l" = (/obj/random/trash,/turf/template_noop,/area/submap/PlainsKururak) +"m" = (/turf/template_noop,/area/submap/PlainsKururak) + +(1,1,1) = {" +aaaaaaaaaa +abbbbbbbaa +bbbcdefbaa +bbgeehibba +bbieebbbba +bbbjebklma +abbbckkbba +aabbbbibba +aaaabbbbaa +aaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/plains/Thiefc.dmm b/maps/submaps/surface_submaps/plains/Thiefc.dmm index 57a27da7c5..f8b8327363 100644 --- a/maps/submaps/surface_submaps/plains/Thiefc.dmm +++ b/maps/submaps/surface_submaps/plains/Thiefc.dmm @@ -13,7 +13,7 @@ "m" = (/obj/structure/table/steel,/obj/item/weapon/paper{desc = "This is some bullshit. First chance we got to knick something that looks half decent turns out to be mostly junk. And now we're getting calls that the other stash we've got has got a spider problem. Fuck this, Between the shitty weather, The pissed of bugs, And now apparently some NT goon running around in the area there's hardly enough reason to stick around. I'm telling Carl I'm out tommorow."; name = "Note"},/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) "n" = (/obj/vehicle/train/trolley,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) "o" = (/obj/structure/closet/crate,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) -"p" = (/obj/structure/closet/crate,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/practiceshells,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) +"p" = (/obj/structure/closet/crate,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/practiceshells,/obj/random/projectile/scrapped_gun,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/submaps/surface_submaps/plains/plains.dm b/maps/submaps/surface_submaps/plains/plains.dm index 66d4329820..cf05e43223 100644 --- a/maps/submaps/surface_submaps/plains/plains.dm +++ b/maps/submaps/surface_submaps/plains/plains.dm @@ -28,10 +28,10 @@ #include "SupplyDrop2.dmm" #include "RationCache.dmm" #include "Oldhouse.dmm" -#include "house1_arealess.dmm" -#include "Peninsula.dmm" -#include "Rocky2.dmm" -#include "Shakden.dmm" +#include "PlainsKururak.dmm" +#include "BuriedTreasure.dmm" +#include "BuriedTreasure2.dmm" +#include "BuriedTreasure3.dmm" #endif @@ -219,3 +219,30 @@ desc = "A dumped chemical canister. Looks dangerous." mappath = 'maps/submaps/surface_submaps/plains/chemspill1_vr.dmm' //VOREStation Edit cost = 10 + +/datum/map_template/surface/plains/PlainsKururak + name = "Lone Kururak" + desc = "A lone Kururak's den." + mappath = 'maps/submaps/surface_submaps/plains/PlainsKururak.dmm' + cost = 10 + +/datum/map_template/surface/plains/BuriedTreasure1 + name = "Buried Treasure 1" + desc = "A hole in the ground, who knows what might be inside!" + mappath = 'maps/submaps/surface_submaps/plains/BuriedTreasure.dmm' + cost = 10 + template_group = "Shallow Grave" + +/datum/map_template/surface/plains/BuriedTreasure2 + name = "Buried Treasure 2" + desc = "A hole in the ground, who knows what might be inside!" + mappath = 'maps/submaps/surface_submaps/plains/BuriedTreasure2.dmm' + cost = 10 + template_group = "Shallow Grave" + +/datum/map_template/surface/plains/BuriedTreasure3 + name = "Buried Treasure 3" + desc = "A hole in the ground, who knows what might be inside!" + mappath = 'maps/submaps/surface_submaps/plains/BuriedTreasure3.dmm' + cost = 10 + template_group = "Shallow Grave" diff --git a/maps/submaps/surface_submaps/plains/plains_areas.dm b/maps/submaps/surface_submaps/plains/plains_areas.dm index f6e6d9677c..5889576757 100644 --- a/maps/submaps/surface_submaps/plains/plains_areas.dm +++ b/maps/submaps/surface_submaps/plains/plains_areas.dm @@ -61,6 +61,9 @@ /area/submap/Smol3 name = "POI - Merchant's Stand" +/area/submap/PlainsKururak + name = "POI - Lone Kururak" + /area/submap/PooledR name = "POI - Pooled Rocks" ambience = AMBIENCE_SIF @@ -103,3 +106,7 @@ /area/submap/ChemSpill1 name = "POI - Ruptured Canister" ambience = AMBIENCE_TECH_RUINS + +/area/submap/BuriedTreasure + name = "POI - Buried Treasure" + ambience = AMBIENCE_FOREBODING diff --git a/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm b/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm index 7bf4c4d921..426c4c67bf 100644 --- a/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm +++ b/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm @@ -5,7 +5,7 @@ "ae" = (/obj/effect/decal/cleanable/blood,/turf/template_noop,/area/submap/Blackshuttledown) "af" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Blackshuttledown) "ag" = (/obj/structure/table/steel,/turf/template_noop,/area/submap/Blackshuttledown) -"ah" = (/mob/living/simple_mob/humanoid/merc/ranged/smg/poi,/turf/template_noop,/area/submap/Blackshuttledown) +"ah" = (/obj/random/mob/merc/all,/turf/template_noop,/area/submap/Blackshuttledown) "ai" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) "aj" = (/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) "ak" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark10"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) @@ -63,16 +63,16 @@ "bk" = (/obj/structure/table/steel,/obj/item/weapon/material/knife,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) "bl" = (/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) "bm" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bn" = (/mob/living/simple_mob/humanoid/merc/ranged/smg/poi,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bn" = (/obj/random/mob/merc/all,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) "bo" = (/obj/structure/table/steel,/obj/random/toolbox,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) -"bp" = (/obj/structure/table/steel,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bp" = (/obj/structure/table/steel,/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/random/projectile/scrapped_gun,/obj/random/projectile/scrapped_gun,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) "bq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown) "br" = (/obj/structure/table/steel,/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) "bs" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) "bt" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) "bu" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) "bv" = (/obj/structure/table/steel,/obj/random/projectile,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) -"bw" = (/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bw" = (/obj/machinery/fusion_fuel_compressor,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) "bx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/submap/Blackshuttledown) "by" = (/obj/machinery/door/airlock/glass,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) "bz" = (/obj/effect/floor_decal/corner/grey,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) @@ -86,7 +86,7 @@ "bH" = (/obj/machinery/power/apc{dir = 8; name = "BSD APC"; pixel_x = -24},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) "bI" = (/mob/living/simple_mob/humanoid/merc/melee/sword/poi,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) "bJ" = (/obj/machinery/computer/area_atmos,/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) -"bK" = (/mob/living/simple_mob/humanoid/merc/ranged/laser/poi,/turf/template_noop,/area/submap/Blackshuttledown) +"bK" = (/obj/machinery/fusion_fuel_injector/mapped{icon_state = "injector0"; dir = 4},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) "bL" = (/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) "bM" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) "bN" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "We need to take a short stop. The engine's are in need of minor repairs due to turbulence, should be a week's time. We've got reserve food supplies but pleanty of locale fauna to subsist on too if need be. PCRC is keeping most of there assets near New Reykjavik and locale authorities are more mindful then most to travel in this kind of weather. Our outfit should be at the rendezvous point in less then ten days assuming the upper ecehelon hasn't dropped ties with us yet."; name = "Operation Progress/M-53"},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) @@ -130,17 +130,17 @@ aaabababababababababababababadadabababafabababafababaeababadadabababaa aaababafabadadadababababafababababababababababababababababadadabababaa aaabababababadadadabacababababagagagagagagabababababacabafabadabababaa aaababababababadadabafababababagahabababagabababababababababababababaa -aaabababababababaiajajajakababagabababbKagabababafaiajajajajakabababaa +aaabababababababaiajajajakababagabababahagabababafaiajajajajakabababaa aaabababababababajajajajajajajajajababajajajajajajajajajajajalamababaa aaababababafababajajajajajajanaoajapapajaqarasatauajajajajajalamababaa aaabababababababavajajawaxajayazajaAaAajaBaCaDaEaEaEaFajajaGababababaa aaabababababababaHajajaIaJajayaKaLaLaMajaBaNaNaEaOaDaPajaGabababababaa aaabafababababaHajaQajawaRajayaSaTaTaUajaVaWaEaXaYaZbaajababababafabaa aaabababababaHajbbbcajbdajajayazajajajajajajbeajajajajajbfabababababaa -aaabababababajbgbhazajbiaLaLbhazajbjbkblbmblbnblajbobobpajbfababababaa +aaabababababajbgbhazajbiaLaLbhazajbjbkblbmbnblblajbobobpajbfababababaa aaabababababbqbrblazajbsblblblbtajblblbububublblajbvblblbwalamabababaa -aaabababababbxbrblaKbybhblbzblblbAblblbBbCbCblblbDblblblbwalamabababaa -aaabababababbxbrblaSbEbFblblblblbAblblbCbCbCblblbDblblblbwalamabababaa +aaabababababbxbrblaKbybhblbzblblbAblblbBbCbCblblbDblblblbKalamabababaa +aaabababababbxbrblaSbEbFblblblblbAblblbCbCbCblblbDblblblbKalamabababaa aaabababababbGbrblazajbsblblblbtajblblbububublblajbHblblbIalamabababaa aaabababababajbJbFcsajbLaTaTbFbMajbNbOblbPbnblblajbQbRbSajaGababababaa aaabababababavajbTbUajbdajajayazajajajajajajbAajajajajajaGabababababaa @@ -149,7 +149,7 @@ aaabafabababababavajajcbccajayaSaTaTcdajceblbYblbYajcfajbfabafabababaa aaabababababababaHajajcgchajaycrajaAaAajbYblbYblbYajciajajbfababababaa aaabababababababajajajajajajcjckajapapajbYclcmcncoajajajajalamabababaa aaabababababababajajajajajajajajajababajajajajajajajajajajalamabababaa -aaababafababababcpajajajcqababagbKabababagabababcpajajajajcqababababaa +aaababafababababcpajajajcqababagahabababagabababcpajajajajcqababababaa aaabababadabababababafababababagabababahagababafabafabababadadadababaa aaababadadabacababababafabababagagagagagagababababacababadadadadababaa aaabadadadabababababababaeababababababababababadadabababadadadadababaa diff --git a/maps/submaps/surface_submaps/wilderness/Chapel.dmm b/maps/submaps/surface_submaps/wilderness/Chapel.dmm index 02560d6ea8..a681497ed8 100644 --- a/maps/submaps/surface_submaps/wilderness/Chapel.dmm +++ b/maps/submaps/surface_submaps/wilderness/Chapel.dmm @@ -48,7 +48,7 @@ "aV" = (/obj/item/weapon/flame/candle/candelabra,/obj/structure/table/sifwoodentable,/turf/simulated/floor/wood/sif/broken,/area/submap/Chapel1) "aW" = (/obj/structure/table/sifwoodentable,/obj/item/weapon/flame/candle/candelabra,/turf/simulated/floor/wood/sif,/area/submap/Chapel1) "aX" = (/obj/structure/table/sifwoodentable,/obj/item/glass_jar,/turf/simulated/floor/wood/sif,/area/submap/Chapel1) -"aY" = (/obj/structure/closet/coffin,/obj/random/maintenance/cargo,/obj/effect/decal/remains/human,/turf/simulated/floor/wood/sif,/area/submap/Chapel1) +"aY" = (/obj/structure/closet/coffin,/obj/random/maintenance/cargo,/obj/effect/decal/remains/human,/obj/random/projectile/scrapped_gun,/turf/simulated/floor/wood/sif,/area/submap/Chapel1) "aZ" = (/obj/structure/simple_door/sifwood,/turf/simulated/floor/wood/sif,/area/submap/Chapel1) "ba" = (/obj/structure/bed/padded,/turf/simulated/floor/wood/sif,/area/submap/Chapel1) "bb" = (/obj/structure/closet/coffin,/obj/random/cash,/obj/effect/decal/remains/xeno,/turf/simulated/floor/wood/sif,/area/submap/Chapel1) diff --git a/maps/submaps/surface_submaps/wilderness/DoomP.dmm b/maps/submaps/surface_submaps/wilderness/DoomP.dmm index b856b7a229..08c32f5710 100644 --- a/maps/submaps/surface_submaps/wilderness/DoomP.dmm +++ b/maps/submaps/surface_submaps/wilderness/DoomP.dmm @@ -16,7 +16,7 @@ "ap" = (/obj/effect/decal/remains/mouse,/obj/random/landmine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) "aq" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) "ar" = (/obj/machinery/light/small,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) -"as" = (/obj/machinery/porta_turret/poi,/turf/simulated/floor/plating,/area/submap/DoomP) +"as" = (/obj/machinery/porta_turret/poi{faction = "syndicate"},/turf/simulated/floor/plating,/area/submap/DoomP) "at" = (/turf/simulated/wall/r_wall,/area/submap/DoomP) "au" = (/obj/structure/sign/warning/secure_area,/turf/simulated/wall/r_wall,/area/submap/DoomP) "av" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/submap/DoomP) @@ -24,7 +24,7 @@ "ax" = (/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled,/area/submap/DoomP) "ay" = (/obj/structure/bed/chair,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) "az" = (/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) -"aA" = (/obj/effect/floor_decal/borderfloor{dir = 1},/mob/living/simple_mob/humanoid/merc/ranged/smg/poi,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aA" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/random/mob/merc/all,/turf/simulated/floor/tiled,/area/submap/DoomP) "aB" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) "aC" = (/obj/machinery/vending/cigarette,/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled,/area/submap/DoomP) "aD" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/DoomP) @@ -38,7 +38,7 @@ "aL" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/DoomP) "aM" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled,/area/submap/DoomP) "aN" = (/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/DoomP) -"aO" = (/obj/structure/table/standard,/obj/item/pizzabox,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aO" = (/obj/structure/table/standard,/obj/random/pizzabox,/turf/simulated/floor/tiled,/area/submap/DoomP) "aP" = (/turf/simulated/floor/tiled,/area/submap/DoomP) "aQ" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled,/area/submap/DoomP) "aR" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP) @@ -56,7 +56,7 @@ "bd" = (/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled,/area/submap/DoomP) "be" = (/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/DoomP) "bf" = (/obj/machinery/light/small,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/DoomP) -"bg" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/mob/living/simple_mob/humanoid/merc/ranged/laser/poi,/turf/simulated/floor/tiled,/area/submap/DoomP) +"bg" = (/obj/structure/table/standard,/obj/random/firstaid,/turf/simulated/floor/tiled,/area/submap/DoomP) "bh" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/tiled,/area/submap/DoomP) "bi" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) "bj" = (/obj/machinery/door/airlock/highsecurity,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) @@ -73,7 +73,7 @@ "bu" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/lime{dir = 5},/turf/simulated/floor/tiled/white,/area/submap/DoomP) "bv" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/effect/floor_decal/corner/lime{dir = 5},/turf/simulated/floor/tiled/white,/area/submap/DoomP) "bw" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/obj/effect/floor_decal/corner/lime{dir = 5},/turf/simulated/floor/tiled/white,/area/submap/DoomP) -"bx" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/obj/effect/floor_decal/corner/lime{dir = 1},/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bx" = (/obj/effect/floor_decal/borderfloor,/obj/random/mob/merc/all,/turf/simulated/floor/tiled,/area/submap/DoomP) "by" = (/turf/simulated/floor/tiled/white,/area/submap/DoomP) "bz" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/white,/area/submap/DoomP) "bA" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/white,/area/submap/DoomP) @@ -88,6 +88,11 @@ "bJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP) "bK" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) "bL" = (/mob/living/simple_mob/humanoid/merc/melee/sword/poi,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) +"bM" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/turf/simulated/floor/tiled,/area/submap/DoomP) +"bN" = (/mob/living/bot/cleanbot{faction = "syndicate"; name = "Fitz"},/turf/simulated/floor/tiled,/area/submap/DoomP) +"bO" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/obj/effect/floor_decal/corner/lime{dir = 1},/obj/random/soap,/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bP" = (/obj/random/junk,/turf/simulated/floor/outdoors/rocks,/area/submap/DoomP) +"bQ" = (/obj/random/junk,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -121,15 +126,15 @@ aaabababacafafafafafafafakakakakakafafafacadadasadadasadatauavavavauatadasadadas aaabababacafafafafafafafakakakakakakafafacatatatatatatatatatatawatatatatatatatatatatatafafafafafakakakakafafafafacacabaa aaabababacacafafafafafafakakakakakakafafacataxayaAayaBayazaCataDataEaFaFaFaGaHaIaJaKatafafafafafakakakakafafafafacacabaa aaabababacacacafafafafakakakakakakakafasaLataMaNaOaNaNaNaPaQataPataRaSaSaSaTaUaVaWaVataXasafafafakakakafafafafafafacabaa -aaabababababacacafafafakakakakakakakafafafataYaNaNaNaNaNaPaZatbaatatatatatatbbbcatatatafafafafafakakakafafafafafafacabaa -aaababababababacafafafakakakakakakakakafafatbdbebebfbebebgaPbhaPaPbiaPaPaPaPaPbiaPaPatafafafafafakakakafafafafafafafacaa +aaabababababacacafafafakakakakakakakafafafataYaNaNaNbgaNaPaZatbaatatatatatatbbbcatatatafafafafafakakakafafafafafafacabaa +aaababababababacafafafakakakakakakakakafafatbdbebebfbebxbMaPbhaPbNbiaPaPaPaPaPbiaPaPatafafafafafakakakafafafafafafafacaa aaabababagabababacafafakakakakakakakakasaXatbjatatatatatatatatatatatatatatbkatatatatataXasafafafakakakafafafafafafafacaa -aaababababababacacafafafakakakakakakakakafatblbmbnbobpbqbrbsatbtbubvbwbvbxbybkbzbkbAatafafafafafakakakafafafafafafafacaa +aaababababababacacafafafakakakakakakakakafatblbmbnbobpbqbrbsatbtbubvbwbvbObybkbzbkbAatafafafafafakakakafafafafafafafacaa aaababababababacafafafafakakakakakakakakafatblblbBblbLbBblblatbCbDbDbDbDbDbEatbFatbGatafafafafakakakakakafafafafafafacaa aaababababababacafafafafakakakakakakakakakatatatatatatatatatatatatbHbIbIbIbJatatatatatafafafafakakakakafafafafafafafacaa -aaabababababacacafafafakakakakakakakakakakafafafafaLacacadadadadbKadadadadadbKacacafafafafafafakakakakafafafafafafafacaa +aaabababababacacafafafakakakakakakakakakakafafafafaLacbPadadadadbKadadadadadbKacbPafafafafafafakakakakafafafafafafafacaa aaabababababacafafafafakakakakakakakakakakakakafafasafacacacacacasadadadadadasacafafafafafafakakakakakafafafafafafacacaa -aaababababacacafafafafakakakakakakakakakakakakakafafafafafafafacacadadadadadacacafafafafafakakakakakakafafafafafafacabaa +aaababababacacafafafafakakakakakakakakakakakakakafafafafafafafacacadbQadadadacacafafafafafakakakakakakafafafafafafacabaa aaababababacafafafafafafakakakakakakakakakakakakafafafafafafafafacacacacacacacafafafafafafafakakakakakafafafafafacacabaa aaabababacacafafafafafafakakakakakakakakakakakakakafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafacababaa aaabababacacafafafafafakakakakakakakakakakakakakakafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafacababaa diff --git a/maps/submaps/surface_submaps/wilderness/Drugden.dmm b/maps/submaps/surface_submaps/wilderness/Drugden.dmm index 3d8f3257a3..12d8173eaf 100644 --- a/maps/submaps/surface_submaps/wilderness/Drugden.dmm +++ b/maps/submaps/surface_submaps/wilderness/Drugden.dmm @@ -45,6 +45,8 @@ "S" = (/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Drugd) "T" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/carpet,/area/submap/Drugd) "U" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/syringe/drugs,/turf/simulated/floor/carpet,/area/submap/Drugd) +"V" = (/obj/structure/closet/cabinet,/obj/random/projectile/scrapped_gun,/obj/random/toy,/turf/simulated/floor/carpet,/area/submap/Drugd) +"W" = (/obj/structure/closet/cabinet,/obj/random/mre,/obj/random/medical/lite,/turf/simulated/floor/carpet,/area/submap/Drugd) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaa @@ -64,9 +66,9 @@ abcccccccccdllldvwxydccba acccccddddddzlgmoooAdccba acccccdBCDEdllfdFGHIdccba acccccdJKgLdlfMddddddccba -abccccdNllOdhlgdqPwwdccca +abccccdNllOdhlgdVPwwdccca abbcccdlQllelllmoooodccca -abbcccdRlSldllhdqTUndccca +abbcccdRlSldllhdWTUndccca abbcccddddddludddddddccca abbccccccccccccccccccccba abbbcccccccccccccccccccba diff --git a/maps/submaps/surface_submaps/wilderness/FrostflyNest.dmm b/maps/submaps/surface_submaps/wilderness/FrostflyNest.dmm new file mode 100644 index 0000000000..ccb107a33f --- /dev/null +++ b/maps/submaps/surface_submaps/wilderness/FrostflyNest.dmm @@ -0,0 +1,25 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/mineral/ignore_mapgen/sif,/area/submap/FrostflyNest) +"c" = (/obj/structure/boulder,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/submap/FrostflyNest) +"d" = (/turf/simulated/wall/solidrock,/area/submap/FrostflyNest) +"e" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/submap/FrostflyNest) +"f" = (/obj/structure/outcrop/diamond,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/submap/FrostflyNest) +"g" = (/obj/random/humanoidremains,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/submap/FrostflyNest) +"h" = (/obj/structure/prop/nest{color = "#041164"; creature_types = list(/mob/living/simple_mob/animal/sif/frostfly); name = "frostfly den"; spawn_delay = 300},/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/submap/FrostflyNest) +"i" = (/obj/random/medical/lite,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/submap/FrostflyNest) +"j" = (/obj/random/humanoidremains,/obj/random/gun/random,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/submap/FrostflyNest) +"k" = (/obj/random/medical/pillbottle,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/submap/FrostflyNest) +"l" = (/obj/random/gun/random,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/submap/FrostflyNest) + +(1,1,1) = {" +aabbbcbbaa +abbddedbba +bbddfgddbb +bddhieiddb +bdfjefefdb +bdkeegeddb +ceefefldbb +bdddgdddba +bbbdddbbba +abbbbbbaaa +"} diff --git a/maps/submaps/surface_submaps/wilderness/Shack1.dmm b/maps/submaps/surface_submaps/wilderness/Shack1.dmm index cc70345858..604b970b92 100644 --- a/maps/submaps/surface_submaps/wilderness/Shack1.dmm +++ b/maps/submaps/surface_submaps/wilderness/Shack1.dmm @@ -2,21 +2,21 @@ "b" = (/turf/simulated/wall/log_sif,/area/submap/Shack1) "c" = (/turf/template_noop,/area/submap/Shack1) "d" = (/turf/simulated/floor/outdoors/dirt,/area/submap/Shack1) -"e" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/wood{ icon_state = "wood_broken1"},/area/submap/Shack1) +"e" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken1"},/area/submap/Shack1) "f" = (/obj/structure/table/wooden_reinforced,/obj/item/weapon/storage/fancy/candle_box,/obj/item/weapon/storage/box/matches,/turf/simulated/floor/wood,/area/submap/Shack1) -"g" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/storage/apron/overalls,/obj/item/clothing/under/overalls,/turf/simulated/floor/wood,/area/submap/Shack1) +"g" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/storage/apron/overalls,/obj/item/clothing/under/overalls,/obj/random/mre,/turf/simulated/floor/wood,/area/submap/Shack1) "h" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/submap/Shack1) "i" = (/turf/simulated/floor/wood,/area/submap/Shack1) -"j" = (/turf/simulated/floor/holofloor/wood{ icon_state = "wood_broken0"},/area/submap/Shack1) -"k" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/wood{ icon_state = "wood_broken5"},/area/submap/Shack1) +"j" = (/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken0"},/area/submap/Shack1) +"k" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken5"},/area/submap/Shack1) "l" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Shack1) "m" = (/obj/structure/simple_door/wood,/turf/simulated/floor/wood,/area/submap/Shack1) -"n" = (/turf/simulated/floor/holofloor/wood{ icon_state = "wood_broken3"},/area/submap/Shack1) +"n" = (/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken3"},/area/submap/Shack1) "o" = (/obj/structure/table/bench/wooden,/turf/simulated/floor/wood,/area/submap/Shack1) "p" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/wooden_reinforced,/obj/item/weapon/storage/toolbox,/turf/simulated/floor/wood,/area/submap/Shack1) "q" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/wooden_reinforced,/obj/item/weapon/material/twohanded/fireaxe/scythe,/turf/simulated/floor/wood,/area/submap/Shack1) "r" = (/obj/effect/decal/cleanable/spiderling_remains,/turf/simulated/floor/wood,/area/submap/Shack1) -"s" = (/turf/simulated/floor/holofloor/wood{ icon_state = "wood_broken6"},/area/submap/Shack1) +"s" = (/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken6"},/area/submap/Shack1) "t" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/wooden_reinforced,/obj/item/device/flashlight/lamp,/turf/simulated/floor/wood,/area/submap/Shack1) "u" = (/obj/structure/flora/tree/dead,/turf/template_noop,/area/submap/Shack1) diff --git a/maps/submaps/surface_submaps/wilderness/Shelter.dmm b/maps/submaps/surface_submaps/wilderness/Shelter.dmm index e041c8a549..3b985d359b 100644 --- a/maps/submaps/surface_submaps/wilderness/Shelter.dmm +++ b/maps/submaps/surface_submaps/wilderness/Shelter.dmm @@ -9,7 +9,7 @@ "i" = (/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Shelter1) "j" = (/obj/structure/bonfire/sifwood,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Shelter1) "k" = (/obj/random/mob/robotic,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Shelter1) -"l" = (/obj/structure/bed/roller/adv,/obj/random/humanoidremains,/obj/random/cash,/obj/random/cigarettes,/obj/item/clothing/under/explorer,/obj/item/clothing/shoes/boots/winter/explorer,/obj/item/clothing/mask/gas/explorer,/obj/item/clothing/accessory/permit/gun/planetside,/obj/item/clothing/suit/armor/pcarrier/light/nt,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Shelter1) +"l" = (/obj/structure/bed/roller/adv,/obj/random/humanoidremains,/obj/random/cash,/obj/random/cigarettes,/obj/item/clothing/under/explorer,/obj/item/clothing/shoes/boots/winter/explorer,/obj/item/clothing/mask/gas/explorer,/obj/item/clothing/accessory/permit/gun/planetside,/obj/item/clothing/suit/armor/pcarrier/light/nt,/obj/random/projectile/scrapped_smg,/obj/random/projectile/scrapped_pistol,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Shelter1) "m" = (/obj/random/medical/lite,/obj/random/technology_scanner,/obj/random/toolbox,/obj/random/trash,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/Shelter1) "n" = (/obj/structure/fence/corner{icon_state = "corner"; dir = 1},/turf/simulated/floor/outdoors/snow,/area/submap/Shelter1) "o" = (/obj/structure/fence/door/locked{icon_state = "door_closed"; dir = 1},/turf/simulated/floor/outdoors/snow,/area/submap/Shelter1) diff --git a/maps/submaps/surface_submaps/wilderness/kururakden.dmm b/maps/submaps/surface_submaps/wilderness/kururakden.dmm new file mode 100644 index 0000000000..630c58204d --- /dev/null +++ b/maps/submaps/surface_submaps/wilderness/kururakden.dmm @@ -0,0 +1,23 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/KururakDen) +"c" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/KururakDen) +"d" = (/obj/random/mob/sif/kururak,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/KururakDen) +"e" = (/mob/living/simple_mob/animal/sif/kururak/leader,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/KururakDen) +"f" = (/obj/random/outcrop,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/KururakDen) +"g" = (/obj/random/junk,/obj/random/medical/pillbottle,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/KururakDen) +"h" = (/obj/random/junk,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/KururakDen) +"i" = (/obj/random/powercell,/obj/random/unidentified_medicine/old_medicine,/obj/random/trash,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/KururakDen) +"j" = (/obj/random/humanoidremains,/obj/random/coin,/obj/random/contraband,/obj/random/projectile/random,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/KururakDen) + +(1,1,1) = {" +aaaaaaaaaa +aaaaabbaaa +aaabbbbbaa +aabbbfbbaa +aacbgdccaa +abhdccibaa +abfcefbbaa +abbdjbbaaa +abbbbbbaaa +aaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/wilderness/wilderness.dm b/maps/submaps/surface_submaps/wilderness/wilderness.dm index 0153f9b1a9..5cf62e07ff 100644 --- a/maps/submaps/surface_submaps/wilderness/wilderness.dm +++ b/maps/submaps/surface_submaps/wilderness/wilderness.dm @@ -22,6 +22,7 @@ #include "Rockybase.dmm" #include "MHR.dmm" #include "GovPatrol.dmm" +#include "kururakden.dmm" #include "DecoupledEngine.dmm" #include "DoomP.dmm" #include "CaveS.dmm" @@ -203,6 +204,12 @@ mappath = 'maps/submaps/surface_submaps/wilderness/GovPatrol.dmm' cost = 5 +/datum/map_template/surface/wilderness/normal/KururakDen + name = "Kururak Den" + desc = "The den of a Kururak pack. May contain hibernating members." + mappath = 'maps/submaps/surface_submaps/wilderness/kururakden.dmm' + cost = 5 + /datum/map_template/surface/wilderness/normal/DecoupledEngine name = "Decoupled Engine" desc = "A damaged fission engine jettisoned from a starship long ago." @@ -273,4 +280,10 @@ name = "Acrid Lake" desc = "A pool of water contaminated with highly dangerous chemicals." mappath = 'maps/submaps/surface_submaps/wilderness/chemspill2.dmm' - cost = 10 \ No newline at end of file + cost = 10 + +/datum/map_template/surface/wilderness/normal/FrostflyNest + name = "Frostfly Nest" + desc = "The nest of a Frostfly, or more." + mappath = 'maps/submaps/surface_submaps/wilderness/FrostflyNest.dmm' + cost = 20 diff --git a/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm b/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm index 185ddd433f..4f41a473f8 100644 --- a/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm +++ b/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm @@ -95,6 +95,10 @@ name = "POI - Lost Government Patrol" ambience = AMBIENCE_GHOSTLY +/area/submap/KururakDen + name = "POI - Kururak Den" + ambience = AMBIENCE_SIF + /area/submap/DecoupledEngine name = "POI - Decoupled Engine" ambience = AMBIENCE_FOREBODING @@ -138,3 +142,7 @@ /area/submap/ChemSpill2 name = "POI - Acrid Lake" ambience = AMBIENCE_FOREBODING + +/area/submap/FrostflyNest + name = "POI - Frostfly Nest" + ambience = AMBIENCE_SIF diff --git a/maps/tether/submaps/_tether_submaps.dm b/maps/tether/submaps/_tether_submaps.dm index 1d15248ad2..edff735d99 100644 --- a/maps/tether/submaps/_tether_submaps.dm +++ b/maps/tether/submaps/_tether_submaps.dm @@ -264,14 +264,6 @@ desc = "Approach and perform a scan to obtain further information." icon_state = "object" //or "globe" for planetary stuff known = FALSE - //initial_generic_waypoints = list("don't forget waypoints!") - var/true_name = "The scanned name goes here" - var/true_desc = "The scanned desc goes here" - -/obj/effect/overmap/visitable/sector/tether_gateway/get_scan_data(mob/user) - name = true_name - desc = true_desc - return ..() /datum/map_template/tether_lateload/gateway name = "Gateway Submap" @@ -503,6 +495,12 @@ #include "om_ships/generic_shuttle.dm" #include "om_ships/mercenarybase.dm" #include "om_ships/mercship.dm" +#include "om_ships/curashuttle.dm" + +////////////////////////////////////////////////////////////////////////////// +//Capsule deployed ships +#include "om_ships/shelter_5.dm" +#include "om_ships/shelter_6.dm" ////////////////////////////////////////////////////////////////////////////// //Offmap Spawn Locations diff --git a/maps/tether/submaps/admin_use/fun.dm b/maps/tether/submaps/admin_use/fun.dm index 090db293a4..190d982d31 100644 --- a/maps/tether/submaps/admin_use/fun.dm +++ b/maps/tether/submaps/admin_use/fun.dm @@ -70,4 +70,107 @@ dynamic_lighting = 1 power_equip = FALSE power_environ = FALSE - power_light = FALSE \ No newline at end of file + power_light = FALSE + +/area/submap/admin_upload/AU7 + name = "\improper Unknown Area F" + requires_power = 1 + dynamic_lighting = 1 + power_equip = FALSE + power_environ = FALSE + power_light = FALSE + +/area/submap/admin_upload/AU8 + name = "\improper Unknown Area G" + requires_power = 1 + dynamic_lighting = 1 + power_equip = FALSE + power_environ = FALSE + power_light = FALSE + +/area/submap/admin_upload/AU9 + name = "\improper Unknown Area H" + requires_power = 1 + dynamic_lighting = 1 + power_equip = FALSE + power_environ = FALSE + power_light = FALSE + +/area/submap/admin_upload/AU10 + name = "\improper Unknown Area I" + requires_power = 1 + dynamic_lighting = 1 + power_equip = FALSE + power_environ = FALSE + power_light = FALSE + +/area/submap/admin_upload/AU11 + name = "\improper Unknown Area J" + requires_power = 1 + dynamic_lighting = 1 + power_equip = FALSE + power_environ = FALSE + power_light = FALSE + +/area/submap/admin_upload/AU12 + name = "\improper Unknown Area K" + requires_power = 1 + dynamic_lighting = 1 + power_equip = FALSE + power_environ = FALSE + power_light = FALSE + +// Adminbuse things for overmap sectors + +// This is a stationary overmap sector, you can spawn it in any zlevel and it will pop onto the overmap to represent those zlevels. It always moves to 2,2 on the overmap and you can move it elsewhere. +/obj/effect/overmap/visitable/admin_use + name = "space destination" + desc = "Some space destination!" + scanner_name = "REPLACE ME" + scanner_desc = @{"[i]Registration[/i]: REPLACE ME +[i]Class[/i]: REPLACE ME +[i]Transponder[/i]: REPLACE ME +[b]Notice[/b]: REPLACE ME"} //Uses the paper/book syntax + start_x = 2 + start_y = 2 + known = 0 + +// It notifies admins when you spawn it and gives you a 'JMP' and 'VV' link in the message so you can find it easily. +/obj/effect/overmap/visitable/admin_use/Initialize() + . = ..() + message_admins("An uploaded sector [ADMIN_JMP(src)][ADMIN_VV(src)] has been placed on the overmap. Don't forget to rename and set cool scanner info on it!") + +// This is the same, but makes a whole spaceship! +/obj/effect/overmap/visitable/ship/admin_use + name = "spacecraft" + desc = "Spacefaring vessel." + scanner_name = "REPLACE ME" + scanner_desc = @{"[i]Registration[/i]: REPLACE ME +[i]Class[/i]: REPLACE ME +[i]Transponder[/i]: REPLACE ME +[b]Notice[/b]: REPLACE ME"} + vessel_mass = 8000 + vessel_size = SHIP_SIZE_LARGE //Mostly so it's obviously visible on the map. + fore_dir = NORTH //You may need to edit this ingame if you want your ship to fly correctly! + start_x = 2 + start_y = 2 + known = 0 + +// Similarly notifies you +/obj/effect/overmap/visitable/ship/admin_use/Initialize() + . = ..() + message_admins("An uploaded ship [ADMIN_JMP(src)][ADMIN_VV(src)] has been placed on the overmap. Don't forget to rename and set cool scanner info on it!") + +// These landmarks, placed in any map that is being represented by an overmap sector, will add themselves to landable destinations in that map! +// Note the names, pick whichever makes the most sense for your map. No need to use them in any particular order or use any/all of them. +/obj/effect/shuttle_landmark/automatic/admin_use1 + name = "Landing Zone" + landmark_tag = "adminuse_lz_alpha" + +/obj/effect/shuttle_landmark/automatic/admin_use2 + name = "Parking Area" + landmark_tag = "adminuse_lz_beta" + +/obj/effect/shuttle_landmark/automatic/admin_use3 + name = "Docking Node" + landmark_tag = "adminuse_lz_gamma" diff --git a/maps/tether/submaps/admin_use/mercbase.dmm b/maps/tether/submaps/admin_use/mercbase.dmm index bac8c22541..a03f014478 100644 --- a/maps/tether/submaps/admin_use/mercbase.dmm +++ b/maps/tether/submaps/admin_use/mercbase.dmm @@ -488,10 +488,10 @@ /area/antag/antag_base) "aN" = ( /obj/structure/bed/padded, -/obj/item/weapon/bedsheet/hos, /obj/effect/landmark{ name = "Syndicate-Spawn" }, +/obj/item/weapon/bedsheet/pirate, /turf/unsimulated/floor{ icon_state = "lino" }, @@ -647,7 +647,6 @@ /area/antag/antag_base) "aZ" = ( /obj/structure/bed/padded, -/obj/item/weapon/bedsheet/hos, /obj/machinery/computer/security/telescreen/entertainment{ icon_state = "frame"; pixel_w = 0; @@ -657,6 +656,7 @@ /obj/effect/landmark{ name = "Syndicate-Spawn" }, +/obj/item/weapon/bedsheet/pirate, /turf/unsimulated/floor{ icon_state = "lino" }, diff --git a/maps/tether/submaps/aerostat/_aerostat.dm b/maps/tether/submaps/aerostat/_aerostat.dm index 1ceb13fa9f..0bada89e93 100644 --- a/maps/tether/submaps/aerostat/_aerostat.dm +++ b/maps/tether/submaps/aerostat/_aerostat.dm @@ -3,6 +3,10 @@ /obj/effect/overmap/visitable/sector/virgo2 name = "Virgo 2" desc = "Includes the Remmi Aerostat and associated ground mining complexes." + scanner_desc = @{"[i]Stellar Body[/i]: Virgo 2 +[i]Class[/i]: R-Class Planet +[i]Habitability[/i]: Low (High Temperature, Toxic Atmosphere) +[b]Notice[/b]: Planetary environment not suitable for life. Landing may be hazardous."} icon_state = "globe" color = "#dfff3f" //Bright yellow initial_generic_waypoints = list("aerostat_west","aerostat_east","aerostat_south","aerostat_northwest","aerostat_northeast") @@ -127,7 +131,7 @@ VIRGO2_TURF_CREATE(/turf/simulated/mineral) if(mineral) return - var/mineral_name = pickweight(list("marble" = 5, "uranium" = 5, "platinum" = 10, "hematite" = 5, "carbon" = 5, "diamond" = 10, "gold" = 20, "silver" = 20, "lead" = 10, "verdantium" = 5)) + 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" = 20)) if(mineral_name && (mineral_name in ore_data)) mineral = ore_data[mineral_name] diff --git a/maps/tether/submaps/backup/tether_misc.dmm b/maps/tether/submaps/backup/tether_misc.dmm deleted file mode 100644 index d11e75c0ca..0000000000 --- a/maps/tether/submaps/backup/tether_misc.dmm +++ /dev/null @@ -1,24681 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 2; - name = "thrower_throwdown"; - stopper = 0; - tiles = 0 - }, -/turf/simulated/sky/virgo3b/south, -/area/space) -"ab" = ( -/obj/structure/window/reinforced/holowindow{ - dir = 8 - }, -/obj/structure/flora/pottedplant{ - icon_state = "plant-10" - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_courtroom) -"ac" = ( -/obj/structure/window/reinforced/holowindow{ - dir = 8 - }, -/obj/structure/holostool, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"ad" = ( -/obj/machinery/door/window/holowindoor{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_courtroom) -"ae" = ( -/turf/unsimulated/mineral/virgo3b, -/area/space) -"af" = ( -/obj/structure/sign/warning/docking_area, -/turf/unsimulated/wall, -/area/centcom/simulated/terminal) -"ag" = ( -/obj/structure/flora/ausbushes/brflowers, -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 6 - }, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"ah" = ( -/obj/machinery/door/window/holowindoor{ - dir = 1; - name = "Jury Box" - }, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet{ - dir = 9 - }, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 5 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"ai" = ( -/obj/machinery/door/blast/regular{ - dir = 4 - }, -/turf/unsimulated/floor/techfloor_grid, -/area/centcom/simulated/terminal) -"aj" = ( -/obj/structure/sign/warning{ - name = "\improper STAND AWAY FROM TRACK EDGE" - }, -/turf/unsimulated/wall, -/area/centcom/simulated/terminal) -"ak" = ( -/obj/structure/table/woodentable/holotable, -/obj/structure/window/reinforced/holowindow{ - dir = 4 - }, -/obj/structure/window/reinforced/holowindow{ - dir = 1 - }, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_courtroom) -"al" = ( -/obj/structure/window/reinforced/holowindow{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_courtroom) -"am" = ( -/obj/machinery/door/window/holowindoor{ - dir = 8; - name = "Red Team" - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_emptycourt) -"an" = ( -/obj/structure/holostool, -/turf/simulated/floor/holofloor/desert, -/area/holodeck/source_picnicarea) -"ao" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/effect/floor_decal/spline/fancy/wood{ - icon_state = "spline_fancy"; - dir = 9 - }, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"ap" = ( -/turf/space, -/area/space) -"aq" = ( -/obj/effect/step_trigger/teleporter/random, -/turf/space, -/area/space) -"ar" = ( -/turf/unsimulated/wall, -/area/space) -"as" = ( -/obj/structure/window/reinforced, -/turf/unsimulated/wall, -/area/space) -"at" = ( -/obj/structure/flora/ausbushes/brflowers, -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 5 - }, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"au" = ( -/obj/structure/bed/chair/holochair{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet/corners{ - icon_state = "carpet_corners"; - dir = 5 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"av" = ( -/obj/structure/bed/chair/holochair{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 5 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"aw" = ( -/obj/structure/table/woodentable/holotable, -/obj/structure/window/reinforced/holowindow{ - dir = 4 - }, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_courtroom) -"ax" = ( -/obj/structure/flora/ausbushes/brflowers, -/obj/effect/floor_decal/spline/fancy/wood/corner{ - dir = 4 - }, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"ay" = ( -/obj/structure/bed/chair/holochair{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"az" = ( -/obj/structure/bed/chair/holochair{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"aA" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/effect/floor_decal/spline/fancy/wood{ - icon_state = "spline_fancy"; - dir = 10 - }, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"aB" = ( -/obj/structure/flora/ausbushes/brflowers, -/obj/effect/floor_decal/spline/fancy/wood/corner{ - dir = 8 - }, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"aC" = ( -/obj/machinery/door/window/holowindoor{ - base_state = "right"; - dir = 8; - icon_state = "right" - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_courtroom) -"aD" = ( -/obj/machinery/door/window/holowindoor{ - base_state = "right"; - dir = 8; - icon_state = "right"; - name = "Green Team" - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_emptycourt) -"aE" = ( -/obj/structure/bed/chair/holochair{ - dir = 4 - }, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet{ - dir = 10 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"aF" = ( -/obj/structure/bed/chair/holochair{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 6 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"aG" = ( -/obj/structure/window/reinforced/holowindow{ - dir = 8 - }, -/obj/structure/holostool, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"aH" = ( -/obj/structure/window/reinforced/holowindow{ - dir = 8 - }, -/obj/structure/holostool, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"aI" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/unsimulated/wall, -/area/space) -"aJ" = ( -/turf/simulated/floor/holofloor/desert, -/area/holodeck/source_desert) -"aK" = ( -/obj/structure/flora/ausbushes/sparsegrass, -/turf/simulated/floor/holofloor/desert, -/area/holodeck/source_desert) -"aL" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/unsimulated/wall, -/area/space) -"aM" = ( -/obj/structure/flora/ausbushes/fullgrass, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"aN" = ( -/obj/structure/flora/ausbushes/sparsegrass, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"aO" = ( -/obj/structure/table/rack/holorack, -/obj/item/clothing/under/dress/dress_saloon, -/obj/item/clothing/head/pin/flower, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_theatre) -"aP" = ( -/obj/effect/landmark/costume, -/obj/structure/table/rack/holorack, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_theatre) -"aQ" = ( -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_courtroom) -"aR" = ( -/obj/machinery/door/window/holowindoor{ - dir = 8; - name = "Red Team" - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_basketball) -"aS" = ( -/obj/structure/table/woodentable/holotable, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_courtroom) -"aT" = ( -/turf/simulated/floor/holofloor/reinforced, -/area/holodeck/source_wildlife) -"aU" = ( -/turf/simulated/floor/holofloor/reinforced, -/area/holodeck/source_plating) -"aV" = ( -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_emptycourt) -"aW" = ( -/obj/structure/holostool, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"aX" = ( -/obj/machinery/door/window/holowindoor{ - dir = 8; - name = "Red Team" - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_thunderdomecourt) -"aY" = ( -/obj/effect/floor_decal/corner/red/full{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"aZ" = ( -/obj/effect/floor_decal/corner/red{ - dir = 5 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"ba" = ( -/obj/effect/floor_decal/corner/red/full{ - dir = 1 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"bb" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/unsimulated/wall, -/area/space) -"bc" = ( -/turf/simulated/shuttle/wall, -/area/shuttle/supply) -"bd" = ( -/obj/structure/flora/ausbushes/fullgrass, -/turf/simulated/floor/holofloor/desert, -/area/holodeck/source_desert) -"be" = ( -/obj/structure/flora/ausbushes/ywflowers, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"bf" = ( -/obj/structure/flora/ausbushes/brflowers, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"bg" = ( -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_theatre) -"bh" = ( -/obj/machinery/door/window/holowindoor{ - base_state = "right"; - dir = 8; - icon_state = "right"; - name = "Green Team" - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_basketball) -"bi" = ( -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_courtroom) -"bj" = ( -/obj/effect/landmark{ - name = "Holocarp Spawn" - }, -/turf/simulated/floor/holofloor/reinforced, -/area/holodeck/source_wildlife) -"bk" = ( -/obj/effect/floor_decal/corner/red{ - dir = 9 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"bl" = ( -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"bm" = ( -/obj/effect/floor_decal/corner/red{ - dir = 6 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"bn" = ( -/turf/simulated/shuttle/floor, -/area/shuttle/supply) -"bo" = ( -/obj/structure/flora/ausbushes/brflowers, -/obj/effect/floor_decal/spline/fancy/wood/corner, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"bp" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/effect/floor_decal/spline/fancy/wood, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"bq" = ( -/obj/structure/flora/ausbushes/brflowers, -/obj/effect/floor_decal/spline/fancy/wood, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"br" = ( -/obj/machinery/door/window/holowindoor{ - base_state = "right"; - dir = 8; - icon_state = "right"; - name = "Green Team" - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_thunderdomecourt) -"bs" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 8; - name = "thrower_escapeshuttletop(left)"; - tiles = 0 - }, -/turf/simulated/sky/virgo3b/south, -/area/space) -"bt" = ( -/obj/structure/bed/chair/holochair, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_courtroom) -"bu" = ( -/obj/effect/step_trigger/teleporter/planetary_fall/virgo3b, -/turf/simulated/sky/virgo3b/south, -/area/space) -"bv" = ( -/obj/structure/window/reinforced/holowindow{ - dir = 1 - }, -/obj/structure/table/woodentable/holotable, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_courtroom) -"bw" = ( -/obj/effect/step_trigger/teleporter/random{ - affect_ghosts = 1; - name = "escapeshuttle_leave"; - teleport_x = 25; - teleport_x_offset = 245; - teleport_y = 25; - teleport_y_offset = 245; - teleport_z = 6; - teleport_z_offset = 6 - }, -/turf/simulated/sky/virgo3b/south, -/area/space) -"bx" = ( -/turf/unsimulated/mineral{ - icon = 'icons/turf/transit_vr.dmi'; - icon_state = "rock" - }, -/area/space) -"by" = ( -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 - }, -/turf/simulated/shuttle/floor, -/area/shuttle/supply) -"bz" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/shuttle/floor, -/area/shuttle/supply) -"bA" = ( -/turf/unsimulated/wall{ - icon = 'icons/turf/transit_vr.dmi' - }, -/area/space) -"bB" = ( -/turf/simulated/floor/holofloor/desert, -/area/holodeck/source_picnicarea) -"bC" = ( -/obj/effect/floor_decal/transit/orange{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"bD" = ( -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"bE" = ( -/turf/simulated/floor/maglev{ - icon = 'icons/turf/transit_vr.dmi' - }, -/area/space) -"bF" = ( -/obj/effect/floor_decal/transit/orange{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"bG" = ( -/obj/effect/floor_decal/spline/plain{ - dir = 1 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_theatre) -"bH" = ( -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 5 - }, -/obj/effect/floor_decal/carpet{ - dir = 9 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"bI" = ( -/obj/structure/window/reinforced/holowindow, -/obj/machinery/door/window/holowindoor{ - dir = 1; - name = "Court Reporter's Box" - }, -/obj/structure/bed/chair/holochair, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_courtroom) -"bJ" = ( -/obj/structure/table/woodentable/holotable, -/obj/structure/window/reinforced/holowindow, -/obj/structure/window/reinforced/holowindow{ - dir = 8 - }, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_courtroom) -"bK" = ( -/obj/structure/table/woodentable/holotable, -/obj/structure/window/reinforced/holowindow, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_courtroom) -"bL" = ( -/obj/structure/table/woodentable/holotable, -/obj/structure/window/reinforced/holowindow, -/obj/structure/window/reinforced/holowindow{ - dir = 4 - }, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_courtroom) -"bM" = ( -/obj/structure/window/reinforced/holowindow, -/obj/machinery/door/window/holowindoor{ - base_state = "right"; - dir = 1; - icon_state = "right"; - name = "Witness Box" - }, -/obj/structure/bed/chair/holochair, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_courtroom) -"bN" = ( -/obj/effect/floor_decal/transit/orange{ - dir = 8 - }, -/obj/effect/transit/light{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"bO" = ( -/obj/effect/floor_decal/transit/orange{ - dir = 4 - }, -/obj/effect/transit/light{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"bP" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 4; - name = "thrower_escapeshuttletop(right)"; - tiles = 0 - }, -/turf/simulated/sky/virgo3b/south, -/area/space) -"bQ" = ( -/obj/machinery/door/airlock/glass_external{ - frequency = 1380; - icon_state = "door_locked"; - id_tag = "supply_shuttle_hatch"; - locked = 1; - name = "Shuttle Hatch" - }, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/turf/simulated/shuttle/plating, -/area/shuttle/supply) -"bR" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/turf/simulated/shuttle/floor, -/area/shuttle/supply) -"bS" = ( -/obj/structure/table/woodentable/holotable, -/turf/simulated/floor/holofloor/desert, -/area/holodeck/source_picnicarea) -"bT" = ( -/obj/effect/floor_decal/transit/orange{ - dir = 8 - }, -/obj/effect/transit/light{ - dir = 8 - }, -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 2; - name = "thrower_throwdownside"; - nostop = 1; - stopper = 0; - tiles = 0 - }, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"bU" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 4 - }, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"bV" = ( -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_theatre) -"bW" = ( -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 9 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"bX" = ( -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"bY" = ( -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 5 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"bZ" = ( -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"ca" = ( -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 9 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"cb" = ( -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"cc" = ( -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 5 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"cd" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 8; - name = "thrower_escapeshuttletop(left)"; - tiles = 0 - }, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"ce" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 8; - name = "thrower_escapeshuttletop(left)"; - tiles = 0 - }, -/turf/simulated/floor/maglev{ - icon = 'icons/turf/transit_vr.dmi' - }, -/area/space) -"cf" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 4; - name = "thrower_escapeshuttletop(right)"; - tiles = 0 - }, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"cg" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 4; - name = "thrower_escapeshuttletop(right)"; - tiles = 0 - }, -/turf/simulated/floor/maglev{ - icon = 'icons/turf/transit_vr.dmi' - }, -/area/space) -"ch" = ( -/obj/effect/floor_decal/transit/orange{ - dir = 4 - }, -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 2; - name = "thrower_throwdownside"; - nostop = 1; - stopper = 0; - tiles = 0 - }, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"ci" = ( -/obj/effect/floor_decal/transit/orange{ - dir = 8 - }, -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 2; - name = "thrower_throwdownside"; - nostop = 1; - stopper = 0; - tiles = 0 - }, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"cj" = ( -/obj/effect/floor_decal/transit/orange{ - dir = 4 - }, -/obj/effect/transit/light{ - dir = 4 - }, -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 2; - name = "thrower_throwdownside"; - nostop = 1; - stopper = 0; - tiles = 0 - }, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"ck" = ( -/obj/effect/shuttle_landmark/transit{ - base_area = /area/space; - base_turf = /turf/simulated/sky/virgo3b/south; - landmark_tag = "tether_backup_transit"; - name = "Tether Backup Transit" - }, -/turf/simulated/sky/virgo3b/south, -/area/space) -"cl" = ( -/turf/unsimulated/wall, -/area/beach) -"cm" = ( -/turf/unsimulated/beach/sand{ - density = 1; - opacity = 1 - }, -/area/beach) -"cn" = ( -/turf/unsimulated/beach/sand, -/area/beach) -"co" = ( -/obj/effect/shuttle_landmark{ - base_area = /area/centcom/ferry; - base_turf = /turf/simulated/floor/tiled/techfloor/grid; - docking_controller = null; - landmark_tag = "escape_transit"; - name = "Escape Transit" - }, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"cp" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 2; - name = "thrower_throwdownside"; - nostop = 1; - stopper = 0; - tiles = 0 - }, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"cq" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 2; - name = "thrower_throwdownside"; - nostop = 1; - stopper = 0; - tiles = 0 - }, -/turf/simulated/floor/maglev{ - icon = 'icons/turf/transit_vr.dmi' - }, -/area/space) -"cr" = ( -/obj/effect/step_trigger/teleporter/random{ - affect_ghosts = 1; - name = "escapeshuttle_leave"; - teleport_x = 25; - teleport_x_offset = 245; - teleport_y = 25; - teleport_y_offset = 245; - teleport_z = 4; - teleport_z_offset = 4 - }, -/turf/space/transit/north, -/area/space) -"cs" = ( -/obj/machinery/door/airlock/glass_external{ - frequency = 1380; - icon_state = "door_locked"; - id_tag = "supply_shuttle_hatch"; - locked = 1; - name = "Shuttle Hatch" - }, -/turf/simulated/shuttle/floor, -/area/shuttle/supply) -"ct" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"cu" = ( -/obj/structure/holostool, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"cv" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"cw" = ( -/obj/structure/table/woodentable/holotable, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"cx" = ( -/obj/structure/table/woodentable/holotable, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"cy" = ( -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"cz" = ( -/obj/structure/table/woodentable/holotable, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"cA" = ( -/obj/effect/floor_decal/corner/green{ - dir = 9 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"cB" = ( -/obj/effect/floor_decal/corner/green{ - dir = 6 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"cC" = ( -/obj/structure/signpost, -/turf/unsimulated/beach/sand, -/area/beach) -"cD" = ( -/turf/space/transit/north, -/area/space) -"cE" = ( -/obj/effect/floor_decal/transit/orange{ - dir = 8 - }, -/obj/effect/step_trigger/lost_in_space/tram, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"cF" = ( -/obj/effect/step_trigger/lost_in_space/tram, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"cG" = ( -/obj/effect/step_trigger/lost_in_space/tram, -/turf/simulated/floor/maglev{ - icon = 'icons/turf/transit_vr.dmi' - }, -/area/space) -"cH" = ( -/obj/effect/floor_decal/transit/orange{ - dir = 4 - }, -/obj/effect/step_trigger/lost_in_space/tram, -/turf/simulated/floor/tiled/techfloor/grid{ - icon = 'icons/turf/transit_vr.dmi'; - initial_flooring = null; - icon_state = "techfloor_grid" - }, -/area/space) -"cI" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 2; - name = "thrower_throwdown"; - nostop = 1; - stopper = 0; - tiles = 0 - }, -/turf/space/transit/north, -/area/space) -"cJ" = ( -/obj/effect/transit/light{ - dir = 8 - }, -/turf/unsimulated/mineral{ - icon = 'icons/turf/transit_vr.dmi'; - icon_state = "rock" - }, -/area/space) -"cK" = ( -/obj/structure/closet, -/turf/unsimulated/beach/sand, -/area/beach) -"cL" = ( -/obj/effect/overlay/palmtree_l, -/turf/unsimulated/beach/sand, -/area/beach) -"cM" = ( -/obj/effect/overlay/palmtree_r, -/obj/effect/overlay/coconut, -/turf/unsimulated/beach/sand, -/area/beach) -"cN" = ( -/obj/effect/overlay/coconut, -/turf/unsimulated/beach/sand, -/area/beach) -"cO" = ( -/obj/machinery/embedded_controller/radio/simple_docking_controller{ - frequency = 1380; - id_tag = "supply_shuttle"; - pixel_x = -25; - pixel_y = 0; - req_one_access = list(13,31); - tag_door = "supply_shuttle_hatch" - }, -/turf/simulated/shuttle/floor, -/area/shuttle/supply) -"cP" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 1 - }, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"cQ" = ( -/obj/structure/flora/ausbushes/brflowers, -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 1 - }, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"cR" = ( -/turf/simulated/sky/virgo3b/south, -/area/space) -"cS" = ( -/obj/structure/bed/chair/holochair{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"cT" = ( -/obj/structure/bed/chair/holochair{ - dir = 1 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"cU" = ( -/obj/structure/bed/chair/holochair{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"cV" = ( -/obj/effect/overlay/palmtree_r, -/turf/unsimulated/beach/sand, -/area/beach) -"cW" = ( -/obj/structure/fake_stairs/north/bottom{ - _stair_tag = "stairtest" - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/main_hall) -"cX" = ( -/turf/unsimulated/seperator, -/area/space) -"cY" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_l" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry{ - dir = 1 - }, -/area/shuttle/supply) -"cZ" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry{ - dir = 1 - }, -/area/shuttle/supply) -"da" = ( -/obj/structure/flora/ausbushes/brflowers, -/obj/effect/floor_decal/spline/fancy/wood/corner{ - dir = 1 - }, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/source_picnicarea) -"db" = ( -/obj/effect/landmark{ - name = "endgame_exit" - }, -/turf/unsimulated/beach/sand, -/area/beach) -"dc" = ( -/obj/effect/shuttle_landmark/transit{ - base_area = /area/space; - base_turf = /turf/space/transit/north; - landmark_tag = "ninja_transit"; - name = "Ninja Transit" - }, -/turf/space/transit/north, -/area/space) -"dd" = ( -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"de" = ( -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"df" = ( -/obj/structure/table/standard, -/turf/unsimulated/beach/sand, -/area/beach) -"dg" = ( -/obj/structure/table/standard, -/obj/item/clothing/under/color/rainbow, -/obj/item/clothing/glasses/sunglasses, -/obj/item/clothing/head/collectable/petehat{ - pixel_y = 5 - }, -/turf/unsimulated/beach/sand, -/area/beach) -"dh" = ( -/obj/machinery/door/airlock/glass_external{ - frequency = 1380; - icon_state = "door_locked"; - id_tag = "supply_shuttle_hatch"; - locked = 1; - name = "Shuttle Hatch" - }, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad" - }, -/turf/simulated/shuttle/plating, -/area/shuttle/supply) -"di" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad" - }, -/turf/simulated/shuttle/floor, -/area/shuttle/supply) -"dj" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 10 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"dk" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"dl" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 6 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"dm" = ( -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 6 - }, -/obj/effect/floor_decal/carpet{ - dir = 10 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"dn" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/food/snacks/chips, -/turf/unsimulated/beach/sand, -/area/beach) -"do" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/food/drinks/cans/cola, -/obj/item/weapon/reagent_containers/food/drinks/cans/cola, -/obj/item/weapon/reagent_containers/food/drinks/cans/cola, -/obj/item/weapon/reagent_containers/food/drinks/cans/cola, -/obj/item/weapon/reagent_containers/food/drinks/cans/cola, -/obj/item/weapon/reagent_containers/food/drinks/cans/cola, -/turf/unsimulated/beach/sand, -/area/beach) -"dp" = ( -/obj/item/weapon/beach_ball, -/turf/unsimulated/beach/sand, -/area/beach) -"dq" = ( -/obj/structure/flora/pottedplant{ - icon_state = "plant-06" - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_theatre) -"dr" = ( -/obj/effect/floor_decal/carpet{ - dir = 5 - }, -/obj/effect/floor_decal/carpet{ - dir = 6 - }, -/obj/effect/floor_decal/carpet{ - dir = 10 - }, -/obj/effect/floor_decal/carpet{ - dir = 9 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) -"ds" = ( -/obj/structure/bed/chair/holochair{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 10 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"dt" = ( -/obj/structure/bed/chair/holochair{ - dir = 1 - }, -/obj/effect/floor_decal/carpet, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"du" = ( -/obj/structure/bed/chair/holochair{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 6 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_courtroom) -"dv" = ( -/obj/effect/floor_decal/corner/green/full, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"dw" = ( -/obj/effect/floor_decal/corner/green{ - dir = 10 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"dx" = ( -/obj/effect/floor_decal/corner/green/full{ - dir = 4 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_emptycourt) -"dy" = ( -/obj/structure/bed/chair, -/obj/effect/landmark{ - name = "endgame_exit" - }, -/obj/item/toy/plushie/mouse{ - desc = "A plushie of a small fuzzy rodent."; - name = "Woodrat" - }, -/turf/unsimulated/beach/sand, -/area/beach) -"dz" = ( -/obj/structure/bed/chair, -/obj/effect/landmark{ - name = "endgame_exit" - }, -/turf/unsimulated/beach/sand, -/area/beach) -"dA" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/unsimulated/wall, -/area/space) -"dB" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced, -/turf/unsimulated/wall, -/area/space) -"dC" = ( -/obj/machinery/vending/coffee, -/turf/unsimulated/beach/sand, -/area/beach) -"dD" = ( -/obj/item/clothing/head/collectable/paper, -/turf/unsimulated/beach/sand, -/area/beach) -"dE" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/airless, -/area/shuttle/supply) -"dF" = ( -/turf/simulated/floor/holofloor/space, -/area/holodeck/source_space) -"dG" = ( -/turf/simulated/floor/holofloor/snow, -/area/holodeck/source_snowfield) -"dH" = ( -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_meetinghall) -"dI" = ( -/obj/structure/flora/pottedplant{ - icon_state = "plant-06" - }, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_meetinghall) -"dJ" = ( -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_basketball) -"dK" = ( -/obj/structure/holostool, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"dL" = ( -/turf/unsimulated/floor{ - icon_state = "sandwater" - }, -/area/beach) -"dM" = ( -/obj/effect/floor_decal/corner/red/full{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"dN" = ( -/obj/effect/floor_decal/corner/red{ - dir = 5 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"dO" = ( -/obj/structure/holohoop, -/obj/effect/floor_decal/corner/red{ - dir = 5 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"dP" = ( -/obj/effect/floor_decal/corner/red/full{ - dir = 1 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"dQ" = ( -/turf/simulated/floor/holofloor/beach/sand, -/area/holodeck/source_beach) -"dR" = ( -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_thunderdomecourt) -"dS" = ( -/obj/structure/holostool, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"dT" = ( -/turf/unsimulated/beach/coastline{ - density = 1; - opacity = 1 - }, -/area/beach) -"dU" = ( -/obj/structure/table/holotable, -/obj/machinery/readybutton{ - pixel_y = 0 - }, -/obj/effect/floor_decal/corner/red/full{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"dV" = ( -/obj/structure/table/holotable, -/obj/item/clothing/head/helmet/thunderdome, -/obj/item/clothing/suit/armor/tdome/red, -/obj/item/clothing/under/color/red, -/obj/item/weapon/holo/esword/red, -/obj/effect/floor_decal/corner/red{ - dir = 5 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"dW" = ( -/obj/structure/table/holotable, -/obj/effect/floor_decal/corner/red/full{ - dir = 1 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"dX" = ( -/obj/structure/table/holotable, -/obj/item/clothing/gloves/boxing/hologlove, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"dY" = ( -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"dZ" = ( -/turf/unsimulated/wall, -/area/centcom/simulated/terminal) -"ea" = ( -/turf/space, -/turf/space/transit/north, -/area/space) -"eb" = ( -/turf/unsimulated/beach/coastline, -/area/beach) -"ec" = ( -/obj/effect/landmark{ - name = "Holocarp Spawn Random" - }, -/turf/simulated/floor/holofloor/space, -/area/holodeck/source_space) -"ed" = ( -/obj/structure/flora/grass/both, -/turf/simulated/floor/holofloor/snow, -/area/holodeck/source_snowfield) -"ee" = ( -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 9 - }, -/obj/effect/floor_decal/carpet{ - dir = 10 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"ef" = ( -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"eg" = ( -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 5 - }, -/obj/effect/floor_decal/carpet{ - dir = 6 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"eh" = ( -/obj/effect/floor_decal/corner/red{ - dir = 9 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"ei" = ( -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"ej" = ( -/obj/effect/floor_decal/corner/red{ - dir = 6 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"ek" = ( -/obj/effect/overlay/palmtree_r, -/turf/simulated/floor/holofloor/beach/sand, -/area/holodeck/source_beach) -"el" = ( -/obj/effect/floor_decal/corner/red{ - dir = 9 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"em" = ( -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"en" = ( -/obj/effect/floor_decal/corner/red{ - dir = 6 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"eo" = ( -/obj/structure/holostool, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"ep" = ( -/obj/structure/flora/tree/pine, -/turf/simulated/floor/holofloor/snow, -/area/holodeck/source_snowfield) -"eq" = ( -/obj/structure/table/woodentable/holotable, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/source_meetinghall) -"er" = ( -/turf/unsimulated/beach/water{ - density = 1; - opacity = 1 - }, -/area/beach) -"es" = ( -/obj/item/clothing/glasses/sunglasses, -/turf/simulated/floor/holofloor/beach/sand, -/area/holodeck/source_beach) -"et" = ( -/obj/effect/overlay/palmtree_l, -/obj/effect/overlay/coconut, -/turf/simulated/floor/holofloor/beach/sand, -/area/holodeck/source_beach) -"eu" = ( -/turf/unsimulated/beach/water, -/area/beach) -"ev" = ( -/obj/machinery/door/window/holowindoor{ - base_state = "right"; - dir = 2; - icon_state = "right"; - name = "Red Corner" - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"ew" = ( -/obj/structure/window/reinforced/holowindow, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"ex" = ( -/obj/structure/shuttle/engine/propulsion, -/obj/effect/shuttle_landmark{ - base_area = /area/space; - base_turf = /turf/space; - landmark_tag = "supply_cc"; - name = "Centcom Supply Depot" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry{ - dir = 1 - }, -/area/shuttle/supply) -"ey" = ( -/obj/structure/fake_stairs/south/top{ - _stair_tag = "stairtest" - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/main_hall) -"ez" = ( -/obj/effect/step_trigger/teleporter/planetary_fall/virgo3b, -/turf/space/transit/east, -/area/space) -"eA" = ( -/turf/space/transit/east, -/area/space) -"eB" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - name = "thrower_leftnostop" - }, -/turf/space/transit/east, -/area/space) -"eC" = ( -/obj/effect/step_trigger/thrower{ - direction = 1; - name = "thrower_throwup"; - nostop = 0; - tiles = 0 - }, -/turf/space/transit/east, -/area/space) -"eD" = ( -/obj/effect/shuttle_landmark/transit{ - base_area = /area/space; - base_turf = /turf/space/transit/east; - landmark_tag = "belter_transit"; - name = "Belter Transit" - }, -/turf/space/transit/east, -/area/space) -"eE" = ( -/obj/effect/shuttle_landmark/transit{ - base_area = /area/space; - base_turf = /turf/space/transit/east; - landmark_tag = "escapepod1_transit"; - name = "Escapepod 1 Transit" - }, -/turf/space/transit/east, -/area/space) -"eF" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 2; - name = "thrower_throwdown"; - stopper = 0; - tiles = 0 - }, -/turf/space/transit/east, -/area/space) -"eG" = ( -/obj/effect/step_trigger/teleporter/random{ - affect_ghosts = 1; - name = "escapeshuttle_leave"; - teleport_x = 25; - teleport_x_offset = 245; - teleport_y = 25; - teleport_y_offset = 245; - teleport_z = 4; - teleport_z_offset = 4 - }, -/turf/space/transit/west, -/area/space) -"eH" = ( -/turf/space/transit/west, -/area/space) -"eI" = ( -/obj/effect/step_trigger/thrower{ - affect_ghosts = 1; - direction = 2; - name = "thrower_throwdown"; - nostop = 1; - stopper = 0; - tiles = 0 - }, -/turf/space/transit/west, -/area/space) -"eJ" = ( -/obj/structure/flora/tree/dead, -/turf/simulated/floor/holofloor/snow, -/area/holodeck/source_snowfield) -"eK" = ( -/turf/simulated/floor/holofloor/lino, -/area/holodeck/source_meetinghall) -"eL" = ( -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_meetinghall) -"eM" = ( -/obj/item/weapon/beach_ball, -/turf/simulated/floor/holofloor/beach/sand, -/area/holodeck/source_beach) -"eN" = ( -/obj/structure/window/reinforced/holowindow{ - dir = 4 - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"eO" = ( -/obj/effect/floor_decal/corner/red/full{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"eP" = ( -/obj/effect/floor_decal/corner/red{ - dir = 5 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"eQ" = ( -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"eR" = ( -/obj/structure/window/reinforced/holowindow{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"eS" = ( -/obj/effect/shuttle_landmark/transit{ - base_area = /area/space; - base_turf = /turf/space/transit/east; - landmark_tag = "specops_transit"; - name = "Specops Transit" - }, -/turf/space/transit/west, -/area/space) -"eT" = ( -/obj/structure/flora/grass/green, -/turf/simulated/floor/holofloor/snow, -/area/holodeck/source_snowfield) -"eU" = ( -/obj/effect/floor_decal/carpet{ - dir = 5 - }, -/obj/effect/floor_decal/carpet{ - dir = 6 - }, -/obj/effect/floor_decal/carpet{ - dir = 9 - }, -/obj/effect/floor_decal/carpet{ - dir = 10 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"eV" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 9 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"eW" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"eX" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 5 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"eY" = ( -/obj/effect/floor_decal/corner/red/full, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"eZ" = ( -/obj/effect/floor_decal/corner/red{ - dir = 10 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"fa" = ( -/obj/item/weapon/beach_ball/holoball, -/obj/effect/floor_decal/corner/red{ - dir = 10 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"fb" = ( -/obj/effect/floor_decal/corner/red/full{ - dir = 4 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"fc" = ( -/obj/item/weapon/inflatable_duck, -/turf/simulated/floor/holofloor/beach/sand, -/area/holodeck/source_beach) -"fd" = ( -/obj/structure/window/reinforced/holowindow/disappearing, -/obj/effect/floor_decal/corner/red/full, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"fe" = ( -/obj/structure/window/reinforced/holowindow/disappearing, -/obj/effect/floor_decal/corner/red{ - dir = 10 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"ff" = ( -/obj/structure/window/reinforced/holowindow/disappearing, -/obj/effect/floor_decal/corner/red/full{ - dir = 4 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"fg" = ( -/obj/effect/floor_decal/corner/red{ - dir = 9 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fh" = ( -/obj/effect/floor_decal/corner/blue/full{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fi" = ( -/obj/effect/floor_decal/corner/blue/full{ - dir = 1 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fj" = ( -/obj/effect/floor_decal/corner/green{ - dir = 6 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fk" = ( -/obj/effect/shuttle_landmark/transit{ - base_area = /area/space; - base_turf = /turf/space/transit/north; - landmark_tag = "skipjack_transit"; - name = "Skipjack Transit" - }, -/turf/space/transit/north, -/area/space) -"fl" = ( -/obj/effect/floor_decal/industrial/danger, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/main_hall) -"fm" = ( -/obj/machinery/light, -/obj/effect/floor_decal/industrial/danger, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/main_hall) -"fn" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"fo" = ( -/obj/structure/holostool, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"fp" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"fq" = ( -/obj/effect/floor_decal/corner/green/full{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"fr" = ( -/obj/effect/floor_decal/corner/green{ - dir = 5 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"fs" = ( -/obj/effect/floor_decal/corner/green/full{ - dir = 1 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"ft" = ( -/obj/structure/window/reinforced/holowindow/disappearing{ - dir = 1 - }, -/obj/effect/floor_decal/corner/green/full{ - dir = 8 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"fu" = ( -/obj/structure/window/reinforced/holowindow/disappearing{ - dir = 1 - }, -/obj/effect/floor_decal/corner/green{ - dir = 5 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"fv" = ( -/obj/structure/window/reinforced/holowindow/disappearing{ - dir = 1 - }, -/obj/effect/floor_decal/corner/green/full{ - dir = 1 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"fw" = ( -/obj/effect/floor_decal/corner/blue/full, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fx" = ( -/obj/effect/floor_decal/corner/blue/full{ - dir = 4 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fy" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/main_hall) -"fz" = ( -/obj/effect/floor_decal/corner/green{ - dir = 9 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"fA" = ( -/obj/effect/floor_decal/corner/green{ - dir = 6 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"fB" = ( -/obj/effect/floor_decal/corner/green{ - dir = 9 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"fC" = ( -/obj/effect/floor_decal/corner/green{ - dir = 6 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"fD" = ( -/obj/effect/floor_decal/corner/green{ - dir = 10 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fE" = ( -/obj/effect/floor_decal/corner/green/full{ - dir = 4 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_boxingcourt) -"fF" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_r" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry{ - dir = 1 - }, -/area/shuttle/supply) -"fG" = ( -/obj/structure/flora/grass/brown, -/turf/simulated/floor/holofloor/snow, -/area/holodeck/source_snowfield) -"fH" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/turf/simulated/floor/holofloor/carpet{ - dir = 8 - }, -/area/holodeck/source_meetinghall) -"fI" = ( -/obj/effect/step_trigger/teleporter/random{ - affect_ghosts = 1; - name = "escapeshuttle_leave"; - teleport_x = 25; - teleport_x_offset = 245; - teleport_y = 25; - teleport_y_offset = 245; - teleport_z = 4; - teleport_z_offset = 4 - }, -/turf/space, -/turf/space/transit/north, -/area/space) -"fJ" = ( -/obj/effect/floor_decal/corner/green{ - dir = 10 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"fK" = ( -/turf/unsimulated/beach/sand{ - icon_state = "beach" - }, -/area/holodeck/source_beach) -"fM" = ( -/obj/structure/window/reinforced/holowindow{ - dir = 1 - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"fN" = ( -/obj/machinery/door/window/holowindoor{ - dir = 1; - name = "Green Corner" - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"fO" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 10 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"fP" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"fQ" = ( -/obj/structure/holostool, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 6 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"fR" = ( -/turf/simulated/floor/holofloor/beach/water, -/area/holodeck/source_beach) -"fS" = ( -/obj/effect/floor_decal/corner/green/full, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"fT" = ( -/obj/structure/holohoop{ - dir = 1 - }, -/obj/effect/floor_decal/corner/green{ - dir = 10 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"fU" = ( -/obj/effect/floor_decal/corner/green/full{ - dir = 4 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_basketball) -"fV" = ( -/obj/structure/table/holotable, -/obj/effect/floor_decal/corner/green/full, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"fW" = ( -/obj/structure/table/holotable, -/obj/item/clothing/head/helmet/thunderdome, -/obj/item/clothing/suit/armor/tdome/green, -/obj/item/clothing/under/color/green, -/obj/item/weapon/holo/esword/green, -/obj/effect/floor_decal/corner/green{ - dir = 10 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"fX" = ( -/obj/structure/table/holotable, -/obj/machinery/readybutton{ - pixel_y = 0 - }, -/obj/effect/floor_decal/corner/green/full{ - dir = 4 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_thunderdomecourt) -"fY" = ( -/obj/structure/table/holotable, -/obj/item/clothing/gloves/boxing/hologlove{ - icon_state = "boxinggreen"; - item_state = "boxinggreen" - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/source_boxingcourt) -"fZ" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/unsimulated/wall, -/area/space) -"ga" = ( -/turf/simulated/floor/holofloor/wood, -/area/holodeck/holodorm/source_basic) -"gb" = ( -/obj/structure/bed/chair/holochair{ - dir = 4 - }, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/holodorm/source_basic) -"gc" = ( -/obj/structure/table/woodentable/holotable, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/holodorm/source_basic) -"gd" = ( -/obj/structure/bed/chair/holochair{ - dir = 8 - }, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/holodorm/source_basic) -"ge" = ( -/obj/effect/overlay/palmtree_r, -/turf/simulated/floor/holofloor/beach/sand, -/area/holodeck/holodorm/source_beach) -"gf" = ( -/turf/simulated/floor/holofloor/beach/sand, -/area/holodeck/holodorm/source_beach) -"gg" = ( -/obj/effect/overlay/coconut, -/turf/simulated/floor/holofloor/beach/sand, -/area/holodeck/holodorm/source_beach) -"gh" = ( -/obj/item/clothing/glasses/sunglasses, -/turf/simulated/floor/holofloor/beach/sand, -/area/holodeck/holodorm/source_beach) -"gi" = ( -/obj/effect/overlay/palmtree_l, -/turf/simulated/floor/holofloor/beach/sand, -/area/holodeck/holodorm/source_beach) -"gj" = ( -/obj/structure/flora/grass/brown, -/obj/structure/flora/tree/dead, -/turf/simulated/floor/holofloor/snow, -/area/holodeck/holodorm/source_snow) -"gk" = ( -/turf/simulated/floor/holofloor/snow, -/area/holodeck/holodorm/source_snow) -"gl" = ( -/turf/unsimulated/beach/sand{ - icon_state = "beach" - }, -/area/holodeck/holodorm/source_beach) -"gm" = ( -/obj/effect/landmark{ - name = "Wolfgirl Spawn" - }, -/turf/simulated/floor/holofloor/snow, -/area/holodeck/holodorm/source_snow) -"gn" = ( -/obj/structure/flora/grass/brown, -/turf/simulated/floor/holofloor/snow, -/area/holodeck/holodorm/source_snow) -"go" = ( -/obj/structure/flora/grass/green, -/obj/structure/flora/tree/pine, -/turf/simulated/floor/holofloor/snow, -/area/holodeck/holodorm/source_snow) -"gq" = ( -/obj/structure/bed/holobed, -/turf/simulated/floor/holofloor/wood, -/area/holodeck/holodorm/source_basic) -"gr" = ( -/turf/simulated/floor/holofloor/beach/water, -/area/holodeck/holodorm/source_beach) -"gs" = ( -/obj/structure/flora/grass/green, -/turf/simulated/floor/holofloor/snow, -/area/holodeck/holodorm/source_snow) -"gt" = ( -/obj/structure/flora/grass/both, -/turf/simulated/floor/holofloor/snow, -/area/holodeck/holodorm/source_snow) -"gN" = ( -/obj/structure/flora/ausbushes/fullgrass, -/turf/simulated/floor/holofloor/desert, -/area/holodeck/holodorm/source_desert) -"gO" = ( -/turf/simulated/floor/holofloor/desert, -/area/holodeck/holodorm/source_desert) -"gP" = ( -/obj/structure/flora/ausbushes/sparsegrass, -/turf/simulated/floor/holofloor/desert, -/area/holodeck/holodorm/source_desert) -"gQ" = ( -/obj/structure/flora/ausbushes/brflowers, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/holodorm/source_garden) -"gR" = ( -/obj/structure/flora/ausbushes/ywflowers, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/holodorm/source_garden) -"gS" = ( -/turf/simulated/floor/holofloor/reinforced, -/area/holodeck/holodorm/source_off) -"hg" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/effect/landmark{ - name = "Catgirl Spawn" - }, -/turf/simulated/floor/holofloor/grass, -/area/holodeck/holodorm/source_garden) -"hn" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/base_high, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"hx" = ( -/turf/simulated/floor/holofloor/wood, -/area/holodeck/holodorm/source_seating) -"hy" = ( -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 9 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/holodorm/source_seating) -"hz" = ( -/obj/structure/bed/chair/holochair, -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/holodorm/source_seating) -"hA" = ( -/obj/effect/floor_decal/carpet{ - dir = 1 - }, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 5 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/holodorm/source_seating) -"hB" = ( -/obj/structure/table/holotable, -/obj/item/clothing/gloves/boxing/hologlove, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/holodorm/source_boxing) -"hC" = ( -/obj/effect/floor_decal/corner/red{ - dir = 9 - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/holodorm/source_boxing) -"hD" = ( -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/holodorm/source_boxing) -"hE" = ( -/obj/effect/floor_decal/corner/green{ - dir = 6 - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/holodorm/source_boxing) -"hF" = ( -/turf/simulated/floor/holofloor/space, -/area/holodeck/holodorm/source_space) -"hJ" = ( -/obj/structure/bed/chair/holochair{ - dir = 4 - }, -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/holodorm/source_seating) -"hK" = ( -/obj/structure/table/woodentable/holotable, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/holodorm/source_seating) -"hL" = ( -/obj/structure/bed/chair/holochair{ - dir = 8 - }, -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/holodorm/source_seating) -"hO" = ( -/obj/effect/floor_decal/carpet{ - dir = 8 - }, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 10 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/holodorm/source_seating) -"hP" = ( -/obj/structure/bed/chair/holochair{ - dir = 1 - }, -/obj/effect/floor_decal/carpet, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/holodorm/source_seating) -"hQ" = ( -/obj/effect/floor_decal/carpet{ - dir = 4 - }, -/obj/effect/floor_decal/carpet, -/obj/effect/floor_decal/carpet{ - dir = 6 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/holodorm/source_seating) -"hR" = ( -/obj/structure/table/holotable, -/obj/item/clothing/gloves/boxing/hologlove{ - icon_state = "boxinggreen"; - item_state = "boxinggreen" - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/holodeck/holodorm/source_boxing) -"kh" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/base_mid, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"kr" = ( -/obj/machinery/telecomms/server/presets/centcomm, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"kF" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/midpoint, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"pb" = ( -/obj/machinery/telecomms/processor/preset_cent, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"rE" = ( -/obj/machinery/telecomms/bus/preset_cent, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"sF" = ( -/obj/effect/overmap/bluespace_rift, -/turf/unsimulated/map, -/area/overmap) -"uc" = ( -/turf/unsimulated/wall, -/area/centcom/suppy) -"ud" = ( -/obj/machinery/status_display/supply_display, -/turf/unsimulated/wall, -/area/centcom/suppy) -"ue" = ( -/obj/structure/closet/crate, -/turf/unsimulated/floor{ - icon_state = "vault"; - dir = 1 - }, -/area/centcom/suppy) -"uf" = ( -/turf/unsimulated/floor{ - icon_state = "dark" - }, -/area/centcom/suppy) -"ug" = ( -/obj/item/weapon/paper{ - info = "You're not supposed to be here."; - name = "unnerving letter" - }, -/turf/unsimulated/floor{ - icon_state = "dark" - }, -/area/centcom/suppy) -"vt" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/station_high, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"wd" = ( -/obj/structure/sign/warning/nosmoking_2, -/turf/unsimulated/wall, -/area/centcom/simulated/terminal) -"wl" = ( -/turf/unsimulated/wall, -/area/centcom/simulated/evac) -"wy" = ( -/turf/unsimulated/wall, -/area/centcom/control) -"xe" = ( -/obj/machinery/account_database{ - name = "CentComm Accounts database" - }, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"yA" = ( -/obj/machinery/telecomms/receiver/preset_cent, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"zK" = ( -/obj/machinery/door/blast/regular{ - dir = 4 - }, -/turf/simulated/floor/maglev, -/area/centcom/simulated/terminal) -"Al" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/centcom/simulated/terminal) -"Ct" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/station_low, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"Cw" = ( -/obj/machinery/r_n_d/server/centcom, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"Dc" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/station_mid, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"Dn" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/sci_outpost, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"ET" = ( -/turf/simulated/floor/tiled/techfloor/grid, -/area/centcom/simulated/terminal) -"Fp" = ( -/turf/simulated/floor/maglev, -/area/centcom/simulated/terminal) -"FW" = ( -/obj/machinery/telecomms/relay/preset/centcom/underdark, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"Ga" = ( -/turf/unsimulated/floor/steel, -/area/centcom/control) -"HQ" = ( -/obj/machinery/telecomms/broadcaster/preset_cent, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"Iq" = ( -/obj/machinery/telecomms/hub/preset_cent, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"Jx" = ( -/obj/effect/floor_decal/corner_steel_grid/diagonal, -/obj/effect/floor_decal/corner_steel_grid/diagonal{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/terminal) -"JR" = ( -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "TelelockdownC"; - name = "Security Doors"; - opacity = 0 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 10 - }, -/obj/machinery/door/firedoor, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"ME" = ( -/obj/machinery/computer/rdservercontrol{ - name = "Master R&D Server Controller"; - icon_state = "computer"; - dir = 1; - badmin = 1 - }, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"Nq" = ( -/turf/simulated/floor/tiled, -/area/centcom/simulated/terminal) -"Nr" = ( -/obj/machinery/cryopod/robot/door/gateway, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"OR" = ( -/turf/simulated/shuttle/wall, -/area/shuttle/escape) -"OY" = ( -/turf/unsimulated/map, -/area/overmap) -"Pe" = ( -/obj/structure/grille, -/obj/structure/shuttle/window, -/turf/simulated/shuttle/plating, -/area/shuttle/escape) -"Pf" = ( -/obj/structure/table/woodentable{ - dir = 5 - }, -/obj/structure/flora/pottedplant{ - pixel_y = 8 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/terminal) -"Pg" = ( -/turf/simulated/shuttle/wall/hard_corner, -/area/shuttle/escape) -"Qa" = ( -/obj/structure/closet/hydrant{ - pixel_x = -30; - pixel_y = 0 - }, -/obj/item/weapon/storage/firstaid/o2{ - layer = 2.8; - pixel_x = 4; - pixel_y = 6 - }, -/obj/item/weapon/storage/firstaid/fire, -/obj/item/weapon/storage/firstaid/toxin, -/obj/structure/bed/chair/shuttle, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"QW" = ( -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"QX" = ( -/obj/structure/bed/chair/shuttle, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"QY" = ( -/obj/structure/flora/pottedplant{ - icon_state = "plant-21" - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/terminal) -"Rc" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/centcom/simulated/terminal) -"Rd" = ( -/obj/structure/table/standard, -/obj/random/maintenance/clean, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"Re" = ( -/obj/structure/table/standard, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"Rf" = ( -/obj/machinery/status_display{ - pixel_y = 30 - }, -/obj/structure/table/standard, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"Rg" = ( -/obj/structure/bed/chair/shuttle{ - dir = 1 - }, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"Rh" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, -/turf/unsimulated/wall, -/area/centcom/simulated/terminal) -"Ri" = ( -/obj/machinery/door/airlock/glass_external{ - frequency = 1380; - icon_state = "door_locked"; - id_tag = "escape_shuttle_hatch_station"; - locked = 1; - name = "Shuttle Hatch" - }, -/turf/simulated/shuttle/floor/yellow, -/area/shuttle/escape) -"Rj" = ( -/obj/machinery/door/airlock/glass_external{ - frequency = 1380; - icon_state = "door_locked"; - id_tag = "escape_shuttle_hatch_offsite"; - locked = 1; - name = "Shuttle Hatch" - }, -/turf/simulated/shuttle/floor/yellow, -/area/shuttle/escape) -"Rk" = ( -/obj/structure/bed/chair/shuttle, -/obj/structure/closet/walllocker/emerglocker{ - pixel_x = -28 - }, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"Rl" = ( -/obj/structure/bed/chair/shuttle, -/obj/structure/closet/walllocker/emerglocker{ - pixel_x = 28 - }, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"Rm" = ( -/obj/structure/table/standard, -/obj/random/junk, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"Ro" = ( -/obj/structure/table/standard, -/obj/random/maintenance/clean, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"Rq" = ( -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "TelelockdownC"; - name = "Security Doors"; - opacity = 0 - }, -/obj/effect/floor_decal/industrial/warning, -/obj/machinery/door/firedoor, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"Rr" = ( -/obj/structure/flora/pottedplant{ - icon_state = "plant-22" - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/main_hall) -"Rs" = ( -/obj/structure/sign/nanotrasen, -/obj/effect/shuttle_landmark{ - base_area = /area/centcom/simulated/terminal; - base_turf = /turf/simulated/floor/tiled/techfloor/grid; - docking_controller = null; - landmark_tag = "escape_cc"; - name = "Escape Transit" - }, -/turf/simulated/shuttle/wall, -/area/shuttle/escape) -"Rt" = ( -/obj/structure/sign/nanotrasen, -/turf/simulated/shuttle/wall, -/area/shuttle/escape) -"Ru" = ( -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/main_hall) -"Rv" = ( -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "TelelockdownC"; - name = "Security Doors"; - opacity = 0 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 6 - }, -/obj/machinery/door/firedoor, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"Rw" = ( -/obj/structure/table/standard, -/obj/item/clothing/head/beret/nanotrasen, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"Rx" = ( -/obj/structure/table/standard, -/obj/random/plushie, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"Ry" = ( -/obj/structure/bed/chair/shuttle{ - dir = 1 - }, -/obj/structure/closet/walllocker/emerglocker{ - pixel_x = -28 - }, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"Rz" = ( -/obj/structure/bed/chair/shuttle{ - dir = 1 - }, -/obj/structure/closet/walllocker/emerglocker{ - pixel_x = 28 - }, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"RA" = ( -/obj/structure/grille, -/obj/structure/shuttle/window, -/turf/simulated/shuttle/floor/white, -/area/shuttle/escape) -"RC" = ( -/obj/effect/floor_decal/industrial/outline/blue, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"RD" = ( -/obj/structure/bed/chair/shuttle{ - dir = 1 - }, -/obj/machinery/light, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"RE" = ( -/obj/effect/floor_decal/industrial/outline/blue, -/obj/machinery/light, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"RF" = ( -/obj/random/junk, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"RG" = ( -/obj/structure/bed/chair/shuttle{ - dir = 1 - }, -/obj/random/soap, -/turf/simulated/shuttle/floor/white{ - color = "#cccccc" - }, -/area/shuttle/escape) -"Sl" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 8 - }, -/obj/machinery/camera/network/crescent{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/centcom/simulated/terminal) -"Sm" = ( -/turf/simulated/shuttle/wall/alien/blue/hard_corner, -/area/unknown/dorm4) -"Sn" = ( -/turf/simulated/shuttle/wall/alien/blue, -/area/unknown/dorm4) -"So" = ( -/obj/machinery/recharge_station, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm4) -"Sp" = ( -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm4) -"Sq" = ( -/obj/structure/toilet, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm4) -"Sr" = ( -/obj/machinery/shower{ - pixel_y = 13 - }, -/obj/structure/curtain/open/shower, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 5 - }, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm4) -"Ss" = ( -/obj/machinery/door/airlock/alien/blue/public, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm4) -"Su" = ( -/obj/structure/closet/alien, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"Sw" = ( -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"Sx" = ( -/obj/structure/fans, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"Sz" = ( -/obj/machinery/smartfridge/survival_pod, -/obj/item/weapon/storage/mre/menu11, -/obj/item/weapon/storage/mre/menu11, -/obj/item/weapon/storage/mre/menu13, -/obj/item/weapon/storage/mre/menu13, -/obj/item/weapon/storage/mre/menu10, -/obj/item/weapon/storage/mre/menu10, -/obj/item/weapon/storage/mre/menu9, -/obj/item/weapon/storage/mre/menu9, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/towel/random, -/obj/item/weapon/towel/random, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"SA" = ( -/obj/machinery/sleeper/survival_pod, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"SB" = ( -/obj/structure/table/survival_pod, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"SC" = ( -/obj/item/device/perfect_tele_beacon/stationary{ - tele_name = "Unknown"; - tele_network = "unkfour" - }, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm4) -"SD" = ( -/obj/item/weapon/bedsheet/rddouble, -/obj/structure/bed/double/padded, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"SE" = ( -/obj/structure/prop/alien/computer{ - dir = 8 - }, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"SF" = ( -/obj/structure/prop/alien/dispenser, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"SG" = ( -/obj/machinery/door/blast/regular{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/centcom/simulated/terminal) -"SH" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/terminal) -"SK" = ( -/obj/structure/closet/secure_closet/personal, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"SN" = ( -/obj/structure/bed/chair/comfy/black, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"SO" = ( -/obj/structure/bed/chair/comfy/black{ - dir = 4 - }, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"SP" = ( -/obj/structure/table/alien, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm4) -"SQ" = ( -/obj/effect/floor_decal/industrial/hatch/yellow, -/obj/machinery/teleport/hub, -/turf/simulated/shuttle/floor/voidcraft, -/area/unknown/dorm4) -"SR" = ( -/obj/machinery/teleport/station, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm4) -"SS" = ( -/obj/machinery/computer/teleporter{ - dir = 1 - }, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm4) -"ST" = ( -/obj/structure/prop/alien/power, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm4) -"SV" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/main_hall) -"SW" = ( -/obj/item/device/perfect_tele_beacon/stationary{ - tele_name = "Transfer"; - tele_network = "centcom" - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"SX" = ( -/turf/simulated/shuttle/wall/alien/blue/hard_corner, -/area/unknown/dorm3) -"SY" = ( -/turf/simulated/shuttle/wall/alien/blue, -/area/unknown/dorm3) -"SZ" = ( -/obj/machinery/recharge_station, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm3) -"Ta" = ( -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm3) -"Tb" = ( -/obj/structure/toilet, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm3) -"Tc" = ( -/obj/machinery/shower{ - pixel_y = 13 - }, -/obj/structure/curtain/open/shower, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 5 - }, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm3) -"Td" = ( -/obj/machinery/door/airlock/alien/blue/public, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm3) -"Tf" = ( -/obj/machinery/cryopod/robot/door/gateway, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"Th" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"Ti" = ( -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"Tj" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"Tk" = ( -/obj/structure/closet/alien, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"Tl" = ( -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"Tm" = ( -/obj/structure/fans, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"To" = ( -/obj/machinery/smartfridge/survival_pod, -/obj/item/weapon/storage/mre/menu11, -/obj/item/weapon/storage/mre/menu11, -/obj/item/weapon/storage/mre/menu13, -/obj/item/weapon/storage/mre/menu13, -/obj/item/weapon/storage/mre/menu10, -/obj/item/weapon/storage/mre/menu10, -/obj/item/weapon/storage/mre/menu9, -/obj/item/weapon/storage/mre/menu9, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/towel/random, -/obj/item/weapon/towel/random, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"Tp" = ( -/obj/machinery/sleeper/survival_pod, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"Tq" = ( -/obj/structure/table/survival_pod, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"Tr" = ( -/obj/item/device/perfect_tele_beacon/stationary{ - tele_name = "Unknown"; - tele_network = "unkthree" - }, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm3) -"Tt" = ( -/obj/item/weapon/bedsheet/rddouble, -/obj/structure/bed/double/padded, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"Tu" = ( -/obj/structure/prop/alien/computer{ - dir = 8 - }, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"Tx" = ( -/obj/structure/prop/alien/dispenser, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"Ty" = ( -/obj/structure/closet/secure_closet/personal, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"Tz" = ( -/obj/structure/bed/chair/comfy/black, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"TA" = ( -/obj/structure/bed/chair/comfy/black{ - dir = 4 - }, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"TB" = ( -/obj/structure/table/alien, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm3) -"TC" = ( -/obj/effect/floor_decal/industrial/hatch/yellow, -/obj/machinery/teleport/hub, -/turf/simulated/shuttle/floor/voidcraft, -/area/unknown/dorm3) -"TD" = ( -/obj/machinery/teleport/station, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm3) -"TE" = ( -/obj/machinery/computer/teleporter{ - dir = 1 - }, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm3) -"TH" = ( -/obj/structure/prop/alien/power, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm3) -"TI" = ( -/obj/effect/wingrille_spawn/reinforced/crescent, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plating, -/area/centcom/simulated/terminal) -"TJ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/multi_tile/glass, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/main_hall) -"TK" = ( -/turf/simulated/shuttle/wall/alien/hard_corner, -/area/unknown/dorm2) -"TM" = ( -/turf/simulated/shuttle/wall/alien, -/area/unknown/dorm2) -"TN" = ( -/obj/machinery/recharge_station, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm2) -"TP" = ( -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm2) -"TQ" = ( -/obj/structure/toilet, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm2) -"TR" = ( -/obj/machinery/shower{ - pixel_y = 13 - }, -/obj/structure/curtain/open/shower, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 5 - }, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm2) -"TS" = ( -/obj/machinery/door/airlock/alien/public, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm2) -"TT" = ( -/obj/structure/closet/alien, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"TU" = ( -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"TV" = ( -/obj/structure/fans, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"TW" = ( -/obj/machinery/smartfridge/survival_pod, -/obj/item/weapon/storage/mre/menu11, -/obj/item/weapon/storage/mre/menu11, -/obj/item/weapon/storage/mre/menu13, -/obj/item/weapon/storage/mre/menu13, -/obj/item/weapon/storage/mre/menu10, -/obj/item/weapon/storage/mre/menu10, -/obj/item/weapon/storage/mre/menu9, -/obj/item/weapon/storage/mre/menu9, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/towel/random, -/obj/item/weapon/towel/random, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"TX" = ( -/obj/machinery/sleeper/survival_pod, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"TY" = ( -/obj/machinery/door/firedoor, -/turf/unsimulated/floor/steel, -/area/centcom/simulated/terminal) -"TZ" = ( -/obj/effect/floor_decal/industrial/warning/dust/corner, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Ua" = ( -/obj/structure/table/survival_pod, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"Ub" = ( -/obj/item/device/perfect_tele_beacon/stationary{ - tele_name = "Unknown"; - tele_network = "unktwo" - }, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm2) -"Uc" = ( -/obj/item/weapon/bedsheet/rddouble, -/obj/structure/bed/double/padded, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"Ud" = ( -/obj/structure/prop/alien/computer{ - dir = 8 - }, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"Uf" = ( -/obj/structure/prop/alien/dispenser, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"Ug" = ( -/obj/structure/closet/secure_closet/personal, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"Uh" = ( -/obj/structure/bed/chair/comfy/black, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"Ui" = ( -/obj/structure/bed/chair/comfy/black{ - dir = 4 - }, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"Uj" = ( -/obj/structure/table/alien, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm2) -"Uk" = ( -/obj/effect/floor_decal/industrial/hatch/yellow, -/obj/machinery/teleport/hub, -/turf/simulated/shuttle/floor/voidcraft, -/area/unknown/dorm2) -"Ul" = ( -/obj/machinery/teleport/station, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm2) -"Um" = ( -/obj/machinery/computer/teleporter{ - dir = 1 - }, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm2) -"Uo" = ( -/obj/structure/prop/alien/power, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm2) -"Up" = ( -/obj/effect/floor_decal/industrial/warning/dust, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Ur" = ( -/obj/effect/floor_decal/rust, -/obj/effect/floor_decal/industrial/warning/dust, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Us" = ( -/obj/effect/floor_decal/industrial/warning/dust/corner{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Ut" = ( -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Uu" = ( -/obj/effect/floor_decal/industrial/warning/dust, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Uv" = ( -/obj/effect/floor_decal/industrial/outline, -/obj/structure/bed/chair, -/turf/unsimulated/floor/steel, -/area/centcom/simulated/main_hall) -"Uw" = ( -/turf/simulated/shuttle/wall/alien/hard_corner, -/area/unknown/dorm1) -"Ux" = ( -/turf/simulated/shuttle/wall/alien, -/area/unknown/dorm1) -"Uz" = ( -/obj/machinery/recharge_station, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm1) -"UA" = ( -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm1) -"UC" = ( -/obj/structure/toilet, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm1) -"UD" = ( -/obj/machinery/shower{ - pixel_y = 13 - }, -/obj/structure/curtain/open/shower, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 5 - }, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm1) -"UE" = ( -/obj/effect/floor_decal/industrial/outline, -/obj/structure/bed/chair, -/obj/machinery/status_display{ - pixel_y = 29 - }, -/turf/unsimulated/floor/steel, -/area/centcom/simulated/main_hall) -"UF" = ( -/obj/machinery/door/airlock/alien/public, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm1) -"UG" = ( -/obj/structure/closet/alien, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"UH" = ( -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"UI" = ( -/obj/structure/fans, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"UJ" = ( -/obj/machinery/smartfridge/survival_pod, -/obj/item/weapon/storage/mre/menu11, -/obj/item/weapon/storage/mre/menu11, -/obj/item/weapon/storage/mre/menu13, -/obj/item/weapon/storage/mre/menu13, -/obj/item/weapon/storage/mre/menu10, -/obj/item/weapon/storage/mre/menu10, -/obj/item/weapon/storage/mre/menu9, -/obj/item/weapon/storage/mre/menu9, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/storage/mre/random, -/obj/item/weapon/towel/random, -/obj/item/weapon/towel/random, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"UK" = ( -/obj/machinery/sleeper/survival_pod, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"UM" = ( -/obj/structure/table/survival_pod, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"UN" = ( -/obj/item/device/perfect_tele_beacon/stationary{ - tele_name = "Unknown"; - tele_network = "unkone" - }, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm1) -"UP" = ( -/obj/item/weapon/bedsheet/rddouble, -/obj/structure/bed/double/padded, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"UQ" = ( -/obj/structure/prop/alien/computer{ - dir = 8 - }, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"UR" = ( -/obj/structure/prop/alien/dispenser, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"US" = ( -/obj/structure/closet/secure_closet/personal, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"UT" = ( -/obj/structure/bed/chair/comfy/black, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"UU" = ( -/obj/structure/bed/chair/comfy/black{ - dir = 4 - }, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"UV" = ( -/obj/structure/table/alien, -/turf/simulated/shuttle/floor/alien, -/area/unknown/dorm1) -"UW" = ( -/obj/effect/floor_decal/industrial/hatch/yellow, -/obj/machinery/teleport/hub, -/turf/simulated/shuttle/floor/voidcraft, -/area/unknown/dorm1) -"UX" = ( -/obj/machinery/teleport/station, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm1) -"UY" = ( -/obj/machinery/computer/teleporter{ - dir = 1 - }, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm1) -"UZ" = ( -/obj/structure/prop/alien/power, -/turf/simulated/shuttle/floor/alienplating, -/area/unknown/dorm1) -"Va" = ( -/obj/effect/floor_decal/rust/steel_decals_rusted2, -/obj/effect/floor_decal/industrial/warning/dust, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Vb" = ( -/obj/machinery/recharge_station, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/bathroom) -"Vc" = ( -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/bathroom) -"Vd" = ( -/turf/unsimulated/wall, -/area/centcom/simulated/medical) -"Ve" = ( -/obj/effect/wingrille_spawn/reinforced/crescent, -/obj/structure/sign/department/medbay, -/turf/unsimulated/floor{ - icon_state = "plating"; - name = "plating" - }, -/area/centcom/simulated/medical) -"Vf" = ( -/obj/machinery/door/airlock{ - name = "Unit 4" - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/bathroom) -"Vg" = ( -/turf/unsimulated/wall, -/area/centcom/simulated/living) -"Vh" = ( -/obj/effect/floor_decal/corner_steel_grid/diagonal, -/obj/effect/floor_decal/corner_steel_grid/diagonal{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 8 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/terminal) -"Vi" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Vj" = ( -/turf/simulated/floor/tiled/steel, -/area/shuttle/large_escape_pod2/centcom{ - base_turf = /turf/simulated/floor/tiled/steel_dirty/virgo3b - }) -"Vk" = ( -/turf/unsimulated/wall, -/area/centcom/simulated/bathroom) -"Vl" = ( -/obj/structure/sign/warning{ - name = "\improper STAND AWAY FROM TRACK EDGE" - }, -/turf/unsimulated/wall, -/area/centcom/simulated/living) -"Vm" = ( -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/steel, -/area/shuttle/large_escape_pod2/centcom{ - base_turf = /turf/simulated/floor/tiled/steel_dirty/virgo3b - }) -"Vn" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 10 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Vo" = ( -/obj/machinery/door/blast/regular{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Vp" = ( -/obj/effect/floor_decal/rust/part_rusted3, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 9 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Vq" = ( -/obj/effect/floor_decal/rust/part_rusted3, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Vr" = ( -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Vs" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Vt" = ( -/obj/effect/floor_decal/rust/mono_rusted3, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Vu" = ( -/turf/unsimulated/wall, -/area/centcom/simulated/main_hall) -"Vv" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/turf/unsimulated/floor/steel, -/area/centcom/simulated/terminal) -"Vw" = ( -/obj/machinery/door/firedoor, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/main_hall) -"Vy" = ( -/obj/machinery/door/airlock{ - name = "Unit 3" - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/bathroom) -"Vz" = ( -/obj/machinery/light/small{ - dir = 8; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/bathroom) -"VB" = ( -/obj/effect/floor_decal/sign/dock/one, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"VD" = ( -/obj/effect/floor_decal/corner_steel_grid/diagonal, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"VE" = ( -/obj/effect/shuttle_landmark{ - base_area = /area/centcom/simulated/evac; - base_turf = /turf/unsimulated/floor/steel; - docking_controller = null; - landmark_tag = "escapepod1_cc"; - name = "Centcom Recovery Area" - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"VF" = ( -/obj/effect/floor_decal/sign/dock/two, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"VI" = ( -/turf/unsimulated/wall, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"VJ" = ( -/obj/effect/floor_decal/rust, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"VK" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/multi_tile/glass, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/restaurant) -"VL" = ( -/obj/machinery/door/firedoor, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/restaurant) -"VM" = ( -/turf/unsimulated/wall, -/area/centcom/simulated/restaurant) -"VN" = ( -/obj/effect/floor_decal/corner_steel_grid/diagonal, -/turf/simulated/floor/tiled/steel, -/area/shuttle/large_escape_pod2/centcom{ - base_turf = /turf/simulated/floor/tiled/steel_dirty/virgo3b - }) -"VO" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 9 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"VP" = ( -/obj/effect/floor_decal/industrial/warning/dust/corner{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"VQ" = ( -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"VR" = ( -/obj/structure/bed/chair/wood/wings, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"VS" = ( -/obj/effect/floor_decal/corner_steel_grid/diagonal, -/obj/effect/floor_decal/industrial/warning/dust/corner{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"VU" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"VV" = ( -/obj/effect/floor_decal/rust, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"VX" = ( -/obj/effect/floor_decal/industrial/warning/dust/corner{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"VY" = ( -/obj/structure/closet/crate/bin, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"VZ" = ( -/obj/structure/bed/chair/wood/wings{ - icon_state = "wooden_chair_wings"; - dir = 4 - }, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Wb" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/pastatomato, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Wc" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Wd" = ( -/obj/structure/bed/chair/wood/wings{ - icon_state = "wooden_chair_wings"; - dir = 8 - }, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"We" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/fries, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Wh" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 9 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Wi" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms" - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/bathroom) -"Wj" = ( -/obj/effect/blocker, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/living) -"Wk" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/cheeseburger{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/weapon/reagent_containers/food/snacks/cheeseburger, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Wl" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/kitsuneudon, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Wm" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/lasagna, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Wo" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/hotdog, -/obj/item/weapon/reagent_containers/food/snacks/hotdog{ - pixel_x = -5; - pixel_y = -3 - }, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Wp" = ( -/obj/machinery/cryopod/robot/door/dorms, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"Wq" = ( -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/obj/machinery/computer/cryopod/dorms{ - name = "Company Property Retention System"; - pixel_x = 0; - pixel_y = 32 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"Ws" = ( -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"Wt" = ( -/obj/machinery/porta_turret/crescent{ - density = 1 - }, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Wu" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Wv" = ( -/obj/effect/floor_decal/industrial/outline, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Wz" = ( -/obj/structure/bed/chair/wood/wings{ - icon_state = "wooden_chair_wings"; - dir = 1 - }, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"WA" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/grilledcheese, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"WB" = ( -/obj/effect/wingrille_spawn/reinforced/crescent, -/turf/simulated/floor/plating, -/area/centcom/simulated/restaurant) -"WC" = ( -/obj/effect/wingrille_spawn/reinforced/crescent, -/turf/simulated/floor/plating, -/area/centcom/simulated/medical) -"WE" = ( -/obj/effect/wingrille_spawn/reinforced/crescent, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "FrontlockC2"; - name = "Security Door"; - opacity = 0 - }, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plating, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"WF" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/meatballsoup, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"WH" = ( -/obj/item/weapon/stool/padded, -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"WI" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/roastbeef, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"WJ" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor/northleft{ - req_access = list(63); - req_one_access = list(1) - }, -/obj/item/weapon/paper_bin{ - pixel_x = 1; - pixel_y = 9 - }, -/obj/item/weapon/pen, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "FrontlockC2"; - name = "Security Door"; - opacity = 0 - }, -/obj/machinery/door/firedoor, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"WK" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/window/brigdoor/northright{ - req_access = list(63); - req_one_access = list(1) - }, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "FrontlockC2"; - name = "Security Door"; - opacity = 0 - }, -/obj/machinery/computer/skills, -/obj/machinery/door/firedoor, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"WL" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/meatsteak, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"WN" = ( -/obj/structure/bed/chair/wood/wings{ - icon_state = "wooden_chair_wings"; - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"WO" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/drinks/bottle/cola, -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"WP" = ( -/obj/structure/table/woodentable, -/obj/machinery/cash_register/civilian, -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"WQ" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind, -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"WR" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich{ - pixel_w = 0; - pixel_x = 0; - pixel_y = 10 - }, -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"WS" = ( -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"WT" = ( -/obj/structure/bed/chair, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"WU" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/spray/cleaner{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner"; - pixel_x = 2; - pixel_y = 2 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"WV" = ( -/obj/structure/table/woodentable, -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"WW" = ( -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"WZ" = ( -/obj/machinery/vending/coffee, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Xa" = ( -/obj/machinery/vending/sovietsoda, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Xb" = ( -/obj/machinery/vending/snack, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Xc" = ( -/obj/machinery/vending/cola, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Xd" = ( -/obj/machinery/vending/cigarette, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"Xe" = ( -/obj/machinery/smartfridge/drinks, -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"Xf" = ( -/obj/machinery/vending/boozeomat, -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"Xg" = ( -/obj/structure/table/reinforced, -/obj/machinery/chemical_dispenser/bar_soft/full, -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"Xh" = ( -/obj/structure/table/reinforced, -/obj/machinery/chemical_dispenser/bar_alc/full, -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"Xi" = ( -/turf/unsimulated/wall, -/area/centcom/simulated/bar) -"Xj" = ( -/obj/structure/table/standard, -/obj/item/weapon/storage/firstaid/surgery, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Xk" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/multi_tile/glass, -/turf/unsimulated/floor/steel{ - icon_state = "white" - }, -/area/centcom/simulated/medical) -"Xl" = ( -/turf/unsimulated/map/edge, -/area/overmap) -"Xm" = ( -/obj/machinery/door/firedoor, -/turf/unsimulated/floor/steel{ - icon_state = "white" - }, -/area/centcom/simulated/medical) -"Xn" = ( -/obj/structure/sign/greencross, -/turf/unsimulated/wall, -/area/centcom/simulated/medical) -"Xp" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/bathroom) -"Xr" = ( -/obj/structure/bed/chair, -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Xs" = ( -/obj/machinery/computer/card{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - broadcasting = 0; - dir = 1; - frequency = 1475; - icon_state = "intercom"; - listening = 1; - name = "Station Intercom (Security)"; - pixel_x = 0; - pixel_y = 27 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Xv" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Xw" = ( -/obj/structure/bed/chair/office/dark{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Xx" = ( -/obj/machinery/computer/security{ - dir = 8 - }, -/obj/machinery/camera/network/crescent, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Xy" = ( -/obj/structure/table/standard, -/obj/item/stack/nanopaste, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Xz" = ( -/obj/effect/floor_decal/industrial/loading, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"XA" = ( -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 6 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"XB" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 12; - pixel_y = 8 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"XC" = ( -/obj/machinery/computer/secure_data{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"XD" = ( -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"XE" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/centcom/simulated/terminal) -"XH" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/terminal) -"XJ" = ( -/obj/structure/table/glass, -/obj/item/device/healthanalyzer/improved, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"XK" = ( -/obj/structure/table/glass, -/obj/machinery/computer/med_data{ - icon_keyboard = "laptop_key"; - icon_screen = "medlaptop"; - icon_state = "laptop"; - light_color = "#00b000" - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"XM" = ( -/obj/structure/table/glass{ - desc = "It's a table, it has some scracthes..they say 'Mlem'." - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"XN" = ( -/obj/structure/table/glass, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"XP" = ( -/obj/machinery/oxygen_pump/anesthetic, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"XQ" = ( -/obj/machinery/optable, -/obj/machinery/light{ - dir = 8; - icon_state = "tube1" - }, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"XR" = ( -/obj/machinery/computer/operating{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"XS" = ( -/obj/structure/closet/crate/freezer, -/obj/item/weapon/reagent_containers/blood/OMinus, -/obj/item/weapon/reagent_containers/blood/OMinus, -/obj/item/weapon/reagent_containers/blood/OMinus, -/obj/item/weapon/reagent_containers/blood/OMinus, -/obj/item/weapon/reagent_containers/blood/OMinus, -/obj/item/weapon/reagent_containers/blood/OMinus, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"XU" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/obj/machinery/light, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"XV" = ( -/obj/machinery/turretid/stun{ - check_access = 0; - check_anomalies = 0; - check_records = 0; - check_synth = 0; - check_weapons = 0; - control_area = "\improper CentCom Security Arrivals"; - pixel_x = 32; - req_access = list(101); - req_one_access = list(101) - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"XX" = ( -/obj/machinery/computer/crew{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"XZ" = ( -/obj/structure/bed/chair/office/dark, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Ya" = ( -/obj/machinery/camera/network/crescent, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Yb" = ( -/obj/structure/table/glass, -/obj/item/weapon/paper_bin{ - pixel_x = -1; - pixel_y = 3 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Yc" = ( -/obj/structure/table/standard, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Yg" = ( -/obj/structure/sign/department/operational, -/turf/unsimulated/wall, -/area/centcom/simulated/medical) -"Yh" = ( -/obj/effect/floor_decal/industrial/loading{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Yj" = ( -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Yk" = ( -/obj/structure/medical_stand, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Yl" = ( -/obj/machinery/door/airlock/security{ - name = "Security" - }, -/obj/machinery/door/firedoor, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Ym" = ( -/obj/machinery/vending/medical, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Yo" = ( -/obj/structure/closet/secure_closet/medical2, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Yr" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave{ - pixel_y = 5 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Ys" = ( -/obj/machinery/recharger/wallcharger{ - pixel_x = 4; - pixel_y = 26 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Yt" = ( -/obj/effect/floor_decal/rust, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/obj/machinery/light, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/evac) -"Yu" = ( -/obj/machinery/camera/network/crescent, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Yv" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - req_access = list(5) - }, -/obj/machinery/door/firedoor/multi_tile, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Yw" = ( -/obj/machinery/door/airlock/medical{ - name = "Operating Theatre"; - req_access = list(45) - }, -/obj/machinery/door/firedoor, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Yx" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/terminal) -"Yy" = ( -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"YB" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = 0; - pixel_y = 0 - }, -/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = 7; - pixel_y = 1 - }, -/obj/item/weapon/tool/wrench, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YC" = ( -/obj/machinery/atmospherics/unary/cryo_cell, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YD" = ( -/obj/machinery/atmospherics/unary/freezer, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YE" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/main_hall) -"YF" = ( -/obj/structure/table/glass, -/obj/item/device/defib_kit/loaded, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YG" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/living) -"YH" = ( -/obj/structure/table/glass, -/obj/item/weapon/storage/pill_bottle/spaceacillin, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YI" = ( -/obj/structure/table/reinforced, -/obj/item/weapon/melee/baton/loaded, -/obj/item/weapon/melee/baton/loaded, -/obj/item/weapon/gun/energy/taser, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"YJ" = ( -/obj/structure/closet/secure_closet/nanotrasen_security, -/obj/item/weapon/storage/box/handcuffs, -/obj/item/weapon/gun/energy/gun, -/obj/item/weapon/shield/riot, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"YK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 6 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YL" = ( -/obj/machinery/atmospherics/pipe/manifold4w/hidden, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YM" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9; - icon_state = "intact" - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YO" = ( -/obj/machinery/computer/transhuman/designer{ - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YP" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/oxygen/prechilled, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YQ" = ( -/obj/structure/table/glass, -/obj/machinery/chemical_dispenser/full, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YR" = ( -/turf/unsimulated/floor/steel, -/area/centcom/simulated/main_hall) -"YT" = ( -/obj/machinery/chem_master, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YU" = ( -/obj/structure/table/glass, -/obj/machinery/chemical_dispenser/ert, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YV" = ( -/obj/machinery/transhuman/synthprinter, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YW" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YY" = ( -/obj/machinery/bodyscanner{ - dir = 8 - }, -/obj/effect/floor_decal/corner_steel_grid{ - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"YZ" = ( -/obj/machinery/body_scanconsole, -/obj/effect/floor_decal/corner_steel_grid{ - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zb" = ( -/obj/machinery/sleep_console{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zc" = ( -/obj/machinery/sleeper{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zd" = ( -/obj/machinery/computer/transhuman/resleeving{ - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Ze" = ( -/obj/machinery/transhuman/resleever, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zf" = ( -/obj/structure/filingcabinet/chestdrawer{ - name = "Medical Forms" - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zg" = ( -/obj/machinery/clonepod/transhuman/full, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zh" = ( -/obj/structure/table/reinforced, -/obj/item/weapon/reagent_containers/food/drinks/flask/barflask, -/obj/item/weapon/reagent_containers/glass/rag, -/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask, -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"Zi" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/steel, -/area/centcom/simulated/main_hall) -"Zj" = ( -/obj/structure/table/standard, -/obj/item/device/healthanalyzer, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zk" = ( -/obj/structure/table/reinforced, -/obj/item/device/camera, -/obj/item/weapon/storage/box/ids, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Zl" = ( -/obj/structure/table/glass, -/obj/item/weapon/backup_implanter{ - pixel_y = -8 - }, -/obj/item/weapon/backup_implanter{ - pixel_y = 8 - }, -/obj/item/weapon/backup_implanter, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zn" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zp" = ( -/obj/structure/table/reinforced, -/obj/item/weapon/book/manual/security_space_law, -/obj/item/weapon/book/manual/security_space_law, -/obj/machinery/light/small{ - dir = 8; - pixel_y = 0 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Zq" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zr" = ( -/obj/structure/table/standard, -/obj/machinery/light, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zs" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Zt" = ( -/obj/effect/floor_decal/corner_steel_grid/diagonal, -/obj/effect/floor_decal/corner_steel_grid/diagonal{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 8 - }, -/obj/machinery/light, -/turf/simulated/floor/tiled, -/area/centcom/simulated/terminal) -"Zw" = ( -/obj/structure/table/reinforced, -/obj/item/weapon/storage/box/donkpockets, -/obj/item/weapon/storage/box/donkpockets, -/obj/machinery/light/small{ - dir = 8; - pixel_y = 0 - }, -/turf/simulated/floor/tiled, -/area/centcom/simulated/security{ - name = "\improper CentCom Security Arrivals" - }) -"Zx" = ( -/obj/structure/table/glass, -/obj/item/weapon/reagent_containers/glass/beaker/large, -/obj/item/weapon/reagent_containers/glass/beaker/large, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zy" = ( -/obj/structure/table/glass, -/obj/item/weapon/storage/firstaid/adv, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"Zz" = ( -/obj/structure/table/glass, -/obj/item/weapon/reagent_containers/glass/bottle/biomass{ - pixel_x = -4; - pixel_y = 8 - }, -/obj/item/weapon/reagent_containers/glass/bottle/biomass{ - pixel_x = -3; - pixel_y = -2 - }, -/obj/item/weapon/reagent_containers/glass/bottle/biomass{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/centcom/simulated/medical) -"ZA" = ( -/obj/machinery/telecomms/relay/preset/centcom/tether/base_low, -/turf/unsimulated/floor/steel, -/area/centcom/control) -"ZC" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) -"ZD" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/wood, -/area/centcom/simulated/bar) -"ZE" = ( -/obj/machinery/light, -/turf/simulated/floor/wood, -/area/centcom/simulated/restaurant) - -(1,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -"} -(2,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bw -bu -bw -ap -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(3,1,1) = {" -ap -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -ap -cl -cm -cm -cm -cm -cm -cm -cm -cm -cm -cm -cm -cm -cm -cm -cm -dT -er -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(4,1,1) = {" -ap -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -ap -cl -cm -cn -cL -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(5,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(6,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cC -cn -cn -cn -cn -cn -cn -cn -cn -cN -cV -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(7,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cN -cn -dD -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(8,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cn -cn -cn -cn -cV -cn -db -db -cn -cn -cn -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -sF -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(9,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cn -cn -cn -cn -cN -db -df -dn -db -cn -cn -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(10,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cK -cn -cn -cn -cn -db -dg -do -db -cn -cn -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(11,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -cR -cR -aa -aa -aa -aa -aa -aa -aa -aa -aa -cR -cR -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cK -cn -cn -cn -cn -cn -db -db -cn -cn -cn -dy -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(12,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -cR -cR -bs -cR -cR -cR -cR -cR -cR -cR -aa -cR -cR -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cK -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(13,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -cR -cR -bs -cR -cR -cR -ck -cR -cR -cR -aa -cR -cR -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -dz -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(14,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -cR -cR -bs -cR -cR -cR -cR -cR -cR -cR -aa -cR -cR -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cn -cn -cn -cn -cn -cn -cn -cV -cn -cn -cn -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(15,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -cR -cR -bP -cR -cR -cR -cR -cR -cR -cR -aa -cR -cR -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cK -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -dz -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(16,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -cR -cR -bP -cR -cR -cR -cR -cR -cR -cR -aa -cR -cR -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cK -cn -cn -cn -cn -cn -cn -dp -cn -cn -cn -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(17,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -cR -cR -aa -aa -aa -aa -aa -aa -aa -aa -aa -cR -cR -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cK -cn -cN -cL -cn -cn -cn -cn -cn -cn -cn -dC -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(18,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(19,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -cR -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(20,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cn -cn -cn -cn -cn -cn -cn -cn -cn -cL -cN -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(21,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -sF -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(22,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cn -cM -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -cn -dL -eb -eu -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(23,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bw -bu -bw -ap -cl -cm -cm -cm -cm -cm -cm -cm -cm -cm -cm -cm -cm -cm -cm -cm -dT -er -er -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(24,1,1) = {" -ap -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -ap -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -cl -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(25,1,1) = {" -ap -bu -bw -bw -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bu -bw -bu -bw -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(26,1,1) = {" -ap -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -bw -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(27,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(28,1,1) = {" -ap -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(29,1,1) = {" -ap -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(30,1,1) = {" -ap -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(31,1,1) = {" -ap -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(32,1,1) = {" -ap -bx -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -fI -fI -fI -fI -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(33,1,1) = {" -ap -bx -bC -bC -bN -bC -bC -bC -bT -ci -ci -ci -bT -ci -ci -ci -bT -ci -ci -ci -bT -ci -ci -ci -bT -ci -bC -bC -bN -bC -bC -cE -cJ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -ea -ea -ea -fI -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(34,1,1) = {" -ap -bx -bD -bD -bD -bD -bD -bD -cd -cd -bD -bD -bD -bD -bD -bD -co -bD -bD -bD -bD -bD -bD -bD -cp -cp -bD -bD -bD -bD -bD -cF -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -ea -ea -ea -fI -ap -Xl -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -OY -Xl -"} -(35,1,1) = {" -ap -bx -bE -bE -bE -bE -bE -bE -ce -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -cq -bE -bE -bE -bE -bE -cG -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -ea -ea -ea -fI -ap -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -"} -(36,1,1) = {" -ap -bx -bD -bD -bD -bD -bD -bD -cd -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -cp -bD -bD -bD -bD -bD -cF -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cI -cI -cI -cD -cD -cD -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(37,1,1) = {" -ap -bx -bD -bD -bD -bD -bD -bD -cd -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -cp -bD -bD -bD -bD -bD -cF -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cI -cI -cD -cD -cD -cD -cI -cI -cD -cD -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(38,1,1) = {" -ap -bx -bD -bD -bD -bD -bD -bD -cf -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -cp -bD -bD -bD -bD -bD -cF -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cI -cD -cD -dc -cD -cD -cD -cI -cI -cD -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(39,1,1) = {" -ap -bx -bD -bD -bD -bD -bD -bD -cf -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -cp -bD -bD -bD -bD -bD -cF -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cI -cI -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cI -cI -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(40,1,1) = {" -ap -bx -bE -bE -bE -bE -bE -bE -cg -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -bE -cq -bE -bE -bE -bE -bE -cG -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(41,1,1) = {" -ap -bx -bD -bD -bD -bD -bD -bD -cf -cf -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -cp -cp -bD -bD -bD -bD -bD -cF -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cI -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(42,1,1) = {" -ap -bx -bF -bF -bF -bO -bF -bF -ch -cj -ch -ch -ch -cj -ch -ch -ch -cj -ch -ch -ch -cj -ch -ch -ch -cj -bF -bF -bF -bO -bF -cH -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(43,1,1) = {" -ap -bx -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bA -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cI -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(44,1,1) = {" -ap -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(45,1,1) = {" -ap -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cI -cI -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cI -cI -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(46,1,1) = {" -ap -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cI -cI -cD -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(47,1,1) = {" -ap -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -bx -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cI -cI -cD -cD -cD -cD -cI -cI -cD -cD -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(48,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cI -cI -cI -cD -cD -cD -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(49,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(50,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(51,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -ea -ea -ea -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(52,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -fI -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(53,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(54,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ap -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -"} -(55,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(56,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(57,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(58,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(59,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eI -eI -eI -eI -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(60,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(61,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eB -eB -eB -eB -eB -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(62,1,1) = {" -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(63,1,1) = {" -ar -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -ar -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -ar -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(64,1,1) = {" -as -aJ -aJ -aJ -aJ -aJ -aJ -aJ -aJ -aJ -aK -dA -dF -dF -dF -dF -dF -dF -dF -dF -dF -dF -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(65,1,1) = {" -as -aJ -aJ -bd -aJ -aJ -aJ -aJ -aJ -aJ -aJ -dA -dF -dF -dF -ec -dF -dF -dF -dF -ec -dF -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -Vu -Vu -Vu -Vu -Vu -Vu -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eI -eI -eI -eI -eI -eI -eH -eH -eH -eH -eH -eH -eI -eI -eI -eI -eI -eI -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(66,1,1) = {" -as -aJ -aJ -aJ -aJ -aK -aJ -aJ -bd -aJ -aJ -dA -dF -dF -dF -dF -dF -dF -dF -dF -dF -dF -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -Vu -Ru -ey -fy -fl -Vu -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(67,1,1) = {" -as -aK -aJ -aJ -aJ -aJ -aJ -aJ -aJ -aJ -aJ -dA -dF -ec -dF -dF -dF -dF -ec -dF -dF -dF -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -Vu -Vu -Vu -fy -fm -Vu -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(68,1,1) = {" -as -aJ -aJ -aJ -aJ -aJ -aJ -aJ -aJ -aJ -bd -dA -dF -dF -dF -dF -dF -dF -dF -dF -dF -dF -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -Vu -Vu -Vu -fy -fl -Vu -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(69,1,1) = {" -as -aJ -aJ -aJ -aK -aJ -aJ -bd -aJ -aJ -aJ -dA -dF -dF -dF -dF -dF -dF -dF -dF -dF -dF -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -Vu -cW -Ru -fy -fl -Vu -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(70,1,1) = {" -as -aJ -aJ -aJ -aJ -aK -aJ -aJ -aJ -aJ -aJ -dA -dF -dF -dF -ec -dF -dF -dF -dF -ec -dF -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -Vu -Vu -Vu -Vu -Vu -Vu -ae -ae -ae -ae -af -dZ -dZ -dZ -dZ -dZ -Rh -dZ -dZ -dZ -dZ -dZ -dZ -Rh -dZ -dZ -dZ -dZ -dZ -af -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(71,1,1) = {" -as -aJ -aJ -aJ -aJ -aJ -aJ -aJ -aJ -aJ -aJ -dA -dF -dF -dF -dF -dF -dF -dF -dF -dF -dF -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ai -Al -Al -XE -Sl -Al -Al -XE -Al -Al -Al -Al -XE -Al -Al -Sl -XE -Al -Al -SG -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eC -eA -eD -eA -eF -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(72,1,1) = {" -as -aJ -bd -aJ -aJ -aJ -aJ -aJ -aJ -aJ -aJ -dA -dF -ec -dF -dF -dF -dF -ec -dF -dF -dF -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -cX -cX -cX -cX -cX -cX -ae -ae -ae -ae -ai -ET -ET -OR -Pe -Pe -Ri -OR -Pe -Rs -Rt -Pe -OR -Ri -RA -RA -OR -ET -ET -SG -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eB -eC -eC -eF -eF -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(73,1,1) = {" -as -aJ -aJ -aJ -aJ -aJ -aJ -aK -aJ -aJ -bd -dA -dF -dF -dF -dF -dF -dF -dF -dF -dF -dF -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -cX -ap -ap -ap -ap -cX -ae -ae -ae -ae -zK -Fp -OR -Pg -Rd -Rg -QW -Rk -Re -Rg -QX -Rw -Ry -QW -Rg -RD -Pg -OR -Fp -zK -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(74,1,1) = {" -ar -aL -aL -aL -aL -aL -aL -aL -aL -aL -aL -ar -aL -aL -aL -aL -aL -aL -aL -aL -aL -aL -ar -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -cX -ap -ap -ap -ap -cX -ae -ae -ae -ae -ai -ET -Pe -Qa -Re -Rg -QW -QX -Rm -Rg -QX -Re -Rg -QW -QW -QW -RF -Pe -ET -SG -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(75,1,1) = {" -as -aM -be -bf -be -be -be -be -bf -be -aM -dA -dG -dG -dG -dG -dG -dG -dG -fG -dG -dG -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -cX -ap -ap -ap -ap -cX -ae -ae -ae -ae -ai -ET -Pe -QW -QW -QW -QW -QW -QW -QW -QW -QW -QW -QW -QX -QX -Rg -Pe -ET -SG -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(76,1,1) = {" -as -aN -bf -be -bf -bf -bf -bf -be -bf -aN -dA -dG -ed -dG -dG -dG -dG -dG -dG -eT -dG -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -cX -ap -ap -ap -ap -cX -ae -ae -ae -ae -ai -ET -Pe -QW -QW -QW -QW -QW -QW -QW -QW -QW -QW -QW -QX -QX -RG -Pe -ET -SG -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(77,1,1) = {" -as -aM -be -bo -bU -bU -bU -bU -da -be -aM -dA -dG -dG -dG -eJ -dG -dG -dG -dG -dG -dG -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -cX -cX -cX -cX -cX -cX -ae -ae -ae -ae -ai -ET -Pe -QX -Re -Rg -QW -QX -Re -Rg -QX -Re -Rg -QW -QW -QW -QW -Pe -ET -SG -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(78,1,1) = {" -as -aN -bf -bp -bB -bB -bB -bB -cP -bf -aN -dA -dG -dG -dG -dG -eT -dG -dG -dG -eJ -dG -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -zK -Fp -OR -Pg -Rf -Rg -QW -Rl -Ro -Rg -QX -Rx -Rz -QW -RC -RE -Pg -OR -Fp -zK -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(79,1,1) = {" -as -aM -be -bq -an -bS -bS -an -cQ -be -aM -dA -dG -dG -dG -ep -dG -dG -ed -dG -dG -fG -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ai -ET -ET -OR -Pe -Pe -Rj -OR -Pe -Rt -Rt -Pe -OR -Rj -RA -RA -OR -ET -ET -SG -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(80,1,1) = {" -as -aM -bf -bp -an -bS -bS -an -cP -bf -aM -dA -dG -dG -dG -dG -dG -dG -dG -fG -dG -dG -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ai -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -SG -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(81,1,1) = {" -as -aN -be -ag -bB -bB -bB -bB -at -be -aN -dA -dG -ed -dG -dG -dG -dG -eJ -dG -eT -dG -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -Vg -Vg -Vg -Vl -Vh -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Zt -aj -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(82,1,1) = {" -as -aM -bf -bB -bB -ao -aA -bB -bB -bf -aM -dA -dG -dG -dG -dG -dG -dG -dG -dG -dG -dG -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -Vg -Nr -Th -JR -Nq -Nq -Nq -Nq -Nq -Nq -Yx -Nq -Nq -Nq -Nq -Yx -Nq -Nq -Nq -Nq -Nq -Nq -dZ -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eG -"} -(83,1,1) = {" -as -aN -be -bB -ao -ax -aB -aA -bB -bf -aN -dA -dG -dG -ep -dG -eT -dG -dG -dG -eJ -dG -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -Vg -SW -Ti -Rq -Nq -Nq -Nq -Nq -Nq -Nq -wd -dZ -TY -Vv -dZ -dZ -Nq -Nq -Nq -Nq -Nq -Nq -dZ -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eG -"} -(84,1,1) = {" -as -aM -bf -bB -at -bU -bU -ag -bB -be -aM -dA -dG -dG -dG -dG -dG -dG -ed -dG -dG -fG -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -Vg -Tf -Tj -Rv -QY -Pf -XH -SH -SH -QY -TI -Rr -SV -SV -Rr -TI -QY -SH -SH -XH -Pf -QY -dZ -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eH -eS -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eG -"} -(85,1,1) = {" -ar -aL -aL -aL -aL -aL -aL -aL -aL -aL -aL -ar -aL -aL -aL -aL -aL -aL -aL -aL -aL -aL -ar -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -wy -wy -Vg -Vg -Vg -Vg -TI -TI -TI -TI -TI -TI -dZ -Ru -Ru -Ru -Ru -dZ -dZ -dZ -dZ -dZ -dZ -dZ -dZ -VI -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eB -eB -eB -eB -eB -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eG -"} -(86,1,1) = {" -as -aO -bg -bg -bG -bV -bV -bV -bV -bV -dq -dA -dI -dH -dH -eL -eL -eL -eL -eL -eL -eL -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -wy -yA -Ga -xe -wl -TZ -Vi -Vi -Vi -VJ -Vi -VS -Vu -YE -Ru -Ru -Wt -WE -Xs -XC -Zp -VI -Yr -Zw -YI -VI -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eG -"} -(87,1,1) = {" -as -aP -bg -bg -bG -bV -bV -bV -bV -bV -bV -dA -dH -dH -dH -eK -eK -eK -eK -eK -eK -eK -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -wy -rE -Ga -HQ -wl -Up -Vj -Vj -Vj -Vj -Vj -VU -Vu -Ru -Ru -Ru -Wv -WJ -Xv -XD -XD -VI -Ys -XD -YJ -VI -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eG -"} -(88,1,1) = {" -as -aP -bg -bg -bG -bW -ct -ct -ct -dj -bV -dA -dH -dH -dH -eK -eV -fn -fn -fn -fO -eK -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -wy -kF -Ga -Iq -wl -Up -Vj -Vj -Vj -Vj -Vj -VU -Vu -Ru -Ru -Ru -Wv -WK -Xw -XD -XD -VI -Yu -XD -YJ -VI -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(89,1,1) = {" -as -aP -bg -bg -bG -bX -cu -cu -cu -dk -bV -dA -dH -ee -eq -eK -eW -fo -fo -fo -fP -eK -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -wy -pb -Ga -ME -wl -Uu -Vj -Vj -Vm -Vj -Vj -XU -Vu -Ru -Ru -Ru -Wt -WE -Xx -Zk -XV -Yl -Zs -Yy -XD -VI -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eG -"} -(90,1,1) = {" -as -aP -bg -bg -bG -bX -cu -cu -cu -dk -bV -dA -dH -ef -eq -eK -eW -fo -fo -fo -fP -eK -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -wy -kr -Ga -Cw -wl -Up -Vj -Vj -Vm -Vj -Vj -VU -Vu -Ru -Ru -Zi -VI -VI -VI -VI -VI -VI -VI -VI -Yl -VI -Xi -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eG -"} -(91,1,1) = {" -as -aP -bg -bg -bG -bX -cu -cu -cu -dk -bV -dA -dH -ef -eq -eK -eW -fo -fo -fo -fP -eK -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -wy -Ct -Ga -kh -wl -Ur -Vm -Vj -Vj -Vj -Vj -VU -Vu -Ru -Ru -Ru -VM -VQ -WN -VZ -VQ -VQ -WH -ZD -WW -Xe -Xi -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eG -"} -(92,1,1) = {" -as -aP -bg -bg -bG -bX -cu -cu -cu -dk -bV -dA -dH -ef -eq -eK -eW -fo -fo -fo -fP -eK -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -wy -Dc -Ga -hn -wl -Up -Vj -Vj -Vj -Vj -Vj -VU -TJ -Ru -Ru -Ru -WB -VR -Wb -Wl -Wz -VQ -WH -WO -WW -Xf -Xi -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eG -"} -(93,1,1) = {" -as -aP -bg -bg -bG -bY -cv -cv -cv -dl -bV -dA -dH -eg -eq -eK -eW -fo -fo -fo -fP -eK -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -wy -vt -Ga -FW -wl -Up -Vj -Vj -Vj -Vj -Vj -VU -Vw -Ru -Ru -Ru -VK -VR -Wc -Wm -Wz -VQ -WH -WP -WW -Xg -Xi -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eG -"} -(94,1,1) = {" -as -aP -bg -bg -bG -bV -bV -bV -bV -bV -bV -dA -dH -dH -dH -eK -eX -fp -fp -fH -fQ -eK -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -wy -Dn -Ga -ZA -wl -Up -Vj -Vj -Vj -Vj -Vj -VU -Vu -YE -Ru -Ru -VL -VQ -Wd -Wd -VQ -VQ -WH -WQ -WW -Xh -Xi -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eH -eI -eI -eI -eI -eI -eI -eH -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eG -"} -(95,1,1) = {" -as -aP -bg -bg -bH -bZ -bZ -bZ -bZ -dm -dr -dA -dH -dH -dH -eK -eU -eU -eK -eK -eK -eK -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -wy -wy -wy -wy -wl -Up -Vj -Vm -Vj -VN -Vj -VU -Vu -Ru -Ru -Ru -WB -VQ -VQ -VQ -VQ -VQ -WH -WR -WW -Zh -Xi -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eI -eI -eH -eH -eH -eH -eH -eH -eI -eH -eH -eH -eH -eH -eH -eG -"} -(96,1,1) = {" -ar -aL -aL -aL -aL -aL -aL -aL -aL -aL -aL -ar -aL -aL -aL -aL -aL -aL -aL -aL -aL -aL -ar -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Uu -Vj -Vj -Vj -Vj -Vj -Yt -Vu -Ru -Ru -Ru -WB -VQ -VZ -VZ -VQ -VQ -WH -WV -WW -WW -Xi -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eI -eI -eI -eI -eI -eI -eI -eI -eH -eH -eH -eH -eH -eH -eI -eI -eI -eI -eI -eI -eI -eI -eH -eH -eH -eH -eH -eH -eG -"} -(97,1,1) = {" -as -aS -bi -ah -au -ay -ay -ay -ay -aE -aS -dB -dM -eh -eh -eh -eY -fq -fz -fz -fz -fS -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Up -Vj -Vj -Vj -Vm -Vj -VU -Vu -Ru -Ru -Ru -WB -VR -We -Wo -Wz -VQ -VQ -VQ -ZE -VM -Xi -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eB -eC -eA -eE -eA -eF -eB -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(98,1,1) = {" -as -aS -bi -bv -av -az -az -az -az -aF -aS -dB -dN -ei -ei -ei -eZ -fr -ei -ei -ei -fJ -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Us -Vn -Vj -Vj -Vm -VO -VP -Vu -Ru -Ru -Zi -WB -VR -Wk -Wu -Wz -VQ -VQ -VQ -WZ -VM -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eB -eC -eC -eF -eF -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(99,1,1) = {" -as -aS -bi -ak -aw -aw -aw -aw -aw -aw -aw -dB -dM -eh -dN -ei -eZ -fr -ei -fJ -fz -fS -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Ut -Us -Vs -VB -Vs -VP -Ut -Vu -Ru -Ru -Ru -VK -VQ -Wd -Wd -VQ -VZ -VZ -VQ -Xa -VM -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eH -eG -"} -(100,1,1) = {" -as -aS -bi -bi -bI -ca -cw -cS -dd -cS -ds -dB -dO -ei -dN -ei -fa -fr -ei -fJ -ei -fT -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -wl -Vo -Vo -Vo -Vo -Vo -wl -Vu -Ru -Ru -Ru -VL -VQ -VQ -VQ -VR -WA -WI -Wz -Xb -VM -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -eG -"} -(101,1,1) = {" -as -aS -bi -aS -bJ -cb -cx -cT -cy -cT -dt -dB -dP -ej -dN -ei -eZ -fr -ei -fJ -fA -fU -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -TZ -Vi -Vi -Vi -Vi -Vi -VX -Vu -Ru -Ru -Ru -WB -VQ -VQ -VQ -VR -WF -WL -Wz -Xc -VM -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -"} -(102,1,1) = {" -as -aS -bi -bt -bK -cb -cy -cy -cy -cT -dt -dB -dN -ei -ei -ei -eZ -fr -ei -ei -ei -fJ -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Va -Vp -Ut -Ut -Ut -Ut -VU -Vu -YE -Ru -Ru -VM -VY -ZC -VQ -VQ -Wd -Wd -ZC -Xd -VM -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -"} -(103,1,1) = {" -as -aS -bi -aS -bL -cb -cx -cT -cy -cT -dt -dB -dP -ej -ej -ej -fb -fs -fA -fA -fA -fU -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Up -Vq -Ut -Vr -Vr -Ut -VU -Vu -Ru -Ru -Ru -VM -VM -VM -VM -VM -VM -VM -VM -VM -VM -VM -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ez -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -eA -ez -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(104,1,1) = {" -as -aS -bi -bi -bM -cc -cz -cU -de -cU -du -dB -aG -aG -aR -aG -aG -aG -aG -bh -aG -aG -fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Uu -Ut -Vt -Ut -Ut -Ut -XU -Vu -Ru -Ru -Ru -Vd -WS -WS -Zl -XX -Ym -Vd -YB -YK -YP -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ez -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(105,1,1) = {" -as -ab -ad -al -al -al -al -al -aC -al -ab -dB -dK -dK -dJ -dK -dK -dK -dK -dJ -dK -dK -fZ -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -ae -ae -ae -ae -ae -ae -ae -wl -Up -Ut -Ut -Ut -Ut -VD -VU -Vu -Ru -Ru -Ru -WC -WT -WS -XJ -XZ -WS -Vd -YC -YL -YP -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(106,1,1) = {" -as -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -dB -dJ -dJ -dJ -dJ -dJ -dJ -dJ -dJ -dJ -dJ -fZ -aq -uc -uc -uc -uc -uc -uc -uc -uc -uc -uc -uc -aq -ae -ae -ae -ae -ae -ae -ae -wl -Up -Ut -Vr -Ut -Ut -Ut -Wh -Vu -Ru -Ru -Zi -Ve -WS -WS -XK -Ya -WS -Vd -YD -YM -XN -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(107,1,1) = {" -ar -aL -aL -aL -aL -aL -aL -aL -aL -aL -aL -ar -aL -aL -aL -aL -aL -aL -aL -aL -aL -aL -ar -aq -uc -ue -ue -uf -ue -ue -ue -uf -ue -ue -uc -aq -ae -ae -ae -ae -ae -ae -ae -wl -Up -Ut -Ut -Ut -Ut -Ut -VU -TJ -Ru -Ru -Ru -Xk -WS -WS -XM -XZ -WS -Vd -YC -YN -YQ -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(108,1,1) = {" -as -aT -aT -aT -aT -aT -aT -aT -aT -aT -aT -dB -dQ -dQ -dQ -dQ -dQ -dQ -dQ -fK -fR -fR -fZ -aq -uc -uf -uf -uf -uf -ug -uf -uf -uf -uf -uc -aq -ae -ae -ae -ae -ae -ae -ae -wl -Up -Vr -Ut -Ut -Ut -Ut -VU -Vw -Ru -Ru -Ru -Xm -WS -WS -XN -Yb -Zq -Vd -Zx -XZ -YT -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(109,1,1) = {" -as -aT -bj -aT -aT -aT -aT -aT -aT -bj -aT -dB -dQ -dQ -dQ -dQ -dQ -dQ -dQ -fK -fR -fR -fZ -aq -uc -ue -ue -uf -ue -ue -ue -uf -ue -ue -uc -aq -ae -ae -ae -ae -ae -ae -ae -wl -Up -Ut -Ut -VD -Ut -Vr -VV -Vu -Ru -Ru -Ru -Xn -WS -WS -WS -WS -WS -Vd -XN -WS -YU -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(110,1,1) = {" -as -aT -aT -aT -aT -aT -aT -aT -aT -aT -aT -dB -dQ -ek -dQ -dQ -dQ -dQ -dQ -fK -fR -fR -fZ -aq -ud -uf -uf -uf -uf -uf -uf -uf -uf -uf -ud -aq -ae -ae -ae -ae -ae -ae -ae -wl -Up -Ut -Ut -Ut -Ut -Ut -VU -Vu -YE -Ru -Ru -WC -WT -WS -WS -WS -WS -Vd -Vd -Yw -Vd -Vd -Vd -Vd -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cI -cI -cI -cI -cI -cI -cI -cI -cD -cD -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(111,1,1) = {" -as -aT -aT -aT -bj -aT -aT -bj -aT -aT -aT -dB -dQ -dQ -dQ -dQ -dQ -dQ -dQ -fK -fR -fR -fZ -aq -bc -bc -bc -bQ -cs -bc -cs -dh -bc -bc -bc -aq -aq -ae -ae -ae -ae -ae -ae -wl -Uu -Ut -Vr -Ut -Ut -Ut -XU -Vu -Ru -Ru -Ru -WC -WT -WS -WS -WS -WS -Vd -Ym -WS -WS -WS -WS -Zf -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(112,1,1) = {" -as -aT -aT -aT -aT -aT -aT -aT -aT -aT -aT -dB -dQ -dQ -dQ -eM -dQ -dQ -dQ -fK -fR -fR -fZ -aq -bc -bn -by -bR -bn -cO -bn -di -by -bc -bc -cY -aq -ae -ae -ae -ae -ae -ae -wl -Up -Ut -Ut -Ut -Ut -VD -VU -Vu -Ru -Ru -Ru -WC -WT -WS -WS -WS -WS -Yv -WS -WS -WS -YY -WS -WS -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(113,1,1) = {" -as -aT -aT -aT -aT -aT -aT -aT -aT -aT -aT -dB -dQ -dQ -dQ -dQ -dQ -dQ -dQ -fK -fR -fR -fZ -aq -bc -bn -bn -bR -bn -bn -bn -di -bn -bn -dE -cZ -aq -ae -ae -ae -ae -ae -ae -wl -Us -Vn -Ut -VE -Ut -VO -VP -Vu -Ru -Ru -Ru -Vd -WS -WS -Zn -WS -WS -WS -WS -WS -WS -YZ -WS -Zq -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(114,1,1) = {" -as -aT -aT -aT -bj -aT -aT -bj -aT -aT -aT -dB -dQ -dQ -es -dQ -dQ -dQ -dQ -fK -fR -fR -fZ -aq -bc -bn -bn -bR -bn -bn -bn -di -bn -bn -dE -ex -aq -ae -ae -ae -ae -ae -ae -wl -Ut -Us -Vs -VF -Vs -VP -Ut -Vu -Ru -Ru -Zi -Vd -Vd -Vd -Vd -Vd -Vd -Vd -YF -WS -WS -WS -WS -WS -Vd -ae -ae -ae -ae -ae -ae -TK -TM -TK -TM -TM -TM -TM -TM -TM -TK -TM -TM -TK -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(115,1,1) = {" -as -aT -aT -aT -aT -aT -aT -aT -aT -aT -aT -dB -dQ -dQ -et -dQ -fc -dQ -dQ -fK -fR -fR -fZ -aq -bc -bn -bn -bn -bn -bn -bn -bn -bn -bn -dE -cZ -aq -ae -ae -ae -ae -ae -ae -wl -wl -Vo -Vo -Vo -Vo -Vo -wl -Vu -Ru -Ru -Ru -Vd -WU -Xy -XP -Yc -Yc -Vd -Zy -WS -WS -WS -WS -WS -Vd -ae -ae -ae -ae -ae -ae -TM -TN -TK -TT -TX -Ua -Ud -Ug -Ug -TK -TU -Uk -TM -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(116,1,1) = {" -as -aT -bj -aT -aT -aT -aT -aT -aT -bj -aT -dB -dQ -dQ -dQ -dQ -dQ -dQ -dQ -fK -fR -fR -fZ -aq -bc -bn -bz -bn -bn -bn -bn -bn -bz -bc -bc -fF -aq -ae -ae -ae -ae -ae -ae -Vk -Vk -Vk -Vk -Vk -Vk -Vk -Vk -Uv -Ru -Ru -Ru -Vd -Xj -Xz -XQ -Yh -Yc -Vd -YH -WS -WS -Zb -WS -WS -Vd -ae -ae -ae -ae -ae -ae -TM -TP -TS -TU -TP -Ub -TP -TP -TU -TS -TU -Ul -TM -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cI -cD -cD -cD -cD -cD -cD -cD -cr -"} -(117,1,1) = {" -as -aT -aT -aT -aT -aT -aT -aT -aT -aT -aT -dB -dQ -dQ -dQ -dQ -dQ -dQ -dQ -fK -fR -fR -fZ -aq -bc -bc -bc -bc -bc -bc -bc -bc -bc -bc -bc -ap -aq -ae -ae -ae -ae -ae -ae -Vk -Vc -Vz -Vc -Vc -Vz -Vc -Wi -YR -Ru -Ru -Ru -Vd -Zj -XA -XR -Yj -Zr -Yg -WS -WS -WS -Zc -WS -WS -Vd -ae -ae -ae -ae -ae -ae -TM -TQ -TK -TV -TP -TP -TP -TP -Ui -TK -TU -Um -TM -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cI -cD -cD -cD -cD -cD -cD -cr -"} -(118,1,1) = {" -ar -aL -aL -aL -aL -aL -aL -aL -aL -aL -aL -ar -aL -aL -aL -aL -aL -aL -aL -aL -aL -aL -ar -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -ae -ae -ae -ae -ae -ae -Vk -Vc -Vc -Vc -Vc -Vc -Vc -Vk -UE -Ru -Ru -Ru -Vd -Xr -XB -YW -YW -YW -Yw -WS -WS -WS -WS -WS -Zq -Vd -ae -ae -ae -ae -ae -ae -TM -TR -TM -TW -TU -Uc -Uf -Uh -Uj -TM -TU -Uo -TM -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cr -"} -(119,1,1) = {" -as -aU -aU -aU -aU -aU -aU -aU -aU -aU -aU -dB -dU -el -el -el -fd -ft -fB -fB -fB -fV -fZ -aI -aI -aI -ar -aI -aI -aI -ar -aI -aI -aI -ar -ap -ap -ae -ae -ae -ae -ae -ae -Vk -Vf -Vk -Vy -Vk -Vy -Vg -Vg -Vg -Wq -Ws -Ws -Vg -Vg -Vg -WS -WS -WS -Vd -WS -WS -WS -WS -WS -WS -Vd -ae -ae -ae -ae -ae -ae -TK -TM -TK -TM -TM -TM -TM -TM -TM -TK -TM -TM -TK -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cr -"} -(120,1,1) = {" -as -aU -aU -aU -aU -aU -aU -aU -aU -aU -aU -dB -dV -em -em -em -fe -fu -em -em -em -fW -dB -ga -ga -ga -dB -gN -gO -gO -dB -hx -hx -hx -fZ -ap -ap -ae -ae -ae -ae -ae -ae -Vk -Vb -Vk -Xp -Vk -Xp -Vg -Wj -Wp -Ti -YG -Ti -Wp -Wj -Vg -XS -Yk -Yo -Vd -Zz -YO -YV -Zd -Ze -Zg -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cr -"} -(121,1,1) = {" -as -aU -aU -aU -aU -aU -aU -aU -aU -aU -aU -dB -dV -em -em -em -fe -fu -em -em -em -fW -dB -gb -ga -gq -dB -gO -gO -gP -dB -hy -hJ -hO -fZ -ap -ap -ae -ae -ae -ae -ae -ae -Vk -Vk -Vk -Vk -Vk -Vk -Vg -Vg -Vg -Wp -Vg -Wp -Vg -Vg -Vg -Vd -Vd -Vd -Vd -Vd -Vd -Vd -Vd -Vd -Vd -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cr -"} -(122,1,1) = {" -as -aU -aU -aU -aU -aU -aU -aU -aU -aU -aU -dB -dV -em -em -em -fe -fu -em -em -em -fW -dB -gc -ga -gc -dB -gO -gO -gO -dB -hz -hK -hP -fZ -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -Vg -Wj -Vg -Wj -Vg -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cr -"} -(123,1,1) = {" -as -aU -aU -aU -aU -aU -aU -aU -aU -aU -aU -dB -dV -em -em -em -fe -fu -em -em -em -fW -dB -gd -ga -ga -dB -gO -gN -gO -dB -hz -hK -hP -fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -Vg -Vg -Vg -Vg -Vg -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cr -"} -(124,1,1) = {" -as -aU -aU -aU -aU -aU -aU -aU -aU -aU -aU -dB -dV -em -em -em -fe -fu -em -em -em -fW -dB -gc -ga -gq -dB -gO -gO -gO -dB -hA -hL -hQ -fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cr -"} -(125,1,1) = {" -as -aU -aU -aU -aU -aU -aU -aU -aU -aU -aU -dB -dW -en -en -en -ff -fv -fC -fC -fC -fX -dB -gc -ga -gc -dB -gP -gO -gO -dB -hx -hx -hx -fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cI -cD -cD -cD -cD -cD -cD -cr -"} -(126,1,1) = {" -as -aU -aU -aU -aU -aU -aU -aU -aU -aU -aU -dB -aH -aH -aX -aH -aH -aH -aH -br -aH -aH -fZ -aL -aL -aL -ar -aL -aL -aL -ar -aL -aL -aL -ar -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cI -cD -cD -cD -cD -cD -cD -cD -cr -"} -(127,1,1) = {" -as -aU -aU -aU -aU -aU -aU -aU -aU -aU -aU -dB -dS -dS -dR -dS -dS -dS -dS -dR -dS -dS -dB -ge -gl -gr -dB -gQ -gR -gQ -dB -hB -hD -hD -fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(128,1,1) = {" -as -aU -aU -aU -aU -aU -aU -aU -aU -aU -aU -dB -dR -dR -dR -dR -dR -dR -dR -dR -dR -dR -dB -gf -gl -gr -dB -gR -gQ -gR -dB -hC -hC -hC -fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(129,1,1) = {" -ar -aL -aL -aL -aL -aL -aL -aL -aL -aL -aL -ar -aL -aL -aL -aL -aL -aL -aL -aL -aL -aL -as -gg -gl -gr -dB -gQ -hg -gQ -dB -hD -hD -hD -fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cD -fk -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(130,1,1) = {" -as -aY -bk -bk -bk -bk -cA -cA -cA -cA -dv -dB -dX -dY -dY -dY -dY -dY -dY -dY -dY -dY -dB -gh -gl -gr -dB -gR -gQ -gR -dB -hD -hD -hD -fZ -ae -ae -ae -Uw -Ux -Uw -Ux -Ux -Ux -Ux -Ux -Ux -Uw -Ux -Ux -Uw -ae -ae -ae -ae -ae -Sm -Sn -Sm -Sn -Sn -Sn -Sn -Sn -Sn -Sm -Sn -Sn -Sm -ae -ae -ae -ae -ae -ae -SX -SY -SX -SY -SY -SY -SY -SY -SY -SX -SY -SY -SX -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(131,1,1) = {" -as -aZ -bl -bl -bl -bl -bl -bl -bl -bl -dw -dB -dX -dY -dY -eo -eo -eo -eo -dY -dY -dY -dB -gi -gl -gr -dB -gQ -gR -gQ -dB -hE -hE -hE -fZ -ae -ae -ae -Ux -Uz -Uw -UG -UK -UM -UQ -US -US -Uw -UH -UW -Ux -ae -ae -ae -ae -ae -Sn -So -Sm -Su -SA -SB -SE -SK -SK -Sm -Sw -SQ -Sn -ae -ae -ae -ae -ae -ae -SY -SZ -SX -Tk -Tp -Tq -Tu -Ty -Ty -SX -Tl -TC -SY -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(132,1,1) = {" -as -aZ -bl -bl -bl -bl -bl -bl -bl -bl -dw -dB -dY -dY -dY -eN -eN -eN -eN -dY -dY -dY -dB -gf -gl -gr -dB -gR -gQ -gR -dB -hD -hD -hR -fZ -ae -ae -ae -Ux -UA -UF -UH -UA -UN -UA -UA -UH -UF -UH -UX -Ux -ae -ae -ae -ae -ae -Sn -Sp -Ss -Sw -Sp -SC -Sp -Sp -Sw -Ss -Sw -SR -Sn -ae -ae -ae -ae -ae -ae -SY -Ta -Td -Tl -Ta -Tr -Ta -Ta -Tl -Td -Tl -TD -SY -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cI -cI -cI -cI -cI -cI -cI -cI -cD -cD -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(133,1,1) = {" -as -aZ -bl -bl -bl -bl -bl -bl -bl -bl -dw -dB -dY -dY -ev -eO -fg -fg -eQ -fM -eo -dY -fZ -aL -aL -aL -ar -aL -aL -aL -ar -aL -aL -aL -ar -ae -ae -ae -Ux -UC -Uw -UI -UA -UA -UA -UA -UU -Uw -UH -UY -Ux -ae -ae -ae -ae -ae -Sn -Sq -Sm -Sx -Sp -Sp -Sp -Sp -SO -Sm -Sw -SS -Sn -ae -ae -ae -ae -ae -ae -SY -Tb -SX -Tm -Ta -Ta -Ta -Ta -TA -SX -Tl -TE -SY -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cI -cI -cI -cI -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(134,1,1) = {" -as -aZ -bl -bl -bl -bl -bl -bl -bl -bl -dw -dB -dY -eo -ew -eP -fh -fw -fD -fM -eo -dY -dB -gj -gk -gs -dB -gS -gS -gS -dB -hF -hF -hF -fZ -ae -ae -ae -Ux -UD -Ux -UJ -UH -UP -UR -UT -UV -Ux -UH -UZ -Ux -ae -ae -ae -ae -ae -Sn -Sr -Sn -Sz -Sw -SD -SF -SN -SP -Sn -Sw -ST -Sn -ae -ae -ae -ae -ae -ae -SY -Tc -SY -To -Tl -Tt -Tx -Tz -TB -SY -Tl -TH -SY -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(135,1,1) = {" -as -aZ -bl -bl -bl -bl -bl -bl -bl -bl -dw -dB -dY -eo -ew -eP -fi -fx -fD -fM -eo -dY -dB -gk -gm -gk -dB -gS -gS -gS -dB -hF -hF -hF -fZ -ae -ae -ae -Uw -Ux -Uw -Ux -Ux -Ux -Ux -Ux -Ux -Uw -Ux -Ux -Uw -ae -ae -ae -ae -ae -Sm -Sn -Sm -Sn -Sn -Sn -Sn -Sn -Sn -Sm -Sn -Sn -Sm -ae -ae -ae -ae -ae -ae -SX -SY -SX -SY -SY -SY -SY -SY -SY -SX -SY -SY -SX -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(136,1,1) = {" -as -ba -bm -bm -bm -bm -cB -cB -cB -cB -dx -dB -dY -eo -ew -eQ -fj -fj -fE -fN -dY -dY -dB -gk -gn -gk -dB -gS -gS -gS -dB -hF -hF -hF -fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(137,1,1) = {" -as -ac -ac -am -ac -ac -ac -ac -aD -ac -ac -dB -dY -dY -dY -eR -eR -eR -eR -dY -dY -dY -dB -gk -go -gk -dB -gS -gS -gS -dB -hF -hF -hF -fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(138,1,1) = {" -as -aW -aW -aV -aW -aW -aW -aW -aV -aW -aW -dB -dY -dY -dY -eo -eo -eo -eo -dY -dY -fY -dB -gk -gk -gk -dB -gS -gS -gS -dB -hF -hF -hF -fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(139,1,1) = {" -as -aV -aV -aV -aV -aV -aV -aV -aV -aV -aV -dB -dY -dY -dY -dY -dY -dY -dY -dY -dY -fY -dB -gk -gk -gt -dB -gS -gS -gS -dB -hF -hF -hF -fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cD -cr -"} -(140,1,1) = {" -ar -bb -bb -bb -bb -bb -bb -bb -bb -bb -bb -ar -bb -bb -bb -bb -bb -bb -bb -bb -bb -bb -ar -bb -bb -bb -ar -bb -bb -bb -ar -bb -bb -bb -ar -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -cr -"} diff --git a/maps/tether/submaps/beach/_beach.dm b/maps/tether/submaps/beach/_beach.dm index 36e04f92f1..78f367b868 100644 --- a/maps/tether/submaps/beach/_beach.dm +++ b/maps/tether/submaps/beach/_beach.dm @@ -3,6 +3,10 @@ /obj/effect/overmap/visitable/sector/virgo4 name = "Virgo 4" desc = "Home to sand, and things with big fluffy ears." + scanner_desc = @{"[i]Stellar Body[/i]: Virgo 4 +[i]Class[/i]: M-Class Planet +[i]Habitability[/i]: Moderate (High Temperature) +[b]Notice[/b]: Request authorization from planetary authorities before attempting to construct settlements"} icon_state = "globe" color = "#ffd300" //Sandy initial_generic_waypoints = list("beach_e", "beach_c", "beach_nw") diff --git a/maps/tether/submaps/gateway/backup/listeningpost.dmm b/maps/tether/submaps/gateway/backup/listeningpost.dmm deleted file mode 100644 index ee319b99a5..0000000000 --- a/maps/tether/submaps/gateway/backup/listeningpost.dmm +++ /dev/null @@ -1,20206 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/space, -/area/space) -"b" = ( -/obj/effect/blocker, -/turf/space, -/area/space) -"c" = ( -/turf/simulated/wall/r_wall, -/area/awaymission/listeningpost) -"d" = ( -/obj/machinery/power/smes/magical{ - desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; - name = "power storage unit" - }, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"e" = ( -/obj/machinery/door/airlock/external, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"f" = ( -/obj/machinery/door/airlock, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"g" = ( -/turf/simulated/wall, -/area/awaymission/listeningpost) -"h" = ( -/turf/simulated/mineral, -/area/mine/unexplored) -"i" = ( -/turf/simulated/floor, -/area/awaymission/listeningpost) -"j" = ( -/obj/structure/table/standard, -/obj/item/weapon/paper/monitorkey, -/obj/item/device/radio/intercom{ - desc = "Talk through this. Evilly"; - frequency = 1213; - name = "Syndicate Intercom"; - pixel_x = 32; - subspace_transmission = 1; - syndie = 1 - }, -/obj/item/clothing/glasses/regular, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"k" = ( -/obj/structure/table/standard, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"l" = ( -/turf/simulated/mineral/floor/vacuum, -/area/mine/explored) -"m" = ( -/obj/machinery/computer/message_monitor{ - dir = 4 - }, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"n" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/mob/living/simple_mob/humanoid/merc{ - desc = "A weary looking syndicate operative."; - faction = "syndicate" - }, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"o" = ( -/obj/structure/table/standard, -/obj/item/weapon/paper{ - info = "Nothing of interest to report."; - name = "november report" - }, -/obj/item/weapon/pen, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"p" = ( -/obj/item/device/radio/intercom{ - desc = "Talk through this. Evilly"; - frequency = 1213; - name = "Syndicate Intercom"; - pixel_x = 32; - subspace_transmission = 1; - syndie = 1 - }, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"q" = ( -/obj/structure/table/rack, -/obj/item/clothing/suit/space/syndicate, -/obj/item/clothing/mask/gas, -/obj/item/clothing/head/helmet/space/syndicate, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"r" = ( -/obj/machinery/door/airlock, -/obj/item/weapon/paper{ - info = "I wonder how much longer they will accept my empty reports. They will cancel the case soon without results. When the pickup comes, I will tell them I have lost faith in our cause, and beg them to consider a diplomatic solution. How many nuclear teams have been dispatched with those nukes? I must try and prevent more from ever being sent. If they will not listen to reason, I will detonate the warehouse myself. Maybe some day in the immediate future, space will be peaceful, though I don't intend to live to see it. And that is why I write this down- it is my sacrifice that stabilised your worlds, traveller. Spare a thought for me, and please attempt to prevent nuclear proliferation, should it ever rear it's ugly head again. -Donk Co. Operative #451"; - name = "odd report" - }, -/obj/item/weapon/gun/projectile/pistol, -/obj/item/weapon/silencer, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"s" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/simulated/mineral, -/area/mine/unexplored) -"t" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/mineral, -/area/mine/unexplored) -"u" = ( -/obj/structure/disposaloutlet{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/simulated/floor/airless, -/area) -"v" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet/brown, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"w" = ( -/obj/structure/table/standard, -/obj/item/device/flashlight/lamp, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"x" = ( -/obj/machinery/vending/snack, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"y" = ( -/obj/structure/disposalpipe/segment, -/turf/simulated/mineral, -/area/mine/unexplored) -"z" = ( -/obj/machinery/vending/cola, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"A" = ( -/obj/structure/closet, -/obj/item/clothing/gloves/boxing, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"B" = ( -/obj/structure/filingcabinet, -/obj/item/weapon/paper{ - info = "A good start to the operation: intercepted Nanotrasen military communications. A convoy is scheduled to transfer nuclear warheads to a new military base. This is as good a chance as any to get our hands on some heavy weaponry, I suggest we take it."; - name = "april report" - }, -/obj/item/weapon/paper{ - info = "Nothing of real interest to report this month. I have intercepted faint transmissions from what appears to be some sort of pirate radio station. They do not appear to be relevant to my assignment."; - name = "may report" - }, -/obj/item/weapon/paper{ - info = "Nanotrasen communications have been noticably less frequent recently. The pirate radio station I found last month has been transmitting pro-Nanotrasen propaganda. I will continue to monitor it."; - name = "june report" - }, -/obj/item/weapon/paper{ - info = "Nothing of interest to report."; - name = "july report" - }, -/obj/item/weapon/paper{ - info = "Nothing of interest to report."; - name = "august report" - }, -/obj/item/weapon/paper{ - info = "Nothing of interest to report."; - name = "september report" - }, -/obj/item/weapon/paper{ - info = "Nothing of interest to report."; - name = "october report" - }, -/obj/item/weapon/paper{ - info = "1 x Stechtkin pistol - $600
        1 x silencer - $200
        shipping charge - $4360
        total - $5160"; - name = "receipt" - }, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"C" = ( -/obj/structure/table/standard, -/obj/item/weapon/paper{ - info = "Mission Details: You have been assigned to a newly constructed listening post constructed within an asteroid in Nanotrasen space to monitor their plasma mining operations. Accurate intel is crucial to the success of our operatives onboard, do not fail us."; - name = "mission briefing" - }, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"D" = ( -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"E" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/wall/r_wall, -/area/awaymission/listeningpost) -"F" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/simulated/mineral, -/area/mine/unexplored) -"G" = ( -/obj/machinery/door/airlock{ - name = "Toilet" - }, -/turf/simulated/floor, -/area/awaymission/listeningpost) -"H" = ( -/turf/simulated/floor/tiled/freezer, -/area/awaymission/listeningpost) -"I" = ( -/obj/machinery/shower{ - icon_state = "shower"; - dir = 8 - }, -/turf/simulated/floor/tiled/freezer, -/area/awaymission/listeningpost) -"J" = ( -/obj/structure/toilet{ - icon_state = "toilet00"; - dir = 8 - }, -/turf/simulated/floor/tiled/freezer, -/area/awaymission/listeningpost) -"K" = ( -/turf/simulated/mineral/floor, -/area/mine/unexplored) -"L" = ( -/turf/simulated/floor/greengrid, -/area/mine/explored) -"M" = ( -/turf/simulated/mineral/floor, -/area/mine/explored) -"N" = ( -/obj/machinery/gateway{ - icon_state = "off"; - dir = 9 - }, -/turf/simulated/floor/greengrid, -/area/mine/explored) -"O" = ( -/obj/machinery/gateway{ - icon_state = "off"; - dir = 1 - }, -/turf/simulated/floor/greengrid, -/area/mine/explored) -"P" = ( -/obj/machinery/gateway{ - icon_state = "off"; - dir = 5 - }, -/turf/simulated/floor/greengrid, -/area/mine/explored) -"Q" = ( -/obj/machinery/gateway{ - icon_state = "off"; - dir = 8 - }, -/turf/simulated/floor/greengrid, -/area/mine/explored) -"R" = ( -/obj/machinery/gateway/centeraway, -/turf/simulated/floor/greengrid, -/area/mine/explored) -"S" = ( -/obj/machinery/gateway{ - icon_state = "off"; - dir = 4 - }, -/turf/simulated/floor/greengrid, -/area/mine/explored) -"T" = ( -/obj/machinery/gateway{ - icon_state = "off"; - dir = 10 - }, -/turf/simulated/floor/greengrid, -/area/mine/explored) -"U" = ( -/obj/machinery/gateway, -/turf/simulated/floor/greengrid, -/area/mine/explored) -"V" = ( -/obj/machinery/gateway{ - icon_state = "off"; - dir = 6 - }, -/turf/simulated/floor/greengrid, -/area/mine/explored) -"W" = ( -/obj/effect/overmap/visitable/sector/listeningpost, -/turf/space, -/area/space) -"Y" = ( -/obj/effect/shuttle_landmark{ - base_area = /area/space; - base_turf = /turf/space; - flags = 2; - landmark_tag = "tether_excursion_listeningpost"; - name = "Near Asteroid (SE)" - }, -/turf/space, -/area/space) - -(1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -W -a -"} -(3,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(4,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(5,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(6,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(7,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(8,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(9,1,1) = {" -a -a -a -a -a -a -a -a -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -a -a -a -a -a -a -a -a -"} -(10,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(11,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(12,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(13,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(14,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(15,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(16,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(17,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(18,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(19,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(20,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(21,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(22,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(23,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(24,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(25,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(26,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(27,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(28,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(29,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(30,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(31,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(32,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(33,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(34,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(35,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(36,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(37,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(38,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -l -l -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(39,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -l -l -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(40,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(41,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(42,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(43,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(44,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(45,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(46,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(47,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(48,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -l -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(49,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -l -l -l -l -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(50,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(51,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -K -K -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(52,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -K -L -M -h -h -h -h -M -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(53,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -K -L -L -L -h -L -M -M -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(54,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -K -L -L -N -Q -T -L -L -K -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(55,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -L -L -O -R -U -L -L -K -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(56,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -M -L -P -S -V -L -L -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(57,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -M -L -L -L -L -L -M -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(58,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -M -M -L -M -M -M -M -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(59,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -K -K -K -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(60,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(61,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(62,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -a -a -h -h -h -h -a -a -a -l -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(63,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -l -l -l -l -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(64,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(65,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(66,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(67,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(68,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -l -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(69,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -l -l -l -l -l -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(70,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -l -l -l -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(71,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -l -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(72,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -l -a -a -a -a -h -h -h -h -h -h -h -h -h -l -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(73,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -h -h -h -h -h -h -h -h -h -l -l -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(74,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -h -h -h -h -h -h -h -h -h -h -l -a -l -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(75,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -l -a -l -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(76,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -l -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(77,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(78,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(79,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(80,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -c -c -c -c -c -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(81,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -c -v -i -A -c -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(82,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -c -c -c -h -c -w -i -B -c -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(83,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -c -c -m -c -c -c -g -f -g -c -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(84,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -c -j -n -p -i -r -i -i -C -c -c -c -c -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(85,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -c -c -c -k -o -k -i -g -i -i -i -G -H -H -c -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(86,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -c -i -f -i -i -i -i -g -i -i -D -g -I -J -c -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(87,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -c -d -g -i -i -i -q -g -x -z -E -c -c -c -c -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(88,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -c -c -c -e -e -c -c -c -c -c -E -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(89,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -c -i -i -c -h -h -h -h -t -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(90,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -c -i -i -c -h -s -y -y -F -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(91,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -c -e -e -c -h -t -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(92,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -a -a -a -a -h -t -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(93,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -a -a -a -a -a -u -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(94,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(95,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(96,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -a -h -h -h -h -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(97,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -a -a -a -h -h -h -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(98,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -h -h -h -h -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(99,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(100,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(101,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(102,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(103,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(104,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(105,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(106,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(107,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(108,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(109,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(110,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(111,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(112,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(113,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -Y -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(114,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(115,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(116,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(117,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(118,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(119,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(120,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(121,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(122,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(123,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(124,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(125,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(126,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(127,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(128,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(129,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(130,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(131,1,1) = {" -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -"} -(132,1,1) = {" -a -a -a -a -a -a -a -a -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -a -a -a -a -a -a -a -a -"} -(133,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(134,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(135,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(136,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(137,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(138,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(139,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(140,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} diff --git a/maps/tether/submaps/gateway/carpfarm.dm b/maps/tether/submaps/gateway/carpfarm.dm index 687c8f7152..54195554f9 100644 --- a/maps/tether/submaps/gateway/carpfarm.dm +++ b/maps/tether/submaps/gateway/carpfarm.dm @@ -1,7 +1,10 @@ /obj/effect/overmap/visitable/sector/tether_gateway/carpfarm - initial_generic_waypoints = list("tether_excursion_carpfarm") - true_name = "Carp-Infested Outpost" - true_desc = "Scans indicate this outpost has many instances of 'space carp' moving around, along with an assortment of equipment that appears human in origin." + initial_generic_waypoints = list("carpfarm1", "carpfarm2") + scanner_name = "Carp-Infested Outpost" + scanner_desc = @{"[i]Registration[/i]: UNKNOWN +[i]Class[/i]: Installation +[i]Transponder[/i]: None Detected +[b]Notice[/b]: Many spaceborne lifesigns detected"} /area/awaymission/carpfarm icon_state = "blank" diff --git a/maps/tether/submaps/gateway/carpfarm.dmm b/maps/tether/submaps/gateway/carpfarm.dmm index dac1dac648..1dca81d55b 100644 --- a/maps/tether/submaps/gateway/carpfarm.dmm +++ b/maps/tether/submaps/gateway/carpfarm.dmm @@ -2,21 +2,9 @@ "aa" = ( /turf/space, /area/space) -"ab" = ( -/obj/effect/blocker, -/turf/space{ - density = 1; - desc = "You can't go there!"; - name = "The 4th Wall" - }, -/area/space) "ac" = ( /turf/simulated/mineral, /area/space) -"ad" = ( -/obj/effect/blocker, -/turf/space, -/area/space) "ae" = ( /mob/living/simple_mob/animal/space/carp, /turf/space, @@ -763,10 +751,28 @@ }, /turf/simulated/floor/airless, /area/space) +"py" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/space; + base_turf = /turf/space; + landmark_tag = "carpfarm2"; + name = "Area Southeast" + }, +/turf/space, +/area/space) "Fi" = ( /obj/effect/overmap/visitable/sector/tether_gateway/carpfarm, /turf/space, /area/space) +"Zb" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/space; + base_turf = /turf/space; + landmark_tag = "carpfarm1"; + name = "Area Southwest" + }, +/turf/space, +/area/space) (1,1,1) = {" aa @@ -1770,132 +1776,132 @@ aa aa aa aa -ad -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -1912,7 +1918,6 @@ aa aa aa aa -ad aa aa aa @@ -2037,7 +2042,8 @@ aa aa aa aa -ab +aa +aa aa aa aa @@ -2054,7 +2060,6 @@ aa aa aa aa -ad aa aa aa @@ -2179,7 +2184,8 @@ aa aa aa aa -ab +aa +aa aa aa aa @@ -2196,7 +2202,6 @@ aa aa aa aa -ad aa aa aa @@ -2321,7 +2326,8 @@ aa aa aa aa -ab +aa +aa aa aa aa @@ -2338,7 +2344,6 @@ aa aa aa aa -ad aa aa aa @@ -2463,7 +2468,8 @@ aa aa aa aa -ab +aa +aa aa aa aa @@ -2480,7 +2486,6 @@ aa aa aa aa -ad aa aa aa @@ -2605,7 +2610,8 @@ aa aa aa aa -ab +aa +aa aa aa aa @@ -2622,7 +2628,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -2747,7 +2753,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -2764,7 +2770,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -2889,7 +2895,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -2906,7 +2912,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -3031,7 +3037,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -3048,7 +3054,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -3173,7 +3179,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -3190,7 +3196,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -3315,7 +3321,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -3332,7 +3338,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -3457,7 +3463,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -3474,7 +3480,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -3599,7 +3605,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -3616,7 +3622,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -3733,6 +3739,7 @@ aa aa aa aa +Zb aa aa aa @@ -3741,7 +3748,6 @@ aa aa aa aa -ab aa aa aa @@ -3758,7 +3764,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -3883,7 +3889,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -3900,7 +3906,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -4025,7 +4031,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -4042,7 +4048,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -4167,7 +4173,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -4184,7 +4190,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -4309,7 +4315,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -4326,7 +4332,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -4451,7 +4457,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -4468,7 +4474,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -4593,7 +4599,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -4610,7 +4616,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -4735,7 +4741,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -4752,7 +4758,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -4877,7 +4883,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -4894,7 +4900,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -5019,7 +5025,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -5036,7 +5042,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -5161,7 +5167,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -5178,7 +5184,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -5303,7 +5309,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -5320,7 +5326,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -5445,7 +5451,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -5462,7 +5468,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -5587,7 +5593,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -5604,7 +5610,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -5729,7 +5735,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -5746,7 +5752,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -5871,7 +5877,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -5888,7 +5894,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -6013,7 +6019,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -6030,7 +6036,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -6155,7 +6161,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -6172,7 +6178,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -6297,7 +6303,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -6314,7 +6320,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -6439,7 +6445,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -6456,7 +6462,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -6581,7 +6587,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -6598,7 +6604,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -6723,7 +6729,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -6740,7 +6746,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -6865,7 +6871,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -6882,7 +6888,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -7007,7 +7013,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -7024,7 +7030,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -7149,7 +7155,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -7166,7 +7172,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -7291,7 +7297,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -7308,7 +7314,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -7433,7 +7439,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -7450,7 +7456,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -7575,7 +7581,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -7592,7 +7598,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -7717,7 +7723,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -7734,7 +7740,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -7859,7 +7865,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -7876,7 +7882,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -8001,7 +8007,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -8018,7 +8024,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -8143,7 +8149,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -8160,7 +8166,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -8285,7 +8291,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -8302,7 +8308,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -8427,7 +8433,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -8444,7 +8450,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -8569,7 +8575,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -8586,7 +8592,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -8711,7 +8717,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -8728,7 +8734,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -8853,7 +8859,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -8870,7 +8876,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -8995,7 +9001,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -9012,7 +9018,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -9137,7 +9143,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -9154,7 +9160,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -9279,7 +9285,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -9296,7 +9302,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -9421,7 +9427,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -9438,7 +9444,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -9563,7 +9569,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -9580,7 +9586,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -9705,7 +9711,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -9722,7 +9728,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -9847,7 +9853,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -9864,7 +9870,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -9989,7 +9995,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -10006,7 +10012,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -10131,7 +10137,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -10148,7 +10154,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -10273,7 +10279,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -10290,7 +10296,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -10415,7 +10421,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -10432,7 +10438,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -10557,7 +10563,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -10574,7 +10580,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -10699,7 +10705,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -10716,7 +10722,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -10841,7 +10847,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -10858,7 +10864,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -10983,7 +10989,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -11000,7 +11006,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -11125,7 +11131,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -11142,7 +11148,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -11267,7 +11273,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -11284,7 +11290,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -11409,7 +11415,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -11426,7 +11432,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -11551,7 +11557,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -11568,7 +11574,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -11693,7 +11699,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -11710,7 +11716,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -11835,7 +11841,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -11852,7 +11858,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -11977,7 +11983,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -11994,7 +12000,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -12119,7 +12125,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -12136,7 +12142,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -12261,7 +12267,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -12278,7 +12284,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -12403,7 +12409,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -12420,7 +12426,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -12545,7 +12551,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -12562,7 +12568,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -12687,7 +12693,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -12704,7 +12710,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -12829,7 +12835,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -12846,7 +12852,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -12971,7 +12977,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -12988,7 +12994,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -13113,7 +13119,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -13130,7 +13136,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -13255,7 +13261,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -13272,7 +13278,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -13397,7 +13403,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -13414,7 +13420,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -13539,7 +13545,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -13556,7 +13562,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -13681,7 +13687,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -13698,7 +13704,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -13823,7 +13829,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -13840,7 +13846,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -13965,7 +13971,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -13982,7 +13988,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -14107,7 +14113,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -14124,7 +14130,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -14249,7 +14255,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -14266,7 +14272,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -14391,7 +14397,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -14408,7 +14414,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -14533,7 +14539,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -14550,7 +14556,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -14675,7 +14681,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -14692,7 +14698,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -14817,7 +14823,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -14834,7 +14840,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -14959,7 +14965,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -14976,7 +14982,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -15101,7 +15107,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -15118,7 +15124,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -15243,7 +15249,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -15260,7 +15266,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -15385,7 +15391,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -15402,7 +15408,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -15527,7 +15533,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -15544,7 +15550,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -15669,7 +15675,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -15686,7 +15692,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -15811,7 +15817,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -15828,7 +15834,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -15953,7 +15959,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -15970,7 +15976,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -16095,7 +16101,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -16112,7 +16118,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -16237,7 +16243,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -16254,7 +16260,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -16379,7 +16385,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -16396,7 +16402,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -16521,7 +16527,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -16538,7 +16544,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -16663,7 +16669,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -16680,7 +16686,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -16805,7 +16811,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -16822,7 +16828,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -16947,7 +16953,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -16964,7 +16970,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -17089,7 +17095,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -17106,7 +17112,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -17231,7 +17237,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -17248,7 +17254,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -17373,7 +17379,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -17390,7 +17396,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -17515,7 +17521,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -17532,7 +17538,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -17657,7 +17663,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -17674,7 +17680,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -17799,7 +17805,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -17816,7 +17822,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -17941,7 +17947,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -17958,7 +17964,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -18083,7 +18089,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -18100,7 +18106,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -18225,7 +18231,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -18242,7 +18248,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -18367,7 +18373,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -18384,7 +18390,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -18509,7 +18515,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -18526,7 +18532,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -18651,7 +18657,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -18668,7 +18674,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -18793,7 +18799,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -18810,7 +18816,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -18935,7 +18941,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -18952,7 +18958,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -19077,7 +19083,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -19094,7 +19100,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -19219,7 +19225,7 @@ aa aa aa aa -ab +aa aa aa aa @@ -19236,7 +19242,6 @@ aa aa aa aa -ad aa aa aa @@ -19361,7 +19366,8 @@ aa aa aa aa -ab +aa +aa aa aa aa @@ -19378,7 +19384,6 @@ aa aa aa aa -ad aa aa aa @@ -19491,6 +19496,8 @@ aa aa aa aa +py +aa aa aa aa @@ -19503,7 +19510,6 @@ aa aa aa aa -ab aa aa aa @@ -19520,132 +19526,132 @@ aa aa aa aa -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +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/tether/submaps/gateway/listeningpost.dm b/maps/tether/submaps/gateway/listeningpost.dm index ec8d26b5b3..59dc7ce1b4 100644 --- a/maps/tether/submaps/gateway/listeningpost.dm +++ b/maps/tether/submaps/gateway/listeningpost.dm @@ -1,7 +1,10 @@ /obj/effect/overmap/visitable/sector/tether_gateway/listeningpost initial_generic_waypoints = list("tether_excursion_listeningpost") - true_name = "Strange Asteroid" - true_desc = "Scans indicate this asteroid is emitting large amounts of radio-frequency energy, and has indications of life being present." + scanner_name = "Strange Asteroid" + scanner_desc = @{"[i]Registration[/i]: UNKNOWN +[i]Class[/i]: Installation +[i]Transponder[/i]: None Detected +[b]Notice[/b]: Emitting encrypted radio-frequency traffic"} /obj/item/weapon/paper/listneningpost/mission name = "\improper Operation: Watchtower" diff --git a/maps/tether/submaps/gateway/listeningpost.dmm b/maps/tether/submaps/gateway/listeningpost.dmm index daf33f04f7..930ef2e428 100644 --- a/maps/tether/submaps/gateway/listeningpost.dmm +++ b/maps/tether/submaps/gateway/listeningpost.dmm @@ -2,15 +2,11 @@ "a" = ( /turf/space, /area/space) -"b" = ( -/obj/effect/blocker, -/turf/space, -/area/space) "c" = ( /turf/simulated/wall/r_wall, /area/awaymission/listeningpost) "d" = ( -/obj/machinery/power/smes/magical{ +/obj/machinery/power/smes/buildable/point_of_interest{ desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; name = "power storage unit" }, @@ -1469,130 +1465,130 @@ a a a a -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a a a a @@ -1611,7 +1607,6 @@ a a a a -b a a a @@ -1734,7 +1729,8 @@ a a a a -b +a +a a a a @@ -1753,7 +1749,6 @@ a a a a -b a a a @@ -1876,7 +1871,8 @@ a a a a -b +a +a a a a @@ -1895,7 +1891,6 @@ a a a a -b a a a @@ -2018,7 +2013,8 @@ a a a a -b +a +a a a a @@ -2037,7 +2033,6 @@ a a a a -b a a a @@ -2160,7 +2155,8 @@ a a a a -b +a +a a a a @@ -2179,7 +2175,6 @@ a a a a -b a a a @@ -2302,7 +2297,8 @@ a a a a -b +a +a a a a @@ -2321,7 +2317,6 @@ a a a a -b a a a @@ -2444,7 +2439,8 @@ a a a a -b +a +a a a a @@ -2463,7 +2459,6 @@ a a a a -b a a a @@ -2586,7 +2581,8 @@ a a a a -b +a +a a a a @@ -2605,7 +2601,6 @@ a a a a -b a a a @@ -2728,7 +2723,8 @@ a a a a -b +a +a a a a @@ -2747,7 +2743,6 @@ a a a a -b a a a @@ -2870,7 +2865,8 @@ a a a a -b +a +a a a a @@ -2889,7 +2885,6 @@ a a a a -b a a a @@ -3012,7 +3007,8 @@ a a a a -b +a +a a a a @@ -3031,7 +3027,6 @@ a a a a -b a a a @@ -3154,7 +3149,8 @@ a a a a -b +a +a a a a @@ -3173,7 +3169,6 @@ a a a a -b a a a @@ -3296,7 +3291,8 @@ a a a a -b +a +a a a a @@ -3315,7 +3311,7 @@ a a a a -b +a a a a @@ -3438,7 +3434,7 @@ a a a a -b +a a a a @@ -3457,7 +3453,7 @@ a a a a -b +a a a a @@ -3580,7 +3576,7 @@ a a a a -b +a a a a @@ -3599,7 +3595,7 @@ a a a a -b +a a a a @@ -3722,7 +3718,7 @@ a a a a -b +a a a a @@ -3741,7 +3737,7 @@ a a a a -b +a a a a @@ -3864,7 +3860,7 @@ a a a a -b +a a a a @@ -3883,7 +3879,7 @@ a a a a -b +a a a a @@ -4006,7 +4002,7 @@ a a a a -b +a a a a @@ -4025,7 +4021,7 @@ a a a a -b +a a a a @@ -4148,7 +4144,7 @@ a a a a -b +a a a a @@ -4167,7 +4163,7 @@ a a a a -b +a a a a @@ -4290,7 +4286,7 @@ a a a a -b +a a a a @@ -4309,7 +4305,7 @@ a a a a -b +a a a a @@ -4432,7 +4428,7 @@ a a a a -b +a a a a @@ -4451,7 +4447,7 @@ a a a a -b +a a a a @@ -4574,7 +4570,7 @@ a a a a -b +a a a a @@ -4593,7 +4589,7 @@ a a a a -b +a a a a @@ -4716,7 +4712,7 @@ a a a a -b +a a a a @@ -4735,7 +4731,7 @@ a a a a -b +a a a a @@ -4858,7 +4854,7 @@ a a a a -b +a a a a @@ -4877,7 +4873,7 @@ a a a a -b +a a a a @@ -5000,7 +4996,7 @@ a a a a -b +a a a a @@ -5019,7 +5015,7 @@ a a a a -b +a a a a @@ -5142,7 +5138,7 @@ a a a a -b +a a a a @@ -5161,7 +5157,7 @@ a a a a -b +a a a a @@ -5284,7 +5280,7 @@ a a a a -b +a a a a @@ -5303,7 +5299,7 @@ a a a a -b +a a a a @@ -5426,7 +5422,7 @@ a a a a -b +a a a a @@ -5445,7 +5441,7 @@ a a a a -b +a a a a @@ -5568,7 +5564,7 @@ a a a a -b +a a a a @@ -5587,7 +5583,7 @@ a a a a -b +a a a a @@ -5710,7 +5706,7 @@ a a a a -b +a a a a @@ -5729,7 +5725,7 @@ a a a a -b +a a a a @@ -5852,7 +5848,7 @@ a a a a -b +a a a a @@ -5871,7 +5867,7 @@ a a a a -b +a a a a @@ -5994,7 +5990,7 @@ a a a a -b +a a a a @@ -6013,7 +6009,7 @@ a a a a -b +a a a a @@ -6136,7 +6132,7 @@ a a a a -b +a a a a @@ -6155,7 +6151,7 @@ a a a a -b +a a a a @@ -6278,7 +6274,7 @@ a a a a -b +a a a a @@ -6297,7 +6293,7 @@ a a a a -b +a a a a @@ -6420,7 +6416,7 @@ a a a a -b +a a a a @@ -6439,7 +6435,7 @@ a a a a -b +a a a a @@ -6562,7 +6558,7 @@ a a a a -b +a a a a @@ -6581,7 +6577,7 @@ a a a a -b +a a a a @@ -6704,7 +6700,7 @@ a a a a -b +a a a a @@ -6723,7 +6719,7 @@ a a a a -b +a a a a @@ -6846,7 +6842,7 @@ a a a a -b +a a a a @@ -6865,7 +6861,7 @@ a a a a -b +a a a a @@ -6988,7 +6984,7 @@ a a a a -b +a a a a @@ -7007,7 +7003,7 @@ a a a a -b +a a a a @@ -7130,7 +7126,7 @@ a a a a -b +a a a a @@ -7149,7 +7145,7 @@ a a a a -b +a a a a @@ -7272,7 +7268,7 @@ a a a a -b +a a a a @@ -7291,7 +7287,7 @@ a a a a -b +a a a a @@ -7414,7 +7410,7 @@ a a a a -b +a a a a @@ -7433,7 +7429,7 @@ a a a a -b +a a a a @@ -7556,7 +7552,7 @@ a a a a -b +a a a a @@ -7575,7 +7571,7 @@ a a a a -b +a a a a @@ -7698,7 +7694,7 @@ a a a a -b +a a a a @@ -7717,7 +7713,7 @@ a a a a -b +a a a a @@ -7840,7 +7836,7 @@ a a a a -b +a a a a @@ -7859,7 +7855,7 @@ a a a a -b +a a a a @@ -7982,7 +7978,7 @@ a a a a -b +a a a a @@ -8001,7 +7997,7 @@ a a a a -b +a a a a @@ -8124,7 +8120,7 @@ a a a a -b +a a a a @@ -8143,7 +8139,7 @@ a a a a -b +a a a a @@ -8266,7 +8262,7 @@ a a a a -b +a a a a @@ -8285,7 +8281,7 @@ a a a a -b +a a a a @@ -8408,7 +8404,7 @@ a a a a -b +a a a a @@ -8427,7 +8423,7 @@ a a a a -b +a a a a @@ -8550,7 +8546,7 @@ a a a a -b +a a a a @@ -8569,7 +8565,7 @@ a a a a -b +a a a a @@ -8692,7 +8688,7 @@ a a a a -b +a a a a @@ -8711,7 +8707,7 @@ a a a a -b +a a a a @@ -8834,7 +8830,7 @@ a a a a -b +a a a a @@ -8853,7 +8849,7 @@ a a a a -b +a a a a @@ -8976,7 +8972,7 @@ a a a a -b +a a a a @@ -8995,7 +8991,7 @@ a a a a -b +a a a a @@ -9118,7 +9114,7 @@ a a a a -b +a a a a @@ -9137,7 +9133,7 @@ a a a a -b +a a a a @@ -9260,7 +9256,7 @@ a a a a -b +a a a a @@ -9279,7 +9275,7 @@ a a a a -b +a a a a @@ -9402,7 +9398,7 @@ a a a a -b +a a a a @@ -9421,7 +9417,7 @@ a a a a -b +a a a a @@ -9544,7 +9540,7 @@ a a a a -b +a a a a @@ -9563,7 +9559,7 @@ a a a a -b +a a a a @@ -9686,7 +9682,7 @@ a a a a -b +a a a a @@ -9705,7 +9701,7 @@ a a a a -b +a a a a @@ -9828,7 +9824,7 @@ a a a a -b +a a a a @@ -9847,7 +9843,7 @@ a a a a -b +a a a a @@ -9970,7 +9966,7 @@ a a a a -b +a a a a @@ -9989,7 +9985,7 @@ a a a a -b +a a a a @@ -10112,7 +10108,7 @@ a a a a -b +a a a a @@ -10131,7 +10127,7 @@ a a a a -b +a a a a @@ -10254,7 +10250,7 @@ a a a a -b +a a a a @@ -10273,7 +10269,7 @@ a a a a -b +a a a a @@ -10396,7 +10392,7 @@ a a a a -b +a a a a @@ -10415,7 +10411,7 @@ a a a a -b +a a a a @@ -10538,7 +10534,7 @@ a a a a -b +a a a a @@ -10557,7 +10553,7 @@ a a a a -b +a a a a @@ -10680,7 +10676,7 @@ a a a a -b +a a a a @@ -10699,7 +10695,7 @@ a a a a -b +a a a a @@ -10822,7 +10818,7 @@ a a a a -b +a a a a @@ -10841,7 +10837,7 @@ a a a a -b +a a a a @@ -10964,7 +10960,7 @@ a a a a -b +a a a a @@ -10983,7 +10979,7 @@ a a a a -b +a a a a @@ -11106,7 +11102,7 @@ a a a a -b +a a a a @@ -11125,7 +11121,7 @@ a a a a -b +a a a a @@ -11248,7 +11244,7 @@ a a a a -b +a a a a @@ -11267,7 +11263,7 @@ a a a a -b +a a a a @@ -11390,7 +11386,7 @@ a a a a -b +a a a a @@ -11409,7 +11405,7 @@ a a a a -b +a a a a @@ -11532,7 +11528,7 @@ a a a a -b +a a a a @@ -11551,7 +11547,7 @@ a a a a -b +a a a a @@ -11674,7 +11670,7 @@ a a a a -b +a a a a @@ -11693,7 +11689,7 @@ a a a a -b +a a a a @@ -11816,7 +11812,7 @@ a a a a -b +a a a a @@ -11835,7 +11831,7 @@ a a a a -b +a a a a @@ -11958,7 +11954,7 @@ a a a a -b +a a a a @@ -11977,7 +11973,7 @@ a a a a -b +a a a a @@ -12100,7 +12096,7 @@ a a a a -b +a a a a @@ -12119,7 +12115,7 @@ a a a a -b +a a a a @@ -12242,7 +12238,7 @@ a a a a -b +a a a a @@ -12261,7 +12257,7 @@ a a a a -b +a a a a @@ -12384,7 +12380,7 @@ a a a a -b +a a a a @@ -12403,7 +12399,7 @@ a a a a -b +a a a a @@ -12526,7 +12522,7 @@ a a a a -b +a a a a @@ -12545,7 +12541,7 @@ a a a a -b +a a a a @@ -12668,7 +12664,7 @@ a a a a -b +a a a a @@ -12687,7 +12683,7 @@ a a a a -b +a a a a @@ -12810,7 +12806,7 @@ a a a a -b +a a a a @@ -12829,7 +12825,7 @@ a a a a -b +a a a a @@ -12952,7 +12948,7 @@ a a a a -b +a a a a @@ -12971,7 +12967,7 @@ a a a a -b +a a a a @@ -13094,7 +13090,7 @@ a a a a -b +a a a a @@ -13113,7 +13109,7 @@ a a a a -b +a a a a @@ -13236,7 +13232,7 @@ a a a a -b +a a a a @@ -13255,7 +13251,7 @@ a a a a -b +a a a a @@ -13378,7 +13374,7 @@ a a a a -b +a a a a @@ -13397,7 +13393,7 @@ a a a a -b +a a a a @@ -13520,7 +13516,7 @@ a a a a -b +a a a a @@ -13539,7 +13535,7 @@ a a a a -b +a a a a @@ -13662,7 +13658,7 @@ a a a a -b +a a a a @@ -13681,7 +13677,7 @@ a a a a -b +a a a a @@ -13804,7 +13800,7 @@ a a a a -b +a a a a @@ -13823,7 +13819,7 @@ a a a a -b +a a a a @@ -13946,7 +13942,7 @@ a a a a -b +a a a a @@ -13965,7 +13961,7 @@ a a a a -b +a a a a @@ -14088,7 +14084,7 @@ a a a a -b +a a a a @@ -14107,7 +14103,7 @@ a a a a -b +a a a a @@ -14230,7 +14226,7 @@ a a a a -b +a a a a @@ -14249,7 +14245,6 @@ a a a a -b a a a @@ -14372,7 +14367,8 @@ a a a a -b +a +a a a a @@ -14391,7 +14387,6 @@ a a a a -b a a a @@ -14514,7 +14509,8 @@ a a a a -b +a +a a a a @@ -14533,7 +14529,6 @@ a a a a -b a a a @@ -14656,7 +14651,8 @@ a a a a -b +a +a a a a @@ -14675,7 +14671,6 @@ a a a a -b a a a @@ -14798,7 +14793,8 @@ a a a a -b +a +a a a a @@ -14817,7 +14813,6 @@ a a a a -b a a a @@ -14940,7 +14935,8 @@ a a a a -b +a +a a a a @@ -14959,7 +14955,6 @@ a a a a -b a a a @@ -15082,7 +15077,8 @@ a a a a -b +a +a a a a @@ -15101,7 +15097,6 @@ a a a a -b a a a @@ -15224,7 +15219,8 @@ a a a a -b +a +a a a a @@ -15243,7 +15239,6 @@ a a a a -b a a a @@ -15366,7 +15361,8 @@ a a a a -b +a +a a a a @@ -15385,7 +15381,6 @@ a a a a -b a a a @@ -15508,7 +15503,8 @@ a a a a -b +a +a a a a @@ -15527,7 +15523,6 @@ a a a a -b a a a @@ -15650,7 +15645,8 @@ a a a a -b +a +a a a a @@ -15669,7 +15665,6 @@ a a a a -b a a a @@ -15792,7 +15787,8 @@ a a a a -b +a +a a a a @@ -15811,7 +15807,6 @@ a a a a -b a a a @@ -15934,7 +15929,8 @@ a a a a -b +a +a a a a @@ -15953,7 +15949,6 @@ a a a a -b a a a @@ -16076,7 +16071,8 @@ a a a a -b +a +a a a a @@ -16095,7 +16091,6 @@ a a a a -b a a a @@ -16218,7 +16213,8 @@ a a a a -b +a +a a a a @@ -16237,7 +16233,7 @@ a a a a -b +a a a a @@ -16360,7 +16356,7 @@ a a a a -b +a a a a @@ -16379,7 +16375,6 @@ a a a a -b a a a @@ -16502,7 +16497,8 @@ a a a a -b +a +a a a a @@ -16521,7 +16517,6 @@ a a a a -b a a a @@ -16644,7 +16639,8 @@ a a a a -b +a +a a a a @@ -16663,7 +16659,6 @@ a a a a -b a a a @@ -16786,7 +16781,8 @@ a a a a -b +a +a a a a @@ -16805,7 +16801,6 @@ a a a a -b a a a @@ -16928,7 +16923,8 @@ a a a a -b +a +a a a a @@ -16947,7 +16943,6 @@ a a a a -b a a a @@ -17070,7 +17065,8 @@ a a a a -b +a +a a a a @@ -17089,7 +17085,6 @@ a a a a -b a a a @@ -17212,7 +17207,8 @@ a a a a -b +a +a a a a @@ -17231,7 +17227,6 @@ a a a a -b a a a @@ -17354,7 +17349,8 @@ a a a a -b +a +a a a a @@ -17373,7 +17369,6 @@ a a a a -b a a a @@ -17496,7 +17491,8 @@ a a a a -b +a +a a a a @@ -17515,7 +17511,6 @@ a a a a -b a a a @@ -17638,7 +17633,8 @@ a a a a -b +a +a a a a @@ -17657,7 +17653,6 @@ a a a a -b a a a @@ -17780,7 +17775,8 @@ a a a a -b +a +a a a a @@ -17799,7 +17795,6 @@ a a a a -b a a a @@ -17922,7 +17917,8 @@ a a a a -b +a +a a a a @@ -17941,7 +17937,6 @@ a a a a -b a a a @@ -18064,7 +18059,8 @@ a a a a -b +a +a a a a @@ -18083,7 +18079,6 @@ a a a a -b a a a @@ -18206,7 +18201,8 @@ a a a a -b +a +a a a a @@ -18225,7 +18221,6 @@ a a a a -b a a a @@ -18348,7 +18343,8 @@ a a a a -b +a +a a a a @@ -18367,7 +18363,6 @@ a a a a -b a a a @@ -18490,7 +18485,8 @@ a a a a -b +a +a a a a @@ -18509,7 +18505,6 @@ a a a a -b a a a @@ -18632,7 +18627,8 @@ a a a a -b +a +a a a a @@ -18651,7 +18647,6 @@ a a a a -b a a a @@ -18774,7 +18769,8 @@ a a a a -b +a +a a a a @@ -18793,7 +18789,6 @@ a a a a -b a a a @@ -18916,7 +18911,8 @@ a a a a -b +a +a a a a @@ -18935,130 +18931,130 @@ a a a a -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a a a a diff --git a/maps/tether/submaps/gateway/snow_outpost.dm b/maps/tether/submaps/gateway/snow_outpost.dm index a4b1b078ed..376401b11a 100644 --- a/maps/tether/submaps/gateway/snow_outpost.dm +++ b/maps/tether/submaps/gateway/snow_outpost.dm @@ -1,7 +1,10 @@ /obj/effect/overmap/visitable/sector/tether_gateway/snowoutpost initial_generic_waypoints = list("tether_excursion_snow_outpost") - true_name = "Snowy Outpost" - true_desc = "Scans indicate this planetoid has a very cold atmosphere and almost perpetual snow. There are signs of habitation on the surface." + scanner_name = "Snowy Outpost" + scanner_desc = @{"[i]Stellar Body[/i]>: UNKNOWN +[i]Class[/i]>: M-Class Planetoid +[i]Habitability[/i]>: Moderate (Low Temperature) +[b]Notice[/b]>: Various small outposts and extensive cave network detected on surface"} // -- Areas -- // diff --git a/maps/tether/submaps/gateway/snow_outpost.dmm b/maps/tether/submaps/gateway/snow_outpost.dmm index 5f4beae397..852e1e9a03 100644 --- a/maps/tether/submaps/gateway/snow_outpost.dmm +++ b/maps/tether/submaps/gateway/snow_outpost.dmm @@ -340,7 +340,7 @@ /turf/simulated/floor/tiled/white, /area/awaymission/snow_outpost/powered) "bl" = ( -/obj/machinery/power/smes/magical, +/obj/machinery/power/smes/buildable/point_of_interest, /turf/simulated/floor/tiled/white, /area/awaymission/snow_outpost/powered) "bm" = ( diff --git a/maps/tether/submaps/gateway/snowfield.dm b/maps/tether/submaps/gateway/snowfield.dm index ce983e82ca..256c52b2f0 100644 --- a/maps/tether/submaps/gateway/snowfield.dm +++ b/maps/tether/submaps/gateway/snowfield.dm @@ -1,8 +1,10 @@ /obj/effect/overmap/visitable/sector/tether_gateway/snowfield initial_generic_waypoints = list("tether_excursion_snowfield") - true_name = "Snowy Field" - true_desc = "Scans indicate this planetoid has a very cold atmosphere and almost perpetual snow." - + scanner_name = "Snowy Field" + scanner_desc = @{"[i]Stellar Body[/i]: UNKNOWN +[i]Class[/i]: M-Class Planetoid +[i]Habitability[/i]: Moderate (Low Temperature) +[b]Notice[/b]: Very cold atmosphere, minimal life signs detected"} // -- Areas -- // diff --git a/maps/tether/submaps/offmap/talon.dm b/maps/tether/submaps/offmap/talon.dm index 8868704009..2324d2ddc1 100644 --- a/maps/tether/submaps/offmap/talon.dm +++ b/maps/tether/submaps/offmap/talon.dm @@ -34,19 +34,21 @@ var/global/list/latejoin_talon = list() /////////////////////////// //// The Talon /obj/effect/overmap/visitable/ship/talon - name = "ITV Talon" - desc = "A semi-modern make of ship from Haephestus, registered as the ITV 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_fore", "talon_aft", "talon_port", "talon_starboard") initial_restricted_waypoints = list("Talon's boat" = list("offmap_spawn_talonboat"), "Talon lifeboat" = list("offmap_spawn_talon_lifeboat")) - -/obj/effect/overmap/visitable/ship/talon/get_skybox_representation() - var/image/I = image('talon.dmi', "skybox") - I.pixel_x = 270 - I.pixel_y = 60 - return I + 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 @@ -152,15 +154,22 @@ Once in open space, consider disabling nonessential power-consuming electronics /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 -/obj/machinery/drone_fabricator/talon/create_drone(var/client/player) - var/mob/living/silicon/robot/drone/new_drone = ..() - if(!istype(new_drone)) - return +/mob/living/silicon/robot/drone/talon + foreign_droid = TRUE + idcard_type = /obj/item/weapon/card/id/synthetic/talon - new_drone.foreign_droid = TRUE +/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" - return new_drone +/obj/item/weapon/card/id/synthetic/talon/Initialize() + . = ..() + access = list(access_talon, access_synth) /obj/machinery/power/smes/buildable/offmap_spawn/New() ..(1) diff --git a/maps/tether/submaps/offmap/talon.dmi b/maps/tether/submaps/offmap/talon.dmi index 3fc9497549..bf2498a803 100644 Binary files a/maps/tether/submaps/offmap/talon.dmi and b/maps/tether/submaps/offmap/talon.dmi differ diff --git a/maps/tether/submaps/offmap/talon1.dmm b/maps/tether/submaps/offmap/talon1.dmm index 69e0bf463d..940a54493e 100644 --- a/maps/tether/submaps/offmap/talon1.dmm +++ b/maps/tether/submaps/offmap/talon1.dmm @@ -16,10 +16,6 @@ dir = 1 }, /obj/machinery/door/firedoor/glass/talon, -/obj/machinery/door/blast/regular/open{ - dir = 4; - id = "talon_windows" - }, /turf/simulated/floor/plating, /area/talon/deckone/bridge) "ae" = ( @@ -151,6 +147,11 @@ icon_state = "tube1"; pixel_y = 0 }, +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "talon_sensor"; + name = "sensor blast shields" + }, /turf/simulated/floor/tiled/techfloor/grid, /area/talon/deckone/bridge) "as" = ( @@ -671,7 +672,8 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/dark, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, /area/talon/deckone/bridge_hallway) "bx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -928,13 +930,15 @@ /turf/simulated/floor/plating, /area/talon/maintenance/deckone_port) "bT" = ( -/obj/structure/toilet{ - dir = 4 - }, /obj/machinery/light/small{ icon_state = "bulb1"; dir = 1 }, +/obj/structure/toilet, +/obj/machinery/door/window/brigdoor/eastleft{ + dir = 8; + req_access = list(301) + }, /turf/simulated/floor/tiled/white, /area/talon/deckone/bridge_hallway) "bU" = ( @@ -1198,7 +1202,8 @@ name = "Talon Port Solar Panels"; name_tag = "TLN-PRT-SLR" }, -/turf/simulated/floor/tiled/techfloor/grid, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, /area/talon/deckone/port_solar) "cs" = ( /obj/machinery/power/terminal{ @@ -1208,6 +1213,9 @@ d2 = 8; icon_state = "0-8" }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, /turf/simulated/floor/tiled/techfloor, /area/talon/deckone/port_solar) "ct" = ( @@ -1348,6 +1356,9 @@ d2 = 4; icon_state = "0-4" }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, /turf/simulated/floor/tiled/techfloor, /area/talon/deckone/starboard_solar) "cI" = ( @@ -1365,7 +1376,8 @@ name = "Talon Starboard Solar Panels"; name_tag = "TLN-SBD-SLR" }, -/turf/simulated/floor/tiled/techfloor/grid, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, /area/talon/deckone/starboard_solar) "cJ" = ( /obj/machinery/alarm/talon{ @@ -1385,6 +1397,11 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/talon/deckone/port_solar) "cL" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/tiled/techfloor, /area/talon/deckone/port_solar) "cM" = ( @@ -1409,7 +1426,8 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, /area/talon/deckone/port_solar) "cO" = ( /obj/structure/cable/green{ @@ -1559,7 +1577,8 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, /area/talon/deckone/starboard_solar) "cY" = ( /obj/structure/cable/green{ @@ -1570,6 +1589,11 @@ /turf/simulated/floor/tiled/techfloor, /area/talon/deckone/starboard_solar) "cZ" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/tiled/techfloor, /area/talon/deckone/starboard_solar) "da" = ( @@ -1592,6 +1616,7 @@ /area/talon/maintenance/deckone_starboard) "dc" = ( /obj/structure/table/standard, +/obj/fiftyspawner/phoron, /turf/simulated/floor/tiled/techfloor/grid, /area/talon/deckone/port_solar) "dd" = ( @@ -1599,11 +1624,23 @@ dir = 1; pixel_y = -25 }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/tiled/techfloor, /area/talon/deckone/port_solar) "de" = ( /obj/machinery/light/small, -/turf/simulated/floor/tiled/techfloor, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/talon/deckone/port_solar) "df" = ( /obj/structure/cable/green, @@ -1688,17 +1725,30 @@ /area/talon/deckone/starboard_solar) "dm" = ( /obj/machinery/light/small, -/turf/simulated/floor/tiled/techfloor, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/talon/deckone/starboard_solar) "dn" = ( /obj/machinery/alarm/talon{ dir = 1; pixel_y = -25 }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, /turf/simulated/floor/tiled/techfloor, /area/talon/deckone/starboard_solar) "do" = ( /obj/structure/table/standard, +/obj/fiftyspawner/phoron, /turf/simulated/floor/tiled/techfloor/grid, /area/talon/deckone/starboard_solar) "dp" = ( @@ -3803,7 +3853,8 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/tiled/steel, +/obj/effect/catwalk_plated, +/turf/simulated/floor/plating, /area/talon/deckone/central_hallway) "gP" = ( /obj/machinery/computer/ship/navigation/telescreen{ @@ -3923,6 +3974,7 @@ /obj/structure/table/standard, /obj/item/weapon/storage/toolbox/electrical, /obj/item/stack/marker_beacon/thirty, +/obj/item/weapon/pipe_dispenser, /turf/simulated/floor/tiled/techfloor, /area/talon/deckone/port_eng_store) "he" = ( @@ -4497,7 +4549,8 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/steel, +/obj/effect/catwalk_plated, +/turf/simulated/floor/plating, /area/talon/deckone/central_hallway) "hX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -4586,7 +4639,8 @@ icon_state = "pipe-s"; dir = 4 }, -/turf/simulated/floor/tiled/steel, +/obj/effect/catwalk_plated, +/turf/simulated/floor/plating, /area/talon/deckone/central_hallway) "ic" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -5012,7 +5066,8 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/tiled/techmaint, +/obj/effect/catwalk_plated, +/turf/simulated/floor/plating, /area/talon/deckone/port_eng) "iJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -5117,7 +5172,8 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techmaint, +/obj/effect/catwalk_plated, +/turf/simulated/floor/plating, /area/talon/deckone/starboard_eng) "iU" = ( /obj/effect/floor_decal/industrial/outline/grey, @@ -5227,6 +5283,10 @@ }, /obj/effect/map_helper/airlock/atmos/chamber_pump, /obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/talonboat) "jh" = ( @@ -5559,13 +5619,6 @@ }, /turf/simulated/wall/rshull, /area/talon/deckone/port_eng) -"ka" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ - icon_state = "map-fuel"; - dir = 1 - }, -/turf/simulated/wall/rshull, -/area/talon/deckone/port_eng) "kb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ icon_state = "intact-fuel"; @@ -5602,17 +5655,17 @@ /turf/simulated/wall/rshull, /area/talon/deckone/starboard_eng) "kg" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ - icon_state = "map-fuel"; - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 9 }, /turf/simulated/wall/rshull, /area/talon/deckone/starboard_eng) "kh" = ( -/obj/machinery/atmospherics/unary/engine{ - dir = 1 +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 9 }, -/turf/space, +/turf/simulated/floor/reinforced/airless, /area/talon/deckone/port_eng) "ki" = ( /obj/machinery/door/blast/regular{ @@ -5623,10 +5676,10 @@ /turf/simulated/floor/plating, /area/talon/deckone/central_hallway) "kj" = ( -/obj/machinery/atmospherics/unary/engine{ - dir = 1 +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 9 }, -/turf/space, +/turf/simulated/floor/reinforced/airless, /area/talon/deckone/starboard_eng) "kk" = ( /obj/structure/catwalk, @@ -6173,6 +6226,7 @@ pixel_x = 24 }, /obj/structure/cable/green, +/obj/machinery/light/small, /turf/simulated/floor/tiled/techfloor, /area/shuttle/talonboat) "lz" = ( @@ -6290,7 +6344,7 @@ "nv" = ( /obj/machinery/door/blast/regular/open{ dir = 4; - id = "talon_windows" + id = "talon_sensor" }, /turf/space, /area/talon/maintenance/deckone_port) @@ -6350,11 +6404,6 @@ /turf/simulated/floor/reinforced/airless, /area/talon/maintenance/deckone_port_fore_wing) "pz" = ( -/obj/structure/cable/green{ - d2 = 8; - dir = 2; - icon_state = "0-8" - }, /obj/machinery/power/pointdefense{ id_tag = "talon_pd" }, @@ -6364,6 +6413,9 @@ /obj/effect/floor_decal/techfloor{ dir = 4 }, +/obj/structure/cable/green{ + icon_state = "0-8" + }, /turf/simulated/floor/reinforced/airless, /area/talon/maintenance/deckone_starboard_fore_wing) "qA" = ( @@ -6619,6 +6671,9 @@ /obj/item/clothing/accessory/holster/waist, /turf/simulated/floor/tiled/dark, /area/talon/deckone/armory) +"yg" = ( +/turf/space, +/area/talon/deckone/starboard_eng) "ym" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -6881,10 +6936,6 @@ /turf/simulated/floor/tiled/steel, /area/talon/deckone/central_hallway) "Gj" = ( -/obj/structure/cable/green{ - icon_state = "0-1"; - dir = 1 - }, /obj/machinery/power/pointdefense{ id_tag = "talon_pd" }, @@ -6894,8 +6945,18 @@ /obj/effect/floor_decal/techfloor{ dir = 8 }, +/obj/structure/cable/green{ + icon_state = "0-2" + }, /turf/simulated/floor/reinforced/airless, /area/talon/maintenance/deckone_starboard_aft_wing) +"Gu" = ( +/obj/structure/catwalk, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/talon/maintenance/deckone_starboard) "Gy" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -6910,6 +6971,12 @@ }, /turf/simulated/floor/tiled/steel, /area/talon/deckone/secure_storage) +"GP" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/deckone/starboard_eng) "Hb" = ( /obj/structure/catwalk, /turf/space, @@ -6955,6 +7022,12 @@ }, /turf/simulated/floor/reinforced/airless, /area/talon/maintenance/deckone_starboard_aft_wing) +"JI" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon/deckone/port_eng) "JJ" = ( /obj/effect/floor_decal/industrial/warning/dust/corner{ dir = 8 @@ -7066,6 +7139,12 @@ }, /turf/simulated/floor/tiled/dark, /area/talon/deckone/brig) +"LJ" = ( +/obj/machinery/shower, +/obj/item/weapon/soap/deluxe, +/obj/structure/curtain, +/turf/simulated/floor/tiled/steel_ridged, +/area/talon/deckone/bridge_hallway) "LX" = ( /obj/effect/floor_decal/emblem/talon, /turf/simulated/floor/reinforced/airless, @@ -7157,9 +7236,6 @@ /turf/simulated/floor/reinforced/airless, /area/talon/maintenance/deckone_starboard_aft_wing) "On" = ( -/obj/structure/cable/green{ - icon_state = "0-4" - }, /obj/machinery/power/pointdefense{ id_tag = "talon_pd" }, @@ -7169,22 +7245,24 @@ /obj/effect/floor_decal/techfloor{ dir = 8 }, +/obj/structure/cable/green{ + icon_state = "0-4" + }, /turf/simulated/floor/reinforced/airless, /area/talon/maintenance/deckone_port_fore_wing) "Ow" = ( /obj/machinery/power/pointdefense{ id_tag = "talon_pd" }, -/obj/structure/cable/green{ - icon_state = "0-1"; - dir = 1 - }, /obj/effect/floor_decal/techfloor{ dir = 8 }, /obj/effect/floor_decal/techfloor{ dir = 4 }, +/obj/structure/cable/green{ + icon_state = "0-2" + }, /turf/simulated/floor/reinforced/airless, /area/talon/maintenance/deckone_port_aft_wing) "OF" = ( @@ -7200,6 +7278,12 @@ }, /turf/simulated/floor/reinforced/airless, /area/talon/maintenance/deckone_starboard_fore_wing) +"OS" = ( +/obj/machinery/atmospherics/unary/engine/bigger{ + dir = 1 + }, +/turf/space, +/area/talon/deckone/port_eng) "Pi" = ( /obj/structure/catwalk, /turf/space, @@ -7216,6 +7300,19 @@ }, /turf/simulated/floor/tiled/techmaint, /area/talon/deckone/workroom) +"Qi" = ( +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_windows" + }, +/turf/space, +/area/talon/deckone/bridge) +"QJ" = ( +/obj/machinery/atmospherics/unary/engine/bigger{ + dir = 1 + }, +/turf/space, +/area/talon/deckone/starboard_eng) "Rc" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 @@ -7249,6 +7346,9 @@ }, /turf/simulated/floor/reinforced/airless, /area/talon/maintenance/deckone_starboard_aft_wing) +"SX" = ( +/turf/space, +/area/talon/deckone/port_eng) "TP" = ( /obj/structure/cable/green{ d1 = 1; @@ -7369,6 +7469,11 @@ /obj/structure/cable/green{ icon_state = "1-8" }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plating, /area/talon/maintenance/deckone_starboard) "Xi" = ( @@ -7474,7 +7579,8 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/steel, +/obj/effect/catwalk_plated, +/turf/simulated/floor/plating, /area/talon/deckone/central_hallway) (1,1,1) = {" @@ -15348,7 +15454,7 @@ MJ RD aa aC -aL +jh nL mv WL @@ -15811,7 +15917,7 @@ jL jS jZ kh -aa +OS aa aa aa @@ -15951,9 +16057,9 @@ js jB jM jT -ka -kh -aa +kb +JI +SX aa aa aa @@ -16235,9 +16341,9 @@ ju jC jM jT -ka +kc kh -aa +OS aa aa aa @@ -16377,9 +16483,9 @@ iL jD jN Xi -kc -kh -aa +ji +JI +SX aa aa aa @@ -16626,7 +16732,7 @@ bq bK aR aM -jh +aM cf aM cw @@ -16767,7 +16873,7 @@ bo bq GF bQ -bQ +LJ aM cf aM @@ -17178,7 +17284,7 @@ aa aa aa aa -aa +Qi ad ag an @@ -17320,7 +17426,7 @@ aa aa aa aa -aa +Qi ad ah ao @@ -17462,7 +17568,7 @@ aa aa aa aa -aa +Qi ad ai ap @@ -18367,7 +18473,7 @@ jO Im kd kj -aa +QJ aa aa aa @@ -18507,9 +18613,9 @@ jv jG jP jW -ke -kj -aa +kf +GP +yg aa aa aa @@ -18757,7 +18863,7 @@ aK aK aK aP -aP +vv cp cH cZ @@ -18793,7 +18899,7 @@ jP jW ke kj -aa +QJ aa aa aa @@ -18899,7 +19005,7 @@ nR aa aK aP -aP +vv co cI da @@ -18934,8 +19040,8 @@ jI jQ jX kg -kj -aa +GP +yg aa aa aa @@ -19041,7 +19147,7 @@ vn aa aK aP -aP +vv co co co @@ -19183,7 +19289,7 @@ vn aa aK aP -aP +vv aP aO db @@ -19325,7 +19431,7 @@ XT aa aK jp -aP +Gu Fc DQ Fc diff --git a/maps/tether/submaps/offmap/talon2.dmm b/maps/tether/submaps/offmap/talon2.dmm index 8583caa37f..e23d847942 100644 --- a/maps/tether/submaps/offmap/talon2.dmm +++ b/maps/tether/submaps/offmap/talon2.dmm @@ -1448,7 +1448,8 @@ icon_state = "2-8" }, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/steel, +/obj/effect/catwalk_plated, +/turf/simulated/floor/plating, /area/talon/decktwo/central_hallway) "cR" = ( /obj/structure/cable/green{ @@ -4374,7 +4375,8 @@ icon_state = "pipe-j2"; dir = 2 }, -/turf/simulated/floor/tiled/steel, +/obj/effect/catwalk_plated, +/turf/simulated/floor/plating, /area/talon/decktwo/central_hallway) "hT" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ @@ -5362,8 +5364,7 @@ /area/talon/maintenance/decktwo_solars) "Ou" = ( /obj/structure/cable/green{ - icon_state = "0-1"; - dir = 1 + icon_state = "0-2" }, /obj/machinery/power/pointdefense{ id_tag = "talon_pd" @@ -5377,14 +5378,6 @@ /turf/simulated/floor/reinforced/airless, /area/talon/maintenance/decktwo_solars) "Ow" = ( -/obj/structure/cable/green{ - icon_state = "0-1"; - dir = 1 - }, -/obj/structure/cable/green{ - icon_state = "0-1"; - dir = 1 - }, /obj/machinery/power/pointdefense{ id_tag = "talon_pd" }, @@ -5394,6 +5387,9 @@ /obj/effect/floor_decal/techfloor{ dir = 4 }, +/obj/structure/cable/green{ + icon_state = "0-2" + }, /turf/simulated/floor/reinforced/airless, /area/talon/maintenance/decktwo_solars) "Pk" = ( @@ -5577,7 +5573,6 @@ id_tag = "talon_pd" }, /obj/structure/cable/green{ - d2 = 4; icon_state = "0-4" }, /obj/effect/floor_decal/techfloor{ diff --git a/maps/tether/submaps/om_ships/aro.dm b/maps/tether/submaps/om_ships/aro.dm index f4f0267662..b6ef237453 100644 --- a/maps/tether/submaps/om_ships/aro.dm +++ b/maps/tether/submaps/om_ships/aro.dm @@ -51,11 +51,10 @@ initial_generic_waypoints = list("aronai_fore", "aronai_aft", "aronai_port", "aronai_starboard") initial_restricted_waypoints = list("Aro's Ship's Boat" = list("omship_spawn_aroboat")) -/obj/effect/overmap/visitable/ship/aro/get_skybox_representation() - var/image/I = image('aro.dmi', "skybox") - I.pixel_x = 120 - I.pixel_y = 120 - return I + skybox_icon = 'aro2.dmi' + skybox_icon_state = "skybox" + skybox_pixel_x = 120 + skybox_pixel_y = 120 // The shuttle's 'shuttle' computer /obj/machinery/computer/shuttle_control/explore/aroboat diff --git a/maps/tether/submaps/om_ships/aro.dmi b/maps/tether/submaps/om_ships/aro.dmi deleted file mode 100644 index 139ef42bbe..0000000000 Binary files a/maps/tether/submaps/om_ships/aro.dmi and /dev/null differ diff --git a/maps/tether/submaps/om_ships/aro.dmm b/maps/tether/submaps/om_ships/aro.dmm index 65903eee22..5322661bb8 100644 --- a/maps/tether/submaps/om_ships/aro.dmm +++ b/maps/tether/submaps/om_ships/aro.dmm @@ -2937,7 +2937,7 @@ dir = 1 }, /obj/structure/table/rack/shelf/steel, -/obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64, +/obj/item/mecha_parts/mecha_equipment/omni_shield, /turf/simulated/floor/tiled/techfloor, /area/ship/aro/midshipshangars) "fU" = ( diff --git a/maps/tether/submaps/om_ships/aro2.dm b/maps/tether/submaps/om_ships/aro2.dm index dfee0a6b42..3cd331c28a 100644 --- a/maps/tether/submaps/om_ships/aro2.dm +++ b/maps/tether/submaps/om_ships/aro2.dm @@ -54,8 +54,13 @@ // The 'ship' /obj/effect/overmap/visitable/ship/aro2 - name = "Aronai Sieyes" - desc = "It's Aronai. Did you know he's actually a spaceship? Yeah it's weird." + name = "spacecraft" + desc = "Spacefaring vessel. Friendly IFF detected." + scanner_name = "Aronai Sieyes" + scanner_desc = @{"[i]Registration[/i]: Aronai Sieyes +[i]Class[/i]: Small Frigate (Low Displacement) +[i]Transponder[/i]: Transmitting (CIV), non-hostile +[b]Notice[/b]: Automated vessel"} color = "#00aaff" //Bluey vessel_mass = 8000 vessel_size = SHIP_SIZE_SMALL @@ -63,11 +68,16 @@ initial_restricted_waypoints = list("Aro's Boat" = list("omship_spawn_aroboat2")) fore_dir = EAST -/obj/effect/overmap/visitable/ship/aro2/get_skybox_representation() - var/image/I = image('aro2.dmi', "skybox") - I.pixel_x = 80 - I.pixel_y = 100 - return I + skybox_icon = 'aro2.dmi' //Art by Nia Tahl, see ATTRIBUTIONS.md + skybox_icon_state = "skybox" + skybox_pixel_x = 80 + skybox_pixel_y = 100 + +/obj/effect/overmap/visitable/ship/aro2/build_skybox_representation() + ..() + if(!cached_skybox_image) + return + cached_skybox_image.add_overlay("glow") // The shuttle's 'shuttle' computer /obj/machinery/computer/shuttle_control/explore/aroboat2 diff --git a/maps/tether/submaps/om_ships/aro2.dmi b/maps/tether/submaps/om_ships/aro2.dmi index 546411b634..7e5ba5ecba 100644 Binary files a/maps/tether/submaps/om_ships/aro2.dmi and b/maps/tether/submaps/om_ships/aro2.dmi differ diff --git a/maps/tether/submaps/om_ships/aro2.dmm b/maps/tether/submaps/om_ships/aro2.dmm index a50769d10c..650bb8419e 100644 --- a/maps/tether/submaps/om_ships/aro2.dmm +++ b/maps/tether/submaps/om_ships/aro2.dmm @@ -80,18 +80,18 @@ /turf/simulated/floor/carpet, /area/aro2/couchroom) "ap" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/window/phoronreinforced{ - dir = 1 - }, /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ dir = 1; icon_state = "pdoor1"; id = "arobackleft" }, -/turf/simulated/floor/reinforced, +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, /area/aro2/holodeckroom) "aq" = ( /obj/machinery/media/jukebox, @@ -383,7 +383,6 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/aro2/cockpit) "aY" = ( -/obj/machinery/power/terminal, /obj/structure/railing, /turf/simulated/floor/greengrid, /area/aro2/powerroom) @@ -534,12 +533,12 @@ /turf/simulated/floor/reinforced/airless, /area/aro2/powerroom) "bp" = ( -/obj/machinery/power/smes/buildable/hybrid, /obj/structure/cable/cyan{ d2 = 2; icon_state = "0-2" }, -/turf/simulated/floor/tiled/techmaint, +/obj/machinery/power/rtg/abductor/hybrid/built, +/turf/simulated/floor/tiled/techfloor/grid, /area/aro2/powerroom) "bq" = ( /obj/structure/cable/cyan{ @@ -1016,6 +1015,11 @@ icon_state = "techfloororange_corners"; dir = 1 }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, /turf/simulated/floor/tiled/techfloor/grid, /area/aro2/bighallway) "cc" = ( @@ -1294,11 +1298,6 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/aro2/bighallway) "cD" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/effect/floor_decal/techfloor/orange{ dir = 4 }, @@ -1314,33 +1313,36 @@ /area/aro2/cafe) "cF" = ( /obj/effect/floor_decal/spline/plain, -/obj/machinery/vending/food, -/turf/simulated/floor/wood, +/obj/machinery/vending/food/arojoan, +/turf/simulated/floor/tiled/techmaint, /area/aro2/cafe) "cG" = ( /obj/effect/floor_decal/spline/plain, -/obj/machinery/vending/boozeomat, -/turf/simulated/floor/wood, +/obj/machinery/vending/dinnerware, +/turf/simulated/floor/tiled/techmaint, /area/aro2/cafe) "cH" = ( /obj/effect/floor_decal/spline/plain, -/obj/machinery/vending/dinnerware, /obj/machinery/light{ dir = 1 }, -/turf/simulated/floor/wood, +/obj/machinery/vending/boozeomat, +/turf/simulated/floor/tiled/techmaint, /area/aro2/cafe) "cI" = ( /obj/effect/floor_decal/spline/plain, -/obj/machinery/vending/snack, -/turf/simulated/floor/wood, +/obj/structure/table/woodentable, +/obj/machinery/chemical_dispenser/bar_soft{ + pixel_y = 8 + }, +/turf/simulated/floor/tiled/techmaint, /area/aro2/cafe) "cJ" = ( /obj/effect/floor_decal/spline/plain{ dir = 6 }, -/obj/machinery/vending/cola, -/turf/simulated/floor/wood, +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled/techmaint, /area/aro2/cafe) "cK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1372,17 +1374,11 @@ /obj/structure/table/rack/shelf/steel, /obj/item/weapon/technomancer_catalog/universal, /obj/item/weapon/technomancer_core/universal, -/obj/item/mecha_parts/mecha_equipment/cloak, -/obj/item/mecha_parts/mecha_equipment/crisis_drone, -/obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64, /turf/simulated/floor/tiled/techmaint, /area/aro2/storage) "cO" = ( /obj/structure/table/rack/shelf/steel, -/obj/item/device/sleevemate, /obj/item/device/universal_translator, -/obj/item/device/perfect_tele/one_beacon, -/obj/item/weapon/cell/device/weapon/recharge/alien, /turf/simulated/floor/tiled/techmaint, /area/aro2/storage) "cP" = ( @@ -1397,18 +1393,18 @@ /turf/simulated/wall/rpshull, /area/aro2/powerroom) "cS" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, +/obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ - dir = 8; + dir = 1; icon_state = "pdoor1"; id = "arobackleft" }, -/obj/structure/window/phoronreinforced{ +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + icon_state = "window"; dir = 1 }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/reinforced, +/turf/simulated/floor/tiled/techmaint, /area/aro2/bighallway) "cT" = ( /obj/structure/cable/cyan{ @@ -1490,6 +1486,11 @@ /obj/structure/railing{ dir = 4 }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/bluegrid, /area/aro2/bighallway) "de" = ( @@ -1514,11 +1515,6 @@ d2 = 4; icon_state = "1-4" }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/effect/floor_decal/techfloor/orange/corner{ icon_state = "techfloororange_corners"; dir = 4 @@ -1597,21 +1593,23 @@ pixel_y = 0; report_danger_level = 0 }, +/obj/structure/table/rack/shelf/steel, +/obj/item/device/sleevemate, /turf/simulated/floor/tiled/techmaint, /area/aro2/storage) "dp" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/window/phoronreinforced{ - dir = 8 - }, /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ - dir = 1; + dir = 4; icon_state = "pdoor1"; id = "arobackleft" }, -/turf/simulated/floor/reinforced, +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + dir = 8; + icon_state = "window" + }, +/turf/simulated/floor/tiled/techmaint, /area/aro2/bighallway) "dq" = ( /obj/effect/floor_decal/techfloor/orange{ @@ -1891,12 +1889,21 @@ icon_state = "warningcorner"; dir = 8 }, +/obj/structure/table/rack/shelf/steel, +/obj/item/mecha_parts/mecha_equipment/omni_shield, +/obj/item/mecha_parts/mecha_equipment/crisis_drone, +/obj/item/mecha_parts/mecha_equipment/cloak, /turf/simulated/floor/tiled/techmaint, /area/aro2/boatbay) "dR" = ( /turf/simulated/wall/rpshull, /area/aro2/storage) "dS" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, /turf/simulated/floor/bluegrid, /area/aro2/bighallway) "dT" = ( @@ -1910,11 +1917,6 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/aro2/bighallway) "dU" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 8 @@ -2045,6 +2047,9 @@ initial_shield_modes = 2113; target_radius = 31 }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, /turf/simulated/floor/bluegrid, /area/aro2/bighallway) "ee" = ( @@ -2059,6 +2064,9 @@ name = "east bump"; pixel_x = 24 }, +/obj/structure/table/rack/shelf/steel, +/obj/item/device/perfect_tele/alien, +/obj/item/weapon/inducer/hybrid, /turf/simulated/floor/tiled/techmaint, /area/aro2/storage) "ef" = ( @@ -2084,6 +2092,7 @@ icon_state = "1-2" }, /obj/structure/table/steel, +/obj/item/weapon/cell/void/hybrid, /turf/simulated/floor/tiled/techmaint, /area/aro2/powerroom) "ei" = ( @@ -2279,11 +2288,11 @@ /obj/effect/floor_decal/spline/plain{ dir = 1 }, -/obj/structure/table/woodentable, /obj/machinery/atmospherics/unary/vent_scrubber/on{ icon_state = "map_scrubber_on"; dir = 4 }, +/obj/structure/table/fancyblack, /turf/simulated/floor/wood, /area/aro2/cafe) "eC" = ( @@ -2349,20 +2358,23 @@ dir = 1 }, /obj/structure/table/steel, -/obj/item/weapon/storage/box/lights/tubes, +/obj/fiftyspawner/plastitanium, +/obj/fiftyspawner/plastitanium_glass, /turf/simulated/floor/tiled/techmaint, /area/aro2/storage) "eJ" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/window/phoronreinforced, +/obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ - dir = 8; + dir = 1; icon_state = "pdoor1"; id = "arobackleft" }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/reinforced, +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + dir = 2; + icon_state = "window" + }, +/turf/simulated/floor/tiled/techmaint, /area/aro2/bighallway) "eK" = ( /turf/simulated/wall/r_wall, @@ -2504,12 +2516,6 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/aro2/bighallway) "eV" = ( -/obj/structure/cable/cyan, -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 24 - }, /obj/effect/floor_decal/techfloor/orange{ icon_state = "techfloororange_edges"; dir = 6 @@ -2526,7 +2532,6 @@ /turf/simulated/floor/wood, /area/aro2/cafe) "eY" = ( -/obj/structure/table/woodentable, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -2535,6 +2540,7 @@ pixel_x = 0; pixel_y = -25 }, +/obj/structure/table/fancyblack, /turf/simulated/floor/wood, /area/aro2/cafe) "eZ" = ( @@ -2592,10 +2598,10 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/aro2/holodeckroom) "fg" = ( -/obj/structure/table/woodentable, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/structure/table/fancyblack, /turf/simulated/floor/wood, /area/aro2/cafe) "fh" = ( @@ -2877,18 +2883,18 @@ /turf/simulated/floor/tiled/techmaint, /area/shuttle/aroboat2) "fH" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/window/phoronreinforced{ - dir = 1 - }, /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ dir = 8; icon_state = "pdoor1"; id = "aroboatshut" }, -/turf/simulated/shuttle/plating, +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/aroboat2) "fJ" = ( /obj/machinery/button/remote/blast_door{ @@ -2919,6 +2925,11 @@ d2 = 4; icon_state = "1-4" }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/aroboat2) "fM" = ( @@ -2926,9 +2937,10 @@ dir = 4 }, /obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" + icon_state = "0-8" + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/aroboat2) @@ -2987,12 +2999,6 @@ /turf/simulated/floor/carpet/bcarpet, /area/shuttle/aroboat2) "fS" = ( -/obj/machinery/power/apc{ - cell_type = /obj/item/weapon/cell/super; - dir = 8; - name = "west bump"; - pixel_x = -24 - }, /obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled/techmaint, /area/shuttle/aroboat2) @@ -3010,6 +3016,11 @@ icon_state = "spline_plain"; dir = 8 }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/aroboat2) "fV" = ( @@ -3041,18 +3052,18 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/aroboat2) "fY" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, /obj/machinery/door/firedoor/glass, -/obj/structure/window/phoronreinforced{ - dir = 4 - }, /obj/machinery/door/blast/regular{ dir = 1; icon_state = "pdoor1"; id = "aroboatshut" }, -/turf/simulated/shuttle/plating, +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/aroboat2) "fZ" = ( /obj/machinery/light{ @@ -3141,16 +3152,15 @@ /turf/simulated/floor/tiled/techmaint, /area/shuttle/aroboat2) "gj" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/window/phoronreinforced, /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ dir = 8; icon_state = "pdoor1"; id = "aroboatshut" }, -/turf/simulated/shuttle/plating, +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium, +/turf/simulated/floor/tiled/techmaint, /area/shuttle/aroboat2) "gk" = ( /obj/effect/overmap/visitable/ship/aro2, @@ -4221,6 +4231,7 @@ icon_state = "1-2" }, /obj/machinery/light, +/obj/item/weapon/storage/box/lights/tubes, /turf/simulated/floor/tiled/techmaint, /area/aro2/storage) "ia" = ( @@ -4408,18 +4419,18 @@ /turf/simulated/floor/tiled/techfloor, /area/aro2/bighallway) "ix" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/window/phoronreinforced{ - dir = 1 - }, /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ dir = 1; icon_state = "pdoor1"; id = "arobackleft" }, -/turf/simulated/floor/reinforced, +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, /area/aro2/couchroom) "iy" = ( /obj/structure/table/woodentable, @@ -4467,18 +4478,18 @@ /turf/simulated/floor/carpet/bcarpet, /area/shuttle/aroboat2) "qK" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/window/phoronreinforced{ - dir = 1 - }, /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ dir = 1; icon_state = "pdoor1"; id = "arobackleft" }, -/turf/simulated/floor/reinforced, +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, /area/aro2/room2) "qW" = ( /obj/structure/table/bench/wooden, @@ -4488,10 +4499,10 @@ /obj/effect/floor_decal/spline/plain{ dir = 1 }, -/obj/structure/table/woodentable, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/structure/table/fancyblack, /turf/simulated/floor/wood, /area/aro2/cafe) "tR" = ( @@ -4510,18 +4521,6 @@ /obj/machinery/atmospherics/binary/pump/aux, /turf/simulated/floor/reinforced, /area/aro2/boatbay) -"um" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/window/phoronreinforced, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/blast/regular{ - dir = 1; - icon_state = "pdoor1"; - id = "arobackleft" - }, -/turf/simulated/floor/reinforced, -/area/aro2/bighallway) "vA" = ( /obj/structure/flora/pottedplant/unusual, /turf/simulated/floor/tiled/techfloor, @@ -4537,18 +4536,18 @@ /turf/simulated/floor/tiled/techfloor, /area/shuttle/aroboat2) "yk" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/window/phoronreinforced{ - dir = 1 - }, /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ dir = 1; icon_state = "pdoor1"; id = "arobackleft" }, -/turf/simulated/floor/reinforced, +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, /area/aro2/room3) "yG" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -4571,6 +4570,9 @@ icon_state = "spline_plain"; dir = 8 }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/aroboat2) "zZ" = ( @@ -4594,6 +4596,11 @@ icon_state = "spline_plain"; dir = 8 }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/aroboat2) "Ct" = ( @@ -4621,21 +4628,25 @@ /area/aro2/boatbay) "Fh" = ( /obj/effect/floor_decal/industrial/outline/blue, +/obj/machinery/power/rtg/abductor/hybrid/built, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, /turf/simulated/floor/tiled/techmaint, /area/shuttle/aroboat2) "Fu" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/window/phoronreinforced{ - dir = 1 - }, /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ dir = 1; icon_state = "pdoor1"; id = "arobackleft" }, -/turf/simulated/floor/reinforced, +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, /area/aro2/room0) "FR" = ( /obj/machinery/atmospherics/portables_connector/aux{ @@ -4697,7 +4708,6 @@ /turf/simulated/floor/carpet/bcarpet, /area/shuttle/aroboat2) "Mq" = ( -/obj/machinery/power/terminal, /obj/structure/railing, /obj/machinery/firealarm{ dir = 4; @@ -4727,18 +4737,18 @@ /turf/simulated/floor/tiled/techfloor, /area/aro2/room0) "PT" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/window/phoronreinforced{ - dir = 1 - }, /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ dir = 1; icon_state = "pdoor1"; id = "arobackleft" }, -/turf/simulated/floor/reinforced, +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, /area/aro2/room1) "QV" = ( /obj/effect/shuttle_landmark{ @@ -4772,17 +4782,28 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/aroboat2) +"TY" = ( +/obj/effect/floor_decal/techfloor/orange, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/aro2/bighallway) "VH" = ( -/obj/structure/grille, -/obj/structure/window/phoronreinforced/full, -/obj/structure/window/phoronreinforced, /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ dir = 1; icon_state = "pdoor1"; id = "arobackleft" }, -/turf/simulated/floor/reinforced, +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + dir = 2; + icon_state = "window" + }, +/turf/simulated/floor/tiled/techmaint, /area/aro2/cafe) "VO" = ( /obj/effect/floor_decal/spline/plain{ @@ -15689,7 +15710,7 @@ bI hT gU cb -cr +TY dd dS eu @@ -15700,7 +15721,7 @@ hf iq fx iw -um +eJ aa aa aa diff --git a/maps/tether/submaps/om_ships/backup/aro.dmm b/maps/tether/submaps/om_ships/backup/aro.dmm deleted file mode 100644 index abaf444861..0000000000 --- a/maps/tether/submaps/om_ships/backup/aro.dmm +++ /dev/null @@ -1,23321 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/turf/space, -/area/space) -"ab" = ( -/obj/effect/shuttle_landmark{ - base_area = /area/space; - base_turf = /turf/space; - flags = 2; - landmark_tag = "aronai_fore"; - name = "Near Ship - Fore" - }, -/turf/space, -/area/space) -"ac" = ( -/turf/simulated/shuttle/wall/alien/blue, -/area/ship/aro/bridge) -"ad" = ( -/turf/simulated/shuttle/wall/alien/blue/hard_corner, -/area/ship/aro/bridge) -"ae" = ( -/obj/machinery/computer/ship/sensors, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/bridge) -"af" = ( -/obj/machinery/computer/ship/helm, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/bridge) -"ag" = ( -/obj/machinery/computer/ship/engines, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/bridge) -"ah" = ( -/obj/machinery/computer/shuttle_control/explore/aroboat, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/bridge) -"ai" = ( -/obj/structure/window/reinforced/full, -/obj/structure/fans/hardlight, -/obj/machinery/door/blast/regular{ - dir = 1; - icon_state = "pdoor0"; - id = "dongleship_blast"; - layer = 3.3 - }, -/turf/simulated/shuttle/floor/alienplating/blue/half{ - icon_state = "alienplatinghalf"; - dir = 8 - }, -/area/ship/aro/bridge) -"aj" = ( -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 25 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/bridge) -"ak" = ( -/obj/effect/floor_decal/techfloor{ - dir = 9 - }, -/obj/structure/bed/chair/bay/comfy/captain{ - icon_state = "capchair_preview"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/bridge) -"al" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/structure/table/alien/blue, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/bridge) -"am" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 5 - }, -/obj/structure/bed/chair/bay/comfy/captain{ - icon_state = "capchair_preview"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/bridge) -"an" = ( -/obj/structure/cable/cyan{ - icon_state = "0-2" - }, -/obj/machinery/power/apc/alarms_hidden{ - dir = 1; - name = "north bump"; - pixel_y = 28 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/bridge) -"ao" = ( -/obj/structure/window/reinforced/full, -/obj/structure/fans/hardlight, -/obj/machinery/door/blast/regular{ - dir = 1; - icon_state = "pdoor0"; - id = "dongleship_blast"; - layer = 3.3 - }, -/turf/simulated/shuttle/floor/alienplating/blue/half{ - icon_state = "alienplatinghalf"; - dir = 4 - }, -/area/ship/aro/bridge) -"ap" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/bridge) -"aq" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/bridge) -"ar" = ( -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/bridge) -"as" = ( -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/bridge) -"at" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/bridge) -"au" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/bridge) -"av" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - icon_state = "map_scrubber_on"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/bridge) -"aw" = ( -/obj/effect/floor_decal/techfloor{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/bridge) -"ax" = ( -/obj/effect/floor_decal/techfloor/corner{ - icon_state = "techfloor_corners"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/bridge) -"ay" = ( -/obj/effect/floor_decal/techfloor/corner, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/bridge) -"az" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/bridge) -"aA" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - icon_state = "map_vent_out"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/bridge) -"aB" = ( -/turf/simulated/shuttle/wall/alien/blue, -/area/ship/aro/recreation) -"aC" = ( -/obj/machinery/door/airlock/alien/blue, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/recreation) -"aD" = ( -/obj/machinery/door/airlock/alien/blue, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/recreation) -"aE" = ( -/obj/structure/flora/pottedplant, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aF" = ( -/obj/structure/bed/chair/bay/chair/padded/red/bignest, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aG" = ( -/obj/structure/cable/cyan{ - icon_state = "0-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 1 - }, -/obj/machinery/power/apc/alarms_hidden{ - dir = 1; - name = "north bump"; - pixel_y = 28 - }, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aH" = ( -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aI" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aJ" = ( -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aK" = ( -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 25 - }, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aL" = ( -/obj/structure/flora/pottedplant, -/obj/machinery/button/remote/blast_door{ - dir = 8; - id = "dongleship_blast"; - name = "exterior shutters"; - pixel_x = 28 - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aM" = ( -/obj/structure/window/reinforced/full, -/obj/structure/fans/hardlight, -/obj/machinery/door/blast/regular{ - dir = 1; - icon_state = "pdoor0"; - id = "dongleship_blast"; - layer = 3.3 - }, -/turf/simulated/shuttle/floor/alienplating/blue/half{ - icon_state = "alienplatinghalf"; - dir = 8 - }, -/area/ship/aro/recreation) -"aN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aO" = ( -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/recreation) -"aP" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - icon_state = "map_scrubber_on"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/recreation) -"aQ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - icon_state = "map_vent_out"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/recreation) -"aR" = ( -/obj/structure/closet/crate/bin, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aS" = ( -/obj/structure/window/reinforced/full, -/obj/structure/fans/hardlight, -/obj/machinery/door/blast/regular{ - dir = 1; - icon_state = "pdoor0"; - id = "dongleship_blast"; - layer = 3.3 - }, -/turf/simulated/shuttle/floor/alienplating/blue/half{ - icon_state = "alienplatinghalf"; - dir = 4 - }, -/area/ship/aro/recreation) -"aT" = ( -/turf/simulated/floor/reinforced, -/area/ship/aro/holodeck) -"aU" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aV" = ( -/turf/simulated/shuttle/wall/alien/blue/hard_corner, -/area/ship/aro/recreation) -"aW" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aX" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aY" = ( -/obj/machinery/vending/food/arojoan{ - density = 0; - pixel_x = -32 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"aZ" = ( -/obj/machinery/computer/HolodeckControl/holodorm/aro{ - icon_state = "computer"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/recreation) -"ba" = ( -/obj/machinery/vending/boozeomat{ - density = 0; - pixel_x = 32 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/wood, -/area/ship/aro/recreation) -"bb" = ( -/obj/structure/closet/secure_closet/freezer/fridge, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - icon_state = "borderfloorcorner2_white"; - dir = 8 - }, -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bc" = ( -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bd" = ( -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"be" = ( -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bf" = ( -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bg" = ( -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bh" = ( -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bi" = ( -/obj/effect/floor_decal/spline/fancy/wood/corner{ - dir = 4 - }, -/obj/machinery/vending/dinnerware, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - icon_state = "borderfloorcorner2_white"; - dir = 6 - }, -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bj" = ( -/obj/structure/closet/secure_closet/freezer/meat, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bk" = ( -/obj/structure/table/standard, -/obj/machinery/reagentgrinder, -/obj/effect/floor_decal/borderfloorwhite, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bl" = ( -/obj/structure/table/standard, -/obj/machinery/microwave, -/obj/effect/floor_decal/borderfloorwhite, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bm" = ( -/obj/structure/closet/secure_closet/freezer/kitchen, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - icon_state = "borderfloorcorner2_white"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bo" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bp" = ( -/obj/machinery/cooker/oven, -/obj/effect/floor_decal/borderfloorwhite/corner2, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bq" = ( -/obj/machinery/cooker/grill, -/obj/effect/floor_decal/borderfloorwhite, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"br" = ( -/obj/structure/table/standard, -/obj/effect/floor_decal/borderfloorwhite, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bs" = ( -/obj/structure/table/standard, -/obj/item/weapon/material/knife/butch, -/obj/item/weapon/material/kitchen/rollingpin, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 6 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/recreation) -"bt" = ( -/turf/simulated/shuttle/wall/alien/blue, -/area/ship/aro/centralarea) -"bu" = ( -/turf/simulated/shuttle/wall/alien/blue/hard_corner, -/area/ship/aro/centralarea) -"bv" = ( -/obj/machinery/door/airlock/alien/blue, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"bw" = ( -/obj/machinery/door/airlock/alien/blue, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"bx" = ( -/obj/machinery/computer/operating, -/turf/simulated/floor/tiled/steel_grid, -/area/ship/aro/centralarea) -"by" = ( -/obj/machinery/optable, -/turf/simulated/floor/tiled/steel_grid, -/area/ship/aro/centralarea) -"bz" = ( -/obj/structure/table/standard, -/obj/item/weapon/storage/firstaid/surgery, -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 25 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/ship/aro/centralarea) -"bA" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"bB" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"bC" = ( -/obj/structure/table/alien/blue, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"bD" = ( -/obj/structure/table/alien/blue, -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 25 - }, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"bE" = ( -/obj/structure/table/alien/blue, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"bF" = ( -/obj/structure/table/standard, -/obj/item/weapon/tank/anesthetic, -/obj/item/clothing/mask/breath/medical, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/ship/aro/centralarea) -"bG" = ( -/turf/simulated/floor/tiled/steel_grid, -/area/ship/aro/centralarea) -"bH" = ( -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 12; - pixel_y = 5 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/ship/aro/centralarea) -"bI" = ( -/obj/structure/closet/hydrant{ - pixel_x = 32 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"bJ" = ( -/obj/structure/closet/crate/bin, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"bK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"bL" = ( -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"bM" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/obj/machinery/cell_charger, -/obj/structure/table/alien/blue, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"bN" = ( -/obj/structure/window/reinforced/full, -/obj/structure/fans/hardlight, -/obj/machinery/door/blast/regular{ - dir = 1; - icon_state = "pdoor0"; - id = "dongleship_blast"; - layer = 3.3 - }, -/turf/simulated/shuttle/floor/alienplating/blue/half{ - icon_state = "alienplatinghalf"; - dir = 8 - }, -/area/ship/aro/centralarea) -"bO" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 9 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - icon_state = "borderfloorcorner2_white"; - dir = 1 - }, -/obj/structure/window/reinforced{ - icon_state = "rwindow"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"bP" = ( -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"bQ" = ( -/obj/item/device/healthanalyzer/advanced, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - icon_state = "borderfloorcorner2_white"; - dir = 4 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/window/reinforced{ - icon_state = "rwindow"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"bR" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, -/obj/item/roller/adv, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 5 - }, -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/structure/window/reinforced{ - icon_state = "rwindow"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"bS" = ( -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"bT" = ( -/obj/item/weapon/stool/padded, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"bU" = ( -/obj/item/weapon/storage/toolbox/syndicate, -/obj/structure/table/alien/blue, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"bV" = ( -/obj/structure/window/reinforced/full, -/obj/structure/fans/hardlight, -/obj/machinery/door/blast/regular{ - dir = 1; - icon_state = "pdoor0"; - id = "dongleship_blast"; - layer = 3.3 - }, -/turf/simulated/shuttle/floor/alienplating/blue/half{ - icon_state = "alienplatinghalf"; - dir = 4 - }, -/area/ship/aro/centralarea) -"bW" = ( -/obj/structure/medical_stand, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"bX" = ( -/obj/structure/bed/chair/office/light{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"bY" = ( -/obj/machinery/computer/transhuman/resleeving{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"bZ" = ( -/obj/structure/window/reinforced/full, -/turf/simulated/shuttle/floor/alienplating/blue/half{ - icon_state = "alienplatinghalf"; - dir = 8 - }, -/area/ship/aro/centralarea) -"ca" = ( -/obj/structure/window/reinforced/full, -/turf/simulated/shuttle/floor/alienplating/blue/half{ - icon_state = "alienplatinghalf"; - dir = 4 - }, -/area/ship/aro/centralarea) -"cb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"cc" = ( -/obj/machinery/recharger, -/obj/structure/table/alien/blue, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"cd" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"ce" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"cf" = ( -/obj/machinery/clonepod/transhuman, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"cg" = ( -/obj/structure/window/reinforced/full, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 8 - }, -/turf/simulated/shuttle/floor/alienplating/blue/half{ - icon_state = "alienplatinghalf"; - dir = 8 - }, -/area/ship/aro/centralarea) -"ch" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"ci" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"cj" = ( -/obj/structure/window/reinforced/full, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 8 - }, -/turf/simulated/shuttle/floor/alienplating/blue/half{ - icon_state = "alienplatinghalf"; - dir = 4 - }, -/area/ship/aro/centralarea) -"ck" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"cl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"cm" = ( -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/structure/table/alien/blue, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"cn" = ( -/obj/item/stack/material/glass{ - amount = 50 - }, -/obj/item/stack/material/glass{ - amount = 50 - }, -/obj/structure/table/alien/blue, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"co" = ( -/obj/machinery/bodyscanner{ - dir = 8 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 9 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"cp" = ( -/obj/machinery/body_scanconsole, -/obj/effect/floor_decal/borderfloorwhite/corner{ - icon_state = "borderfloorcorner_white"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"cq" = ( -/obj/machinery/transhuman/synthprinter, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"cr" = ( -/obj/machinery/pros_fabricator{ - req_access = list() - }, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"cs" = ( -/obj/machinery/autolathe{ - desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; - hacked = 1; - name = "Centcom Autolathe" - }, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"ct" = ( -/obj/machinery/mecha_part_fabricator{ - req_access = list() - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"cu" = ( -/obj/machinery/transhuman/resleever, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"cv" = ( -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"cw" = ( -/obj/effect/floor_decal/industrial/outline/blue, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"cx" = ( -/obj/effect/floor_decal/industrial/outline/grey, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"cy" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"cz" = ( -/obj/machinery/vending/medical{ - density = 0; - pixel_x = 0; - pixel_y = 0; - req_access = list() - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 6 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"cA" = ( -/obj/effect/floor_decal/borderfloorwhite/corner, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"cB" = ( -/obj/item/weapon/storage/firstaid/regular{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/weapon/storage/firstaid/regular{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/bodybag/cryobag{ - pixel_x = 5 - }, -/obj/item/bodybag/cryobag{ - pixel_x = 5 - }, -/obj/item/weapon/storage/firstaid/o2{ - layer = 2.8; - pixel_x = 4; - pixel_y = 6 - }, -/obj/item/weapon/storage/box/masks{ - pixel_x = 0; - pixel_y = 0 - }, -/obj/item/weapon/storage/box/gloves{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/weapon/storage/firstaid/toxin, -/obj/item/weapon/storage/firstaid/fire{ - layer = 2.9; - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/weapon/storage/firstaid/adv{ - pixel_x = -2 - }, -/obj/item/weapon/reagent_containers/blood/empty, -/obj/item/weapon/reagent_containers/blood/OMinus, -/obj/item/weapon/reagent_containers/blood/OMinus, -/obj/item/weapon/reagent_containers/blood/OMinus, -/obj/item/weapon/reagent_containers/blood/OMinus, -/obj/structure/closet/medical_wall{ - pixel_y = -32 - }, -/obj/item/weapon/storage/box/body_record_disk, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - icon_state = "borderfloorcorner2_white"; - dir = 9 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"cC" = ( -/obj/effect/shuttle_landmark{ - base_area = /area/space; - base_turf = /turf/space; - flags = 2; - landmark_tag = "aronai_port"; - name = "Near Ship - Port" - }, -/turf/space, -/area/space) -"cD" = ( -/obj/machinery/chem_master, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"cE" = ( -/obj/machinery/chemical_dispenser/ert, -/obj/structure/table/steel_reinforced, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 6 - }, -/obj/structure/table/alien/blue, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"cF" = ( -/obj/machinery/door/airlock/alien/blue, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cG" = ( -/obj/structure/cable/cyan{ - icon_state = "0-2" - }, -/obj/machinery/power/apc/alarms_hidden{ - dir = 8; - name = "west bump"; - pixel_x = -28 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cH" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cI" = ( -/obj/machinery/mech_recharger, -/turf/simulated/floor/tiled/techmaint, -/area/ship/aro/centralarea) -"cJ" = ( -/obj/machinery/shipsensors, -/turf/space, -/area/ship/aro/centralarea) -"cK" = ( -/obj/effect/floor_decal/corner_techfloor_grid, -/obj/effect/floor_decal/techfloor/corner, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cL" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 10 - }, -/obj/effect/floor_decal/techfloor, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cM" = ( -/obj/effect/floor_decal/techfloor, -/obj/effect/floor_decal/techfloor/corner{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"cN" = ( -/obj/effect/floor_decal/techfloor, -/obj/effect/floor_decal/techfloor/corner{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"cO" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 10 - }, -/obj/effect/floor_decal/techfloor, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cP" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 8 - }, -/obj/effect/floor_decal/techfloor/corner{ - icon_state = "techfloor_corners"; - dir = 8 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 25 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cQ" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cR" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - icon_state = "map_vent_out"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cS" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - icon_state = "corner_techfloor_grid"; - dir = 6 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cT" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/floor/water/indoors, -/area/ship/aro/centralarea) -"cU" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/simulated/floor/water/indoors, -/area/ship/aro/centralarea) -"cV" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/railing{ - icon_state = "railing0"; - dir = 4 - }, -/turf/simulated/floor/water/indoors, -/area/ship/aro/centralarea) -"cW" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 9 - }, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cX" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - icon_state = "map_scrubber_on"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cY" = ( -/obj/structure/closet/secure_closet/personal, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"cZ" = ( -/obj/effect/shuttle_landmark{ - base_area = /area/space; - base_turf = /turf/space; - flags = 2; - landmark_tag = "aronai_starboard"; - name = "Near Ship - Starboard" - }, -/turf/space, -/area/space) -"da" = ( -/obj/machinery/light/small{ - dir = 8; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"db" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dc" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - icon_state = "corner_techfloor_grid"; - dir = 6 - }, -/obj/effect/floor_decal/techfloor/hole{ - icon_state = "techfloor_hole_left"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor/hole/right{ - icon_state = "techfloor_hole_right"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dd" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/floor/water/indoors, -/area/ship/aro/centralarea) -"de" = ( -/obj/structure/flora/tree/jungle_small{ - pixel_x = -16 - }, -/turf/simulated/floor/grass, -/area/ship/aro/centralarea) -"df" = ( -/turf/simulated/floor/grass, -/area/ship/aro/centralarea) -"dg" = ( -/obj/structure/railing{ - icon_state = "railing0"; - dir = 4 - }, -/turf/simulated/floor/water/indoors, -/area/ship/aro/centralarea) -"dh" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 9 - }, -/obj/effect/floor_decal/techfloor/hole{ - icon_state = "techfloor_hole_left"; - dir = 8 - }, -/obj/effect/floor_decal/techfloor/hole/right{ - icon_state = "techfloor_hole_right"; - dir = 8 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"di" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dj" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dk" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - icon_state = "map_scrubber_on"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dl" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - icon_state = "corner_techfloor_grid"; - dir = 6 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dm" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing, -/turf/simulated/floor/water/indoors, -/area/ship/aro/centralarea) -"dn" = ( -/obj/structure/railing, -/turf/simulated/floor/water/indoors, -/area/ship/aro/centralarea) -"do" = ( -/obj/structure/railing, -/obj/structure/railing{ - icon_state = "railing0"; - dir = 4 - }, -/turf/simulated/floor/water/indoors, -/area/ship/aro/centralarea) -"dp" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 9 - }, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dq" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - icon_state = "map_vent_out"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dr" = ( -/obj/machinery/door/airlock/alien/blue, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"ds" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/table/bench/steel, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"du" = ( -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/table/bench/steel, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dv" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dw" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 5 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dx" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor/corner{ - icon_state = "techfloor_corners"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"dy" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor/corner, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"dz" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 5 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dA" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor/corner{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dB" = ( -/obj/machinery/light, -/obj/structure/table/bench/steel, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dC" = ( -/obj/structure/table/bench/steel, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dD" = ( -/obj/structure/table/rack, -/obj/item/device/suit_cooling_unit, -/obj/item/weapon/tank/air, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dE" = ( -/obj/structure/table/alien/blue, -/obj/machinery/atmospherics/unary/vent_pump/on{ - icon_state = "map_vent_out"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dH" = ( -/obj/item/weapon/rig/robotics, -/obj/structure/table/rack/shelf/steel, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dJ" = ( -/obj/structure/closet{ - name = "custodial" - }, -/obj/item/weapon/reagent_containers/spray/cleaner, -/obj/item/weapon/reagent_containers/glass/bucket, -/obj/item/weapon/mop, -/obj/item/weapon/storage/box/lights/mixed, -/obj/machinery/light/small{ - dir = 8; - pixel_x = 0 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dK" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 9 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - icon_state = "borderfloorcorner2_white"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"dL" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 1 - }, -/obj/effect/floor_decal/borderfloorwhite/corner, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - icon_state = "borderfloorcorner2_white"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"dM" = ( -/obj/machinery/washing_machine, -/obj/effect/floor_decal/borderfloorwhite/cee{ - icon_state = "borderfloorcee_white"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"dN" = ( -/obj/structure/table/alien/blue, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - icon_state = "map_scrubber_on"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dP" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dQ" = ( -/obj/item/weapon/cell/high, -/obj/structure/table/rack/shelf/steel, -/obj/machinery/atmospherics/unary/vent_pump/on{ - icon_state = "map_vent_out"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dR" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"dS" = ( -/obj/structure/sink{ - icon_state = "sink"; - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"dT" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - icon_state = "borderfloorcorner2_white"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"dU" = ( -/obj/structure/table/rack/shelf/steel, -/obj/item/stack/material/plasteel, -/obj/item/stack/material/plasteel, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"dW" = ( -/obj/structure/closet/hydrant{ - pixel_x = -32 - }, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"dX" = ( -/obj/machinery/cryopod, -/turf/simulated/floor/reinforced, -/area/ship/aro/centralarea) -"dY" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"dZ" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"ea" = ( -/obj/structure/table/rack/shelf/steel, -/obj/item/stack/material/diamond, -/obj/item/stack/material/gold, -/obj/item/stack/material/silver, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - icon_state = "map_scrubber_on"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"eb" = ( -/obj/effect/floor_decal/techfloor/corner, -/obj/effect/floor_decal/techfloor/corner{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"ec" = ( -/obj/machinery/computer/cryopod{ - pixel_x = 32 - }, -/turf/simulated/floor/reinforced, -/area/ship/aro/centralarea) -"ed" = ( -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 4 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - icon_state = "borderfloorcorner2_white"; - dir = 6 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - icon_state = "borderfloorcorner2_white"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"ee" = ( -/obj/structure/table/rack/shelf/steel, -/obj/item/stack/material/uranium, -/obj/item/stack/material/uranium, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"ef" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/centralarea) -"eg" = ( -/obj/machinery/cryopod, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/reinforced, -/area/ship/aro/centralarea) -"eh" = ( -/obj/structure/table/standard, -/obj/effect/floor_decal/borderfloorwhite{ - icon_state = "borderfloor_white"; - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"ei" = ( -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - icon_state = "borderfloorcorner2_white"; - dir = 9 - }, -/turf/simulated/floor/tiled/white, -/area/ship/aro/centralarea) -"ej" = ( -/obj/machinery/recharge_station, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/centralarea) -"ek" = ( -/turf/simulated/shuttle/wall/alien/blue, -/area/ship/aro/midshipshangars) -"el" = ( -/obj/machinery/door/airlock/alien/blue, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"em" = ( -/obj/machinery/door/airlock/alien/blue, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"en" = ( -/obj/structure/railing{ - icon_state = "railing0"; - dir = 4 - }, -/obj/structure/railing, -/turf/simulated/shuttle/wall/alien/blue, -/area/ship/aro/midshipshangars) -"eo" = ( -/obj/structure/catwalk, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"ep" = ( -/obj/structure/catwalk, -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 25 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eq" = ( -/obj/structure/catwalk, -/obj/structure/cable/cyan{ - icon_state = "0-2" - }, -/obj/machinery/power/apc/alarms_hidden{ - dir = 1; - name = "north bump"; - pixel_y = 28 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"er" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/midshipshangars) -"es" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/midshipshangars) -"et" = ( -/obj/structure/railing, -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/shuttle/wall/alien/blue, -/area/ship/aro/midshipshangars) -"eu" = ( -/obj/structure/railing{ - icon_state = "railing0"; - dir = 4 - }, -/turf/simulated/shuttle/wall/alien/blue, -/area/ship/aro/midshipshangars) -"ev" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"ew" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"ex" = ( -/obj/structure/catwalk, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"ey" = ( -/obj/structure/catwalk, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"ez" = ( -/obj/machinery/door/airlock/alien/blue, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"eA" = ( -/obj/effect/floor_decal/techfloor/corner{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor/corner{ - icon_state = "techfloor_corners"; - dir = 8 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/midshipshangars) -"eB" = ( -/obj/effect/floor_decal/techfloor/corner, -/obj/effect/floor_decal/techfloor/corner{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/midshipshangars) -"eC" = ( -/obj/machinery/door/airlock/alien/blue, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"eD" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eE" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/shuttle/wall/alien/blue, -/area/ship/aro/midshipshangars) -"eF" = ( -/obj/structure/railing{ - icon_state = "railing0"; - dir = 4 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eG" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eH" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/midshipshangars) -"eI" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/midshipshangars) -"eJ" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eK" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eL" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eM" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/simulated/shuttle/wall/alien/blue, -/area/ship/aro/midshipshangars) -"eN" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/railing{ - icon_state = "railing0"; - dir = 4 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eO" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - icon_state = "map_scrubber_on"; - dir = 4 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eP" = ( -/obj/structure/railing{ - icon_state = "railing0"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eQ" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 8 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eR" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eS" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eT" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - icon_state = "map_vent_out"; - dir = 8 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eU" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eV" = ( -/turf/simulated/shuttle/wall/alien/blue/hard_corner, -/area/ship/aro/midshipshangars) -"eW" = ( -/obj/item/modular_computer/laptop/preset/custom_loadout/elite, -/obj/structure/table/alien/blue, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"eX" = ( -/obj/item/device/flashlight/lamp, -/obj/structure/table/alien/blue, -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 25 - }, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"eY" = ( -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"eZ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - icon_state = "map_vent_out"; - dir = 4 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"fa" = ( -/obj/structure/railing{ - icon_state = "railing0"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"fb" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 4 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"fc" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"fd" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - icon_state = "map_scrubber_on"; - dir = 8 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"fe" = ( -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/midshipshangars) -"ff" = ( -/obj/item/weapon/bedsheet/captaindouble, -/obj/structure/bed/double, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"fg" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 - }, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"fh" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"fi" = ( -/obj/effect/floor_decal/techfloor/corner{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor/corner{ - icon_state = "techfloor_corners"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/midshipshangars) -"fj" = ( -/obj/effect/floor_decal/techfloor/corner, -/obj/effect/floor_decal/techfloor/corner{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/midshipshangars) -"fk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"fl" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"fm" = ( -/obj/machinery/door/airlock/alien/blue, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"fn" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - icon_state = "map_vent_out"; - dir = 4 - }, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"fo" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 - }, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"fp" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"fq" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - icon_state = "map_scrubber_on"; - dir = 8 - }, -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 25 - }, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"fr" = ( -/obj/structure/bed/chair/office/dark, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"fs" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 25 - }, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"ft" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 25 - }, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"fu" = ( -/obj/structure/bed/chair/office/dark, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"fv" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - icon_state = "map_scrubber_on"; - dir = 4 - }, -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 25 - }, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"fw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 - }, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"fx" = ( -/obj/machinery/embedded_controller/radio/simple_docking_controller{ - frequency = 1380; - id_tag = "aroship_boatbay"; - pixel_x = 0; - pixel_y = 28; - tag_door = null - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - icon_state = "map_vent_out"; - dir = 8 - }, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"fy" = ( -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"fz" = ( -/obj/item/modular_computer/laptop/preset/custom_loadout/elite, -/obj/structure/table/alien/blue, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - icon_state = "map_scrubber_on"; - dir = 1 - }, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"fA" = ( -/obj/item/device/flashlight/lamp, -/obj/structure/table/alien/blue, -/obj/machinery/atmospherics/unary/vent_pump/on{ - icon_state = "map_vent_out"; - dir = 1 - }, -/turf/simulated/floor/wood, -/area/ship/aro/midshipshangars) -"fB" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/midshipshangars) -"fC" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/midshipshangars) -"fD" = ( -/turf/simulated/shuttle/wall/alien/blue, -/area/ship/aro/engineering) -"fE" = ( -/turf/simulated/shuttle/wall/alien/blue/hard_corner, -/area/ship/aro/engineering) -"fF" = ( -/obj/machinery/door/airlock/alien/blue, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/engineering) -"fG" = ( -/obj/machinery/door/airlock/alien/blue, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/engineering) -"fH" = ( -/turf/simulated/shuttle/wall/alien/blue, -/area/shuttle/aroboat) -"fI" = ( -/obj/structure/fans/hardlight, -/obj/structure/window/reinforced/full, -/turf/simulated/shuttle/floor/alienplating/blue/half{ - icon_state = "alienplatinghalf"; - dir = 1 - }, -/area/shuttle/aroboat) -"fJ" = ( -/obj/effect/floor_decal/techfloor{ - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"fK" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - icon_state = "map_vent_out"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"fL" = ( -/obj/effect/floor_decal/techfloor/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"fM" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/techfloor/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"fN" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - icon_state = "map_scrubber_on"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"fO" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 5 - }, -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 25 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"fP" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"fQ" = ( -/obj/effect/floor_decal/techfloor{ - dir = 9 - }, -/obj/machinery/computer/shuttle_control/explore/aroboat, -/turf/simulated/floor/tiled/techfloor/grid, -/area/shuttle/aroboat) -"fR" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 5 - }, -/obj/structure/table/alien/blue, -/turf/simulated/floor/tiled/techfloor/grid, -/area/shuttle/aroboat) -"fS" = ( -/obj/effect/floor_decal/techfloor/orange{ - icon_state = "techfloororange_edges"; - dir = 5 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"fT" = ( -/obj/effect/floor_decal/techfloor/orange{ - icon_state = "techfloororange_edges"; - dir = 9 - }, -/obj/effect/floor_decal/corner_techfloor_grid, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"fU" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"fV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/effect/floor_decal/techfloor/corner{ - icon_state = "techfloor_corners"; - dir = 8 - }, -/obj/effect/floor_decal/techfloor/corner{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"fW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"fX" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"fY" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"fZ" = ( -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"ga" = ( -/obj/effect/floor_decal/techfloor/corner, -/obj/effect/floor_decal/techfloor/corner{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"gb" = ( -/obj/structure/bed/chair/shuttle{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/shuttle/aroboat) -"gc" = ( -/obj/machinery/embedded_controller/radio/simple_docking_controller{ - frequency = 1380; - id_tag = "aroboat_docker"; - pixel_x = 25; - pixel_y = 0; - tag_door = "aroboat_doors" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/shuttle/aroboat) -"gd" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"ge" = ( -/obj/effect/floor_decal/techfloor/orange/corner{ - icon_state = "techfloororange_corners"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor/orange/corner, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 9 - }, -/obj/machinery/mech_recharger{ - icon = 'icons/turf/shuttle_alien_blue.dmi' - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"gf" = ( -/obj/effect/floor_decal/techfloor/orange, -/obj/effect/floor_decal/techfloor/orange{ - icon_state = "techfloororange_edges"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"gg" = ( -/obj/effect/floor_decal/techfloor/orange/corner{ - icon_state = "techfloororange_corners"; - dir = 1 - }, -/obj/effect/floor_decal/techfloor/orange/corner{ - icon_state = "techfloororange_corners"; - dir = 8 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - icon_state = "corner_techfloor_grid"; - dir = 6 - }, -/obj/machinery/mech_recharger{ - icon = 'icons/turf/shuttle_alien_blue.dmi' - }, -/obj/mecha/working/hoverpod/gunpod/agile, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"gh" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"gi" = ( -/obj/structure/railing{ - icon_state = "railing0"; - dir = 4 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/techfloor{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"gk" = ( -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"gl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"gm" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"gn" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ship/aro/engineering) -"go" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gp" = ( -/obj/machinery/door/airlock/alien/blue{ - frequency = 1380; - id_tag = "aroboat_doors" - }, -/obj/structure/fans/hardlight, -/turf/simulated/floor/tiled/techfloor/grid, -/area/shuttle/aroboat) -"gq" = ( -/obj/effect/floor_decal/techfloor/corner{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor/corner{ - icon_state = "techfloor_corners"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/shuttle/aroboat) -"gr" = ( -/obj/effect/floor_decal/techfloor/corner, -/obj/effect/floor_decal/techfloor/corner{ - dir = 4 - }, -/obj/effect/shuttle_landmark/shuttle_initializer/aroboat{ - shuttle_restricted = "aronai_boat" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/shuttle/aroboat) -"gs" = ( -/obj/effect/floor_decal/techfloor/orange{ - icon_state = "techfloororange_edges"; - dir = 6 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"gt" = ( -/obj/effect/floor_decal/techfloor/orange{ - icon_state = "techfloororange_edges"; - dir = 10 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"gu" = ( -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gv" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/visible/universal, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gw" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/table/alien/blue, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gx" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gy" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gz" = ( -/obj/structure/cable/cyan{ - icon_state = "0-8" - }, -/obj/machinery/power/apc/alarms_hidden{ - dir = 4; - name = "east bump"; - pixel_x = 28 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gA" = ( -/obj/structure/bed/chair/shuttle{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/shuttle/aroboat) -"gB" = ( -/obj/structure/bed/chair/shuttle{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/shuttle/aroboat) -"gC" = ( -/obj/machinery/atmospherics/binary/pump/on{ - icon_state = "map_on"; - dir = 1 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gD" = ( -/obj/machinery/atmospherics/binary/pump/on, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gE" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gF" = ( -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gG" = ( -/obj/machinery/power/smes/buildable/hybrid, -/obj/structure/cable/cyan{ - icon_state = "0-8" - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gH" = ( -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable/pink{ - icon_state = "0-1"; - dir = 1 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gI" = ( -/obj/machinery/button/remote/blast_door{ - dir = 8; - id = "arobackleft"; - name = "exterior shutters"; - pixel_x = 28 - }, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"gJ" = ( -/obj/machinery/atmospherics/pipe/tank/air{ - dir = 4 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gK" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/blue, -/obj/machinery/light, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gL" = ( -/obj/machinery/atmospherics/pipe/tank/air{ - icon_state = "air_map"; - dir = 8 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gM" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/empty, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gN" = ( -/obj/structure/table/alien/blue, -/obj/structure/cable/cyan, -/obj/machinery/power/apc/alarms_hidden{ - name = "south bump"; - pixel_y = -28 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engines) -"gO" = ( -/obj/structure/table/alien/blue, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gP" = ( -/obj/machinery/light, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gQ" = ( -/obj/structure/cable/pink{ - icon_state = "1-2"; - dir = 1 - }, -/turf/simulated/shuttle/floor/alienplating/blue, -/area/ship/aro/engineering) -"gR" = ( -/obj/machinery/button/remote/blast_door{ - dir = 4; - id = "arobackright"; - name = "exterior shutters"; - pixel_x = -28 - }, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"gS" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/simulated/floor/reinforced, -/area/shuttle/aroboat) -"gT" = ( -/turf/simulated/shuttle/wall/alien/blue, -/area/ship/aro/engines) -"gU" = ( -/obj/structure/cable/pink{ - icon_state = "2-5"; - dir = 1 - }, -/turf/simulated/shuttle/wall/alien/blue, -/area/ship/aro/engines) -"gV" = ( -/obj/structure/shuttle/engine/heater, -/turf/simulated/shuttle/floor/alienplating/external, -/area/ship/aro/engines) -"gW" = ( -/obj/machinery/door/blast/regular{ - dir = 8; - icon_state = "pdoor1"; - id = "arobackleft" - }, -/obj/structure/fans/hardlight, -/turf/simulated/shuttle/floor/alienplating/blue/half, -/area/ship/aro/midshipshangars) -"gX" = ( -/obj/machinery/ion_engine{ - dir = 1 - }, -/turf/simulated/shuttle/floor/alienplating/external, -/area/ship/aro/engines) -"gY" = ( -/obj/machinery/door/blast/regular{ - dir = 8; - icon_state = "pdoor1"; - id = "arobackright" - }, -/obj/structure/fans/hardlight, -/turf/simulated/shuttle/floor/alienplating/blue/half, -/area/ship/aro/midshipshangars) -"gZ" = ( -/obj/effect/shuttle_landmark{ - base_area = /area/space; - base_turf = /turf/space; - flags = 2; - landmark_tag = "aronai_aft"; - name = "Near Ship - Aft" - }, -/turf/space, -/area/space) -"ha" = ( -/obj/effect/overmap/visitable/ship/aro, -/turf/space, -/area/space) -"iU" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 1 - }, -/obj/structure/table/rack/shelf/steel, -/obj/item/mecha_parts/mecha_equipment/crisis_drone, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"lD" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/phoron, -/obj/effect/floor_decal/industrial/danger/full, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"tu" = ( -/obj/machinery/atmospherics/binary/pump, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"uO" = ( -/obj/effect/floor_decal/techfloor/orange, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"uZ" = ( -/obj/effect/floor_decal/techfloor/orange, -/obj/structure/table/rack/shelf/steel, -/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"xu" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 1 - }, -/obj/structure/table/rack/shelf/steel, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"CW" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/outline, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"HK" = ( -/obj/effect/floor_decal/techfloor/orange, -/obj/structure/table/rack/shelf/steel, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"Lp" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/purple, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"Md" = ( -/obj/machinery/atmospherics/portables_connector, -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/floor_decal/industrial/outline, -/turf/simulated/floor/reinforced, -/area/ship/aro/midshipshangars) -"PJ" = ( -/obj/mecha/working/hoverpod/gunpod/agile, -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/outline, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) -"TU" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister/phoron, -/obj/effect/floor_decal/industrial/danger/full, -/turf/simulated/floor/tiled/techfloor, -/area/ship/aro/midshipshangars) - -(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 -aa -"} -(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 -ha -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 -cC -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ek -ek -ek -ek -ek -ek -ek -ek -ek -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ek -ek -ek -ek -ek -ek -ek -ek -ek -ek -ek -ek -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ek -ek -ek -ek -ek -ek -fy -iU -lD -uZ -fy -fy -fy -ek -eV -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ek -ek -ek -ek -ek -ek -ek -ek -Md -tu -Lp -PJ -uO -fy -fy -fy -fP -gW -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ek -ek -ek -ek -eO -fe -ek -ek -fy -fy -fy -fS -ge -gs -fy -fy -fy -fP -gW -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ek -ek -eu -eF -eF -eP -eF -ek -fn -fy -fy -fy -fy -gf -fy -fy -fy -fy -fP -gW -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bt -bt -bt -bt -ek -en -ev -eG -eG -eQ -eG -el -fo -fy -fy -fy -fy -gf -fy -fy -fy -fy -fP -gW -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bt -bt -bt -bt -bt -ek -eo -ew -eo -eo -eR -eo -fm -fp -fy -fy -fy -fy -gf -fy -fy -fy -fy -fP -gW -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bt -bt -bt -bN -bt -bt -bt -bt -cH -cH -cH -ek -eo -ew -eo -eK -eS -eJ -ek -fq -fy -fy -fy -fy -gf -fy -fy -fy -fy -fP -gW -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bt -bt -bN -bN -bN -bt -bt -cQ -da -cH -cQ -bt -dE -dN -cH -cH -cH -ek -eo -ew -eo -eL -eT -fe -ek -ek -fy -fy -fy -fT -gg -gt -fy -fy -fy -fP -gW -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bt -bt -bN -bN -bu -co -cd -cd -cd -cD -bt -bt -bt -cF -bt -bu -dF -dO -cH -cH -cH -ek -ep -ew -eo -eL -eU -ek -ek -ek -ek -Md -tu -Lp -CW -uO -fy -fy -fy -fP -gW -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aB -aB -aB -bt -bu -bF -bO -bW -cd -cp -bP -bP -cA -cE -bt -bt -db -cH -ds -bv -dG -dP -di -cH -cH -ek -eq -ex -eo -eL -eV -ek -ek -ek -ek -ek -fy -xu -TU -HK -fy -gI -fy -ek -eV -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aB -aB -aM -aM -aM -aV -aV -bb -bj -bt -bx -bG -bP -bP -bP -bP -bP -bP -cB -bu -bt -cH -cH -cH -dt -bu -bt -bt -bt -bt -bt -ek -eo -ey -eo -eM -ek -ff -ek -ff -ek -ek -ek -ek -ek -ek -ek -ek -ek -ek -ek -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ac -ai -ai -ai -aB -aE -aN -aN -aN -aW -aY -bc -bk -bt -by -bG -bQ -bX -ce -bP -bP -bP -bP -cF -cH -cR -cH -dk -du -bt -dH -dQ -dU -ea -ee -ek -eo -ey -eo -ek -eW -fg -ek -fr -fz -fD -fE -fU -gi -gu -gu -gJ -gT -gV -gX -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ac -ad -aj -ap -av -aB -aF -aO -aT -aT -aT -aO -bd -bl -bt -bz -bH -bR -bY -cf -cq -cu -cz -bu -bu -cK -cS -dc -dl -dv -bv -dI -dG -dV -dP -cH -ek -eo -ey -eo -ek -eX -fh -ek -fs -fA -fD -fJ -fV -gj -gv -gC -gK -gT -gV -gX -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ac -ac -ae -ak -aq -aw -aB -aG -aP -aT -aT -aT -aZ -bd -bm -bu -bt -bt -bt -bZ -cg -bZ -bt -bt -bt -cG -cL -cT -dd -dm -dw -bt -bt -bt -bt -bt -bt -ek -ek -ez -ek -ek -ek -eC -ek -eC -ek -fE -fK -fW -gk -gw -gu -gL -gT -gV -gX -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ac -ac -af -al -ar -ax -aC -aH -aO -aT -aT -aT -aO -be -bn -bv -bA -bA -bA -bA -ch -bA -bA -bv -bA -bA -cM -cU -de -dn -dx -bA -bv -bA -dW -bA -ef -el -er -eA -eH -el -er -fi -er -fi -fB -fF -fL -fX -gl -gv -gD -gM -gT -gT -gT -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ac -ac -ag -al -as -ay -aD -aI -aO -aT -aT -aT -aO -bf -bo -bw -bB -bI -bB -bB -ci -bB -bB -bw -bB -bB -cN -cU -df -dn -dy -bB -bw -dR -bB -eb -bB -em -es -eB -eI -em -es -fj -eI -fj -fC -fG -fM -fY -gm -gx -gE -gN -gT -gT -gT -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -gZ -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ac -ac -ah -am -at -az -aB -aJ -aQ -aT -aT -aT -aO -bg -bp -bu -bt -bt -bt -ca -cj -ca -bt -bt -bt -cH -cO -cV -dg -do -dz -bt -bt -bt -bt -cF -bt -ek -ek -eC -ek -ek -ek -eC -ek -eC -ek -fE -fN -fZ -gk -gy -gF -gO -gT -gV -gX -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ac -ad -an -au -aA -aB -aK -aO -aT -aT -aT -aO -bg -bq -bt -bC -bJ -bS -cb -ck -bL -cv -bL -bu -bu -cP -cW -dh -dp -dA -cF -dJ -bt -dX -ec -eg -ek -eo -ew -eo -ek -eX -fk -ek -ft -fA -fD -fO -ga -gn -gy -gG -gP -gT -gV -gX -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ac -ao -ao -ao -aB -aL -aR -aU -aU -aX -ba -bh -br -bt -bD -bK -bK -bK -cl -bL -bL -bL -bL -cF -cH -cX -cH -dq -dB -bu -bt -bt -bt -bt -bt -ek -eo -ew -eo -ek -eW -fl -ek -fu -fz -fD -fE -fU -go -gz -gH -gQ -gU -gV -gX -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aB -aB -aS -aS -aS -aV -aV -bi -bs -bt -bE -bL -bT -bL -cm -cr -cw -bL -bL -bu -bt -cH -cH -cH -dC -bt -dK -dS -dY -dS -eh -ek -eo -ew -eo -eM -ek -ff -ek -ff -ek -ek -ek -ek -ek -ek -ek -ek -ek -ek -ek -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aB -aB -aB -bt -bt -bM -bU -cc -cn -cs -cx -bL -bL -cI -bt -bt -di -cH -cH -cF -bP -bP -bP -bP -ei -ek -eo -ew -eo -eL -eV -ek -ek -ek -ek -ek -fy -fy -gd -fy -fy -gR -fy -ek -eV -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bt -bt -bV -bV -bu -ct -cy -bL -bL -cI -bt -bt -bt -dr -bt -bu -dL -dT -bP -ed -bP -ek -ep -ew -eo -eL -eY -ek -ek -ek -ek -fy -fy -fy -fy -fy -fy -fy -fy -fP -gY -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bt -bt -bV -bV -bV -bt -bt -cY -dj -cH -dD -bt -dM -bt -dr -bt -dr -ek -eo -ew -eo -eL -eZ -fe -ek -ek -fy -fy -fP -fP -fP -fP -fP -fy -fy -fP -gY -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -cJ -bu -bt -bt -bV -bt -bt -bt -bt -dZ -bt -ej -ek -eo -ew -eo -eN -fa -eF -ek -fv -fy -fH -fH -fH -gp -fH -fH -fH -fy -fP -gY -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bt -bt -bt -bt -bt -ek -eo -ew -eo -eo -eR -eo -fm -fp -fy -fI -fQ -gb -gq -gA -fH -gS -fy -fP -gY -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bt -bt -bt -bt -ek -et -eD -eG -eG -fb -eG -el -fw -fy -fI -fR -gc -gr -gB -fH -gS -fy -fP -gY -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ek -ek -eE -eJ -eJ -fc -eJ -ek -fx -fy -fH -fH -fH -gp -fH -fH -fH -fy -fP -gY -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ek -ek -ek -ek -fd -fe -ek -ek -fy -fy -fP -fP -fP -fP -fP -fy -fy -fP -gY -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ek -ek -ek -ek -ek -ek -ek -ek -fy -fy -fy -fy -fy -fy -fy -fy -fP -gY -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ek -ek -ek -ek -ek -ek -fy -fy -gh -fy -fy -fy -fy -ek -eV -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ek -ek -ek -ek -ek -ek -ek -ek -ek -ek -ek -ek -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ek -ek -ek -ek -ek -ek -ek -ek -ek -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -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 -cZ -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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/tether/submaps/om_ships/cruiser.dm b/maps/tether/submaps/om_ships/cruiser.dm index ea539c9ef3..f07d1e8bf1 100644 --- a/maps/tether/submaps/om_ships/cruiser.dm +++ b/maps/tether/submaps/om_ships/cruiser.dm @@ -8,132 +8,136 @@ requires_power = 1 flags = RAD_SHIELDED base_turf = /turf/space - icon_state = "blue-red2" + icon_state = "blue2" /area/mothership/breakroom - name = "Warship - Breakroom" + name = "Daedalus - Breakroom" /area/mothership/hydroponics - name = "Warship - Hydroponics" + name = "Daedalus - Hydroponics" /area/mothership/kitchen - name = "Warship - Kitchen" + name = "Daedalus - Kitchen" /area/mothership/eva - name = "Warship - EVA" + name = "Daedalus - EVA" /area/mothership/bathroom1 - name = "Warship - Bathroom 1" + name = "Daedalus - Bathroom 1" /area/mothership/bathroom2 - name = "Warship - Bathroom 2" + name = "Daedalus - Bathroom 2" /area/mothership/dorm1 - name = "Warship - Dorm 1" + name = "Daedalus - Dorm 1" /area/mothership/dorm2 - name = "Warship - Dorm 2" + name = "Daedalus - Dorm 2" /area/mothership/dorm3 - name = "Warship - Dorm 3" + name = "Daedalus - Dorm 3" /area/mothership/dorm4 - name = "Warship - Dorm 4" + name = "Daedalus - Dorm 4" /area/mothership/dorm5 - name = "Warship - Dorm 5" + name = "Daedalus - Dorm 5" /area/mothership/dorm6 - name = "Warship - Dorm 6" + name = "Daedalus - Dorm 6" /area/mothership/chemistry - name = "Warship - Chemistry" + name = "Daedalus - Chemistry" /area/mothership/surgery - name = "Warship - Surgery" + name = "Daedalus - Surgery" /area/mothership/vault - name = "Warship - Vault" + name = "Daedalus - Vault" flags = RAD_SHIELDED | BLUE_SHIELDED /area/mothership/teleporter - name = "Warship - Teleporter Room" + name = "Daedalus - Teleporter Room" /area/mothership/security - name = "Warship - Security Equipment" + name = "Daedalus - Security Equipment" /area/mothership/treatment - name = "Warship - Treatment Center" + name = "Daedalus - Treatment Center" /area/mothership/medical - name = "Warship - Medical Equipment" + name = "Daedalus - Medical Equipment" /area/mothership/resleeving - name = "Warship - Resleeving" + name = "Daedalus - Resleeving" /area/mothership/morgue - name = "Warship - Morgue" + name = "Daedalus - Morgue" /area/mothership/rnd - name = "Warship - Research" + name = "Daedalus - Research" /area/mothership/robotics - name = "Warship - Robotics" + name = "Daedalus - Robotics" /area/mothership/sechallway - name = "Warship - Security Hallway" + name = "Daedalus - Security Hallway" /area/mothership/processing - name = "Warship - Processing" + name = "Daedalus - Processing" /area/mothership/warden - name = "Warship - Warden" + name = "Daedalus - Warden" /area/mothership/armory - name = "Warship - Armory" + name = "Daedalus - Armory" flags = RAD_SHIELDED | BLUE_SHIELDED /area/mothership/bridge - name = "Warship - Bridge" + name = "Daedalus - Bridge" /area/mothership/holodeck - name = "Warship - Holodeck Controls" + name = "Daedalus - Holodeck Controls" /area/mothership/holodeck/holo - name = "Warship - Holodeck" + name = "Daedalus - Holodeck" icon_state = "dk_yellow" /area/mothership/cryotube - name = "Warship - Cryo chamber" + name = "Daedalus - Cryo chamber" /area/mothership/engineering - name = "Warship - Engineering" + name = "Daedalus - Engineering" /area/mothership/hallway - name = "Warship - Main Hallway" + name = "Daedalus - Main Hallway" /area/mothership/telecomms1 - name = "Warship - Hangar 1" + name = "Daedalus - Hangar 1" has_gravity = 0 /area/mothership/telecomms2 - name = "Warship - Hangar 2" + name = "Daedalus - Hangar 2" has_gravity = 0 /datum/map_template/om_ships/cruiser - name = "OM Ship - NDV Tabiranth (New Z)" + name = "OM Ship - Daedalus (New Z)" desc = "A large NT cruiser." mappath = 'cruiser.dmm' /obj/effect/overmap/visitable/ship/cruiser - name = "NDV Tabiranth" - desc = "A large military cruiser pinging NT IFF. An automated message warns unauthorized vessels from getting close." - color = "#00aaff" //Bluey + name = "spacecraft" + desc = "Spacefaring vessel. NanoTrasen IFF detected." + scanner_name = "NDV Daedalus" + scanner_desc = @{"[i]Registration[/i]: NDV Daedalus +[i]Class[/i]: Light Cruiser +[i]Transponder[/i]: Transmitting (MIL), NanoTrasen IFF +[b]Notice[/b]: Military vessel, do not approach"} + color = "#0033ff" //Bluey vessel_mass = 15000 vessel_size = SHIP_SIZE_LARGE initial_generic_waypoints = list("cruiser_fore", "cruiser_aft", "cruiser_port", "cruiser_starboard", "ws_port_dock_1", "ws_port_dock_2", "ws_starboard_dock_1", "ws_starboard_dock_2") -/obj/effect/overmap/visitable/ship/cruiser/get_skybox_representation() - var/image/I = image('cruiser.dmi', "skybox") - I.pixel_x = 370 - I.pixel_y = 370 - return I \ No newline at end of file + skybox_icon = 'cruiser.dmi' //Art by Gwyvern, see ATTRIBUTIONS.md + skybox_icon_state = "skybox" + skybox_pixel_x = 370 + skybox_pixel_y = 370 diff --git a/maps/tether/submaps/om_ships/cruiser.dmm b/maps/tether/submaps/om_ships/cruiser.dmm index c689224f69..719b3501b1 100644 --- a/maps/tether/submaps/om_ships/cruiser.dmm +++ b/maps/tether/submaps/om_ships/cruiser.dmm @@ -2,18 +2,9 @@ "aa" = ( /turf/space, /area/space) -"ab" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/breakroom) "ac" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 1 - }, /obj/machinery/door/blast/regular{ density = 0; destroy_hits = 1000; @@ -25,13 +16,14 @@ }, /obj/machinery/door/firedoor/glass, /obj/structure/window/reinforced, -/obj/structure/fans/hardlight, /turf/simulated/floor/plating, /area/mothership/breakroom) "ad" = ( -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_8_outer"; + locked = 1; req_one_access = list(101) }, /obj/machinery/access_button{ @@ -43,17 +35,8 @@ pixel_y = 5; req_one_access = list(101) }, -/obj/structure/fans/hardlight, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/breakroom) -"ae" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/breakroom) "af" = ( /obj/effect/shuttle_landmark{ base_area = /area/space; @@ -64,12 +47,6 @@ }, /turf/space, /area/space) -"ag" = ( -/obj/machinery/porta_turret/industrial/military, -/turf/simulated/floor/reinforced/airless{ - name = "outer hull" - }, -/area/mothership/breakroom) "ah" = ( /turf/simulated/floor/tiled/steel_grid, /area/mothership/breakroom) @@ -151,9 +128,11 @@ /area/mothership/breakroom) "an" = ( /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_8_inner"; + locked = 1; req_one_access = list(101) }, /turf/simulated/floor/tiled/techfloor/grid, @@ -208,7 +187,6 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/fans/hardlight, /turf/simulated/floor/plating, /area/mothership/breakroom) "av" = ( @@ -278,7 +256,6 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/fans/hardlight, /turf/simulated/floor/plating, /area/mothership/breakroom) "aD" = ( @@ -485,18 +462,7 @@ }, /area/mothership/bridge) "bd" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/hydroponics) -"be" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/hydroponics) "bf" = ( /obj/effect/floor_decal/spline/fancy/wood{ @@ -510,8 +476,8 @@ /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/airlock/voidcraft, /obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/airlock, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/hydroponics) "bg" = ( @@ -521,24 +487,16 @@ /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/airlock/voidcraft, /obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/airlock, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/hydroponics) "bh" = ( /obj/structure/sign/department/bar, -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/kitchen) "bi" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/kitchen) "bj" = ( /obj/machinery/door/window/northleft, @@ -549,14 +507,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/kitchen) -"bk" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/kitchen) "bl" = ( /obj/machinery/biogenerator, /turf/simulated/floor/tiled/steel_grid, @@ -605,12 +555,7 @@ /area/mothership/hydroponics) "bq" = ( /obj/structure/sink/kitchen, -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/hydroponics) "br" = ( /obj/structure/cable/cyan{ @@ -671,12 +616,7 @@ /area/mothership/hydroponics) "bv" = ( /obj/structure/sink/kitchen, -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/kitchen) "bw" = ( /obj/machinery/chem_master/condimaster, @@ -756,7 +696,6 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/fans/hardlight, /turf/simulated/floor/plating, /area/mothership/hydroponics) "bD" = ( @@ -891,7 +830,6 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/fans/hardlight, /turf/simulated/floor/plating, /area/mothership/kitchen) "bR" = ( @@ -1123,18 +1061,7 @@ }, /area/mothership/bridge) "cr" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/eva) -"cs" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/eva) "cw" = ( /obj/item/clothing/suit/space/void/security/alt, @@ -1241,9 +1168,11 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/eva) "cH" = ( -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_7_outer"; + locked = 1; req_one_access = list(101) }, /obj/machinery/access_button{ @@ -1255,7 +1184,6 @@ pixel_y = 26; req_one_access = list(101) }, -/obj/structure/fans/hardlight, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/eva) "cI" = ( @@ -1287,9 +1215,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_7_inner"; + locked = 1; req_one_access = list(101) }, /turf/simulated/floor/tiled/techfloor/grid, @@ -1338,7 +1268,6 @@ /area/mothership/eva) "cN" = ( /obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/voidcraft/vertical, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -1348,6 +1277,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, +/obj/machinery/door/airlock/maintenance, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/eva) "cO" = ( @@ -1539,20 +1469,10 @@ /area/mothership/eva) "de" = ( /obj/structure/sign/department/eva, -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/eva) "df" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/bathroom1) "dg" = ( /obj/machinery/recharge_station, @@ -1582,10 +1502,6 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/bathroom1) "di" = ( -/obj/machinery/door/airlock/voidcraft/vertical{ - glass = 0; - opacity = 1 - }, /obj/structure/cable/cyan{ d1 = 4; d2 = 8; @@ -1598,6 +1514,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/machinery/door/airlock, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/bathroom1) "dj" = ( @@ -1693,10 +1610,6 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "do" = ( -/obj/machinery/door/airlock/voidcraft/vertical{ - glass = 0; - opacity = 1 - }, /obj/structure/cable/cyan{ d1 = 4; d2 = 8; @@ -1709,6 +1622,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/machinery/door/airlock, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/bathroom2) "dp" = ( @@ -1739,19 +1653,8 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/bathroom2) "dr" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/bathroom2) -"ds" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/bathroom1) "dt" = ( /obj/machinery/shower{ dir = 4; @@ -1860,12 +1763,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) -"dF" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/bathroom2) "dG" = ( /obj/structure/toilet{ dir = 1 @@ -1911,10 +1808,7 @@ /turf/simulated/floor/tiled/white, /area/mothership/bathroom2) "dJ" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/surgery) "dK" = ( /obj/structure/grille, @@ -1933,22 +1827,10 @@ }, /obj/machinery/door/firedoor/glass, /obj/structure/window/reinforced, -/obj/structure/fans/hardlight, /turf/simulated/floor/plating, /area/mothership/surgery) "dL" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/dorm1) -"dM" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/dorm1) "dN" = ( /obj/machinery/light{ @@ -1961,18 +1843,7 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "dO" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/teleporter) -"dP" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/teleporter) "dQ" = ( /obj/machinery/door/airlock/multi_tile/metal, @@ -2010,16 +1881,10 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "dU" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/dorm2) "dV" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/security) "dW" = ( /obj/structure/closet/crate/medical, @@ -2073,12 +1938,6 @@ /turf/simulated/floor/wood, /area/mothership/dorm1) "ec" = ( -/obj/machinery/button/remote/blast_door{ - id = "ship-vault"; - name = "Vault Blast Door Controls"; - pixel_y = 28; - req_one_access = list(108) - }, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/teleporter) "ed" = ( @@ -2290,11 +2149,6 @@ /turf/simulated/floor/wood, /area/mothership/dorm1) "eu" = ( -/obj/machinery/door/airlock/voidcraft/vertical{ - glass = 0; - id_tag = "ship-dorm1-door"; - opacity = 1 - }, /obj/structure/cable/cyan{ d1 = 4; d2 = 8; @@ -2307,6 +2161,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/machinery/door/airlock{ + id_tag = "ship-dorm1-door" + }, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/dorm1) "ev" = ( @@ -2393,11 +2250,6 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "eC" = ( -/obj/machinery/door/airlock/voidcraft/vertical{ - glass = 0; - id_tag = "ship-dorm2-door"; - opacity = 1 - }, /obj/structure/cable/cyan{ d1 = 4; d2 = 8; @@ -2410,6 +2262,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/machinery/door/airlock{ + id_tag = "ship-dorm2-door" + }, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/dorm2) "eD" = ( @@ -2522,18 +2377,7 @@ /turf/simulated/floor/tiled/steel_ridged, /area/mothership/surgery) "eK" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/chemistry) -"eL" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/chemistry) "eM" = ( /obj/structure/cable/cyan{ @@ -2573,7 +2417,7 @@ "eQ" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/item/device/perfect_tele_beacon/stationary{ - tele_name = "Warship"; + tele_name = "Daedalus"; tele_network = "centcom" }, /turf/simulated/floor/tiled/techfloor/grid, @@ -2595,14 +2439,6 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/teleporter) -"eT" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/security) "eU" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/security, @@ -2612,12 +2448,7 @@ /area/mothership/security) "eV" = ( /obj/machinery/oxygen_pump/anesthetic, -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/surgery) "eW" = ( /obj/structure/medical_stand, @@ -2678,10 +2509,7 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "fd" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/vault) "fe" = ( /obj/structure/cable/cyan{ @@ -2826,161 +2654,55 @@ /area/mothership/chemistry) "fu" = ( /obj/structure/sign/department/chem, -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/chemistry) "fv" = ( -/obj/structure/closet/crate/secure/gear{ - req_one_access = list(108) - }, -/obj/item/stack/telecrystal{ - amount = 240 - }, -/obj/item/stack/telecrystal{ - amount = 240 - }, -/obj/item/stack/telecrystal{ - amount = 240 - }, -/obj/item/stack/telecrystal{ - amount = 240 - }, -/obj/item/stack/telecrystal{ - amount = 240 - }, -/obj/item/stack/telecrystal{ - amount = 240 - }, -/obj/item/stack/telecrystal{ - amount = 240 - }, -/obj/item/stack/telecrystal{ - amount = 240 - }, -/obj/item/weapon/card/mining_point_card{ - mine_points = 50000 - }, -/obj/item/weapon/card/mining_point_card{ - mine_points = 50000 - }, -/obj/item/weapon/card/mining_point_card{ - mine_points = 50000 - }, -/obj/item/weapon/card/mining_point_card{ - mine_points = 50000 - }, -/obj/item/weapon/card/mining_point_card{ - mine_points = 50000 - }, -/obj/item/weapon/card/mining_point_card{ - mine_points = 50000 - }, -/obj/item/weapon/card/mining_point_card/survey{ - name = "survey point card"; - survey_points = 5000 - }, -/obj/item/weapon/card/mining_point_card/survey{ - name = "survey point card"; - survey_points = 5000 - }, -/obj/item/weapon/card/mining_point_card/survey{ - name = "survey point card"; - survey_points = 5000 - }, -/obj/item/weapon/card/mining_point_card/survey{ - name = "survey point card"; - survey_points = 5000 - }, -/obj/item/weapon/card/mining_point_card/survey{ - name = "survey point card"; - survey_points = 5000 - }, -/obj/item/weapon/card/mining_point_card/survey{ - name = "survey point card"; - survey_points = 5000 - }, -/obj/item/device/survivalcapsule/military, -/obj/item/device/survivalcapsule/military, -/obj/item/weapon/storage/secure/briefcase/money{ - desc = "An sleek tidy briefcase."; - name = "secure briefcase" - }, -/obj/item/weapon/storage/secure/briefcase/money{ - desc = "An sleek tidy briefcase."; - name = "secure briefcase" - }, -/obj/item/weapon/storage/secure/briefcase/money{ - desc = "An sleek tidy briefcase."; - name = "secure briefcase" - }, -/obj/item/weapon/storage/secure/briefcase/money{ - desc = "An sleek tidy briefcase."; - name = "secure briefcase" - }, -/obj/item/weapon/storage/secure/briefcase/money{ - desc = "An sleek tidy briefcase."; - name = "secure briefcase" - }, -/obj/item/weapon/storage/secure/briefcase/money{ - desc = "An sleek tidy briefcase."; - name = "secure briefcase" - }, -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/mothership/vault) -"fw" = ( -/obj/machinery/syndicate_beacon/virgo{ - charges = 10 +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 }, +/obj/structure/closet/radiation, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/vault) "fx" = ( -/obj/machinery/mineral/equipment_vendor, +/obj/machinery/alarm{ + pixel_y = 22; + target_temperature = 274.15 + }, +/obj/machinery/power/port_gen/pacman/super/potato{ + sheets = 100 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/vault) "fy" = ( -/obj/structure/cable/cyan{ +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/structure/cable{ d2 = 2; - icon_state = "0-2" + icon_state = "0-2"; + pixel_y = 0 }, -/obj/machinery/power/smes/buildable/hybrid{ - charge = 1e+007; - cur_coils = 4; - input_attempt = 1; - input_level = 1e+006; - output_level = 2e+006; - RCon = 0 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/mothership/vault) -"fz" = ( -/obj/structure/prop/alien/computer/hybrid{ - dir = 1 +/obj/machinery/power/port_gen/pacman/super/potato{ + sheets = 100 }, +/obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/vault) "fA" = ( -/obj/structure/closet/crate/secure/weapon{ - req_one_access = list(108) - }, -/obj/item/clothing/suit/space/void/merc/fire, -/obj/item/clothing/head/helmet/space/void/merc/fire, -/obj/item/clothing/suit/space/void/merc, -/obj/item/clothing/head/helmet/space/void/merc, -/obj/item/clothing/suit/space/void/merc, -/obj/item/clothing/head/helmet/space/void/merc, -/obj/item/clothing/suit/space/void/merc/odst, -/obj/item/clothing/head/helmet/space/void/merc/odst, -/obj/item/clothing/suit/space/void/security/fluff/hos, -/obj/item/clothing/head/helmet/space/void/security/fluff/hos, -/obj/item/weapon/tank/oxygen/yellow, -/obj/item/weapon/tank/vox, /obj/machinery/power/apc{ alarms_hidden = 1; dir = 1; @@ -2992,6 +2714,17 @@ d2 = 2; icon_state = "0-2" }, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/structure/closet/radiation, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/vault) "fB" = ( @@ -3125,9 +2858,11 @@ d2 = 4; icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "fR" = ( @@ -3136,58 +2871,79 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/door/airlock/vault/bolted{ - id_tag = "ship-vault-door"; - req_one_access = list(109) - }, /obj/machinery/door/firedoor/glass, -/obj/machinery/door/blast/regular{ - destroy_hits = 100; - id = "ship-vault"; - name = "Vault" +/obj/machinery/door/airlock/engineering, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/vault) "fS" = ( /obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/terminal, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/mothership/vault) +"fT" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8" }, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/vault) -"fT" = ( -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 0 +"fU" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" }, /obj/structure/cable/cyan{ d1 = 1; d2 = 4; icon_state = "1-4" }, -/obj/structure/cable/cyan{ - d1 = 1; +/obj/structure/cable{ d2 = 8; - icon_state = "1-8" + icon_state = "0-8" }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/mothership/vault) -"fU" = ( -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/machinery/power/terminal, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 8; - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/vault) @@ -3203,8 +2959,10 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "fW" = ( @@ -3321,144 +3079,40 @@ /turf/simulated/floor/tiled/white, /area/mothership/chemistry) "gh" = ( -/obj/structure/closet/crate/secure/weapon{ - req_one_access = list(108) +/obj/machinery/power/smes/buildable{ + capacity = 2e+007; + charge = 2e+007; + cur_coils = 4; + input_attempt = 1; + input_level = 1e+006; + output_level = 1e+006 }, -/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid_combat, -/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid, -/obj/item/ammo_casing/microbattery/medical/corpse_mend, -/obj/item/ammo_casing/microbattery/medical/corpse_mend, -/obj/item/slime_extract/pink, -/obj/item/slime_extract/pink, -/obj/item/slime_extract/pink, -/obj/item/slime_extract/pink, -/obj/item/slime_extract/pink, -/obj/item/slime_extract/pink, -/obj/item/weapon/cell/slime{ - description_info = "This 'cell' holds a max charge of 20k and self recharges over time."; - icon = 'icons/obj/power.dmi'; - icon_state = "icell"; - maxcharge = 20000; - name = "slime core cell" - }, -/obj/item/weapon/cell/slime{ - description_info = "This 'cell' holds a max charge of 20k and self recharges over time."; - icon = 'icons/obj/power.dmi'; - icon_state = "icell"; - maxcharge = 20000; - name = "slime core cell" - }, -/obj/item/weapon/cell/slime{ - description_info = "This 'cell' holds a max charge of 20k and self recharges over time."; - icon = 'icons/obj/power.dmi'; - icon_state = "icell"; - maxcharge = 20000; - name = "slime core cell" - }, -/obj/item/weapon/cell/slime{ - description_info = "This 'cell' holds a max charge of 20k and self recharges over time."; - icon = 'icons/obj/power.dmi'; - icon_state = "icell"; - maxcharge = 20000; - name = "slime core cell" - }, -/obj/item/slime_extract/pink, -/obj/item/slime_extract/pink, -/obj/item/weapon/deadringer, -/obj/item/weapon/deadringer, +/obj/structure/cable/cyan, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/vault) -"gi" = ( -/obj/structure/closet/crate/secure/weapon{ - req_one_access = list(108) +"gj" = ( +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 }, -/obj/item/weapon/gun/energy/modular/cannon, -/obj/item/weapon/gun/energy/modular/carbine, -/obj/item/weapon/gun/energy/modular/pistol, -/obj/item/weapon/gun/energy/medigun, -/obj/item/weapon/gun/energy/captain, +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman/super/potato{ + sheets = 100 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/techfloor/grid, +/area/mothership/vault) +"gk" = ( /obj/machinery/firealarm{ dir = 1; pixel_x = 0; pixel_y = -25 }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/mothership/vault) -"gj" = ( -/obj/machinery/mineral/equipment_vendor/survey, -/turf/simulated/floor/tiled/techfloor/grid, -/area/mothership/vault) -"gk" = ( -/obj/machinery/power/fractal_reactor/fluff/converter{ - mapped_in = 1; - power_generation_rate = 2e+006 - }, /obj/structure/cable, -/turf/simulated/floor/tiled/techfloor/grid, -/area/mothership/vault) -"gl" = ( -/obj/structure/closet/crate/secure/gear{ - req_one_access = list(108) - }, -/obj/item/rig_module/chem_dispenser/injector/advanced, -/obj/item/rig_module/vision/multi, -/obj/item/weapon/rig/military/equipped, -/obj/item/weapon/rig/pmc/commander, -/obj/item/weapon/rig/pmc/medical, -/obj/item/weapon/rig/pmc/engineer, -/obj/item/weapon/rig/pmc/security, -/obj/item/weapon/rig/pmc/security, -/obj/item/weapon/rig/light/ninja, -/obj/machinery/alarm{ - dir = 1; - pixel_y = -22 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/mothership/vault) -"gm" = ( -/obj/structure/closet/crate/secure/gear{ - req_one_access = list(108) - }, -/obj/item/device/bluespaceradio, -/obj/item/weapon/storage/firstaid/insiderepair, -/obj/item/weapon/storage/firstaid/combat, -/obj/item/weapon/storage/toolbox/syndicate/powertools, -/obj/item/weapon/storage/box/syndie_kit/demolitions_super_heavy{ - name = "Super Heavy Demolitions kit" - }, -/obj/item/weapon/storage/box/syndie_kit/demolitions_heavy{ - name = "Heavy Demolitions kit" - }, -/obj/item/weapon/storage/box/syndie_kit/demolitions_heavy{ - name = "Heavy Demolitions kit" - }, -/obj/item/weapon/storage/box/syndie_kit/demolitions_heavy{ - name = "Heavy Demolitions kit" - }, -/obj/item/weapon/plastique, -/obj/item/weapon/plastique, -/obj/item/weapon/plastique, -/obj/item/weapon/plastique, -/obj/item/weapon/plastique, -/obj/item/weapon/plastique, -/obj/item/weapon/storage/box/emps{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/weapon/cell/device/weapon/recharge/alien, -/obj/item/weapon/cell/device/weapon/recharge/alien, -/obj/item/weapon/cell/device/weapon/recharge/alien, -/obj/item/weapon/cell/device/weapon/recharge/alien, -/obj/item/weapon/cell/device/weapon/recharge/alien, -/obj/item/weapon/cell/device/weapon/recharge/alien, -/obj/item/weapon/material/knife/machete/deluxe{ - default_material = "durasteel" - }, -/obj/item/clothing/accessory/holster/machete, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" +/obj/machinery/power/port_gen/pacman/super/potato{ + sheets = 100 }, +/obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/vault) "gn" = ( @@ -3489,23 +3143,11 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/fans/hardlight, /turf/simulated/floor/plating, /area/mothership/security) "gq" = ( /obj/structure/sign/department/operational, -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/surgery) -"gr" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/surgery) "gs" = ( /obj/structure/cable/cyan{ @@ -3537,12 +3179,7 @@ /area/mothership/chemistry) "gv" = ( /obj/structure/sign/department/medbay, -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/chemistry) "gw" = ( /obj/machinery/light{ @@ -3552,14 +3189,6 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) -"gx" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/vault) "gy" = ( /obj/machinery/light{ dir = 4 @@ -3619,10 +3248,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/security) "gG" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/treatment) "gH" = ( /obj/machinery/vending/blood, @@ -3779,7 +3405,6 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/fans/hardlight, /turf/simulated/floor/plating, /area/mothership/treatment) "gV" = ( @@ -4088,46 +3713,13 @@ /turf/simulated/floor/tiled/white, /area/mothership/treatment) "hu" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/dorm3) -"hv" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/dorm3) "hw" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/dorm4) -"hx" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/dorm4) "hy" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/sechallway) -"hz" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/sechallway) "hA" = ( /obj/machinery/door/airlock/security, @@ -4141,20 +3733,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/sechallway) -"hB" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/processing) -"hC" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/processing) "hD" = ( /obj/machinery/door/airlock/security, /obj/machinery/door/firedoor/glass, @@ -4232,11 +3810,6 @@ /turf/simulated/floor/wood, /area/mothership/dorm3) "hK" = ( -/obj/machinery/door/airlock/voidcraft/vertical{ - glass = 0; - id_tag = "ship-dorm3-door"; - opacity = 1 - }, /obj/structure/cable/cyan{ d1 = 4; d2 = 8; @@ -4249,6 +3822,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/machinery/door/airlock{ + id_tag = "ship-dorm3-door" + }, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/dorm3) "hL" = ( @@ -4273,11 +3849,6 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "hM" = ( -/obj/machinery/door/airlock/voidcraft/vertical{ - glass = 0; - id_tag = "ship-dorm4-door"; - opacity = 1 - }, /obj/structure/cable/cyan{ d1 = 4; d2 = 8; @@ -4290,6 +3861,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/machinery/door/airlock{ + id_tag = "ship-dorm4-door" + }, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/dorm4) "hN" = ( @@ -4503,10 +4077,7 @@ /area/mothership/sechallway) "il" = ( /obj/structure/sign/department/interrogation, -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/processing) "im" = ( /obj/structure/table/steel_reinforced, @@ -4563,18 +4134,10 @@ /turf/simulated/floor/tiled/white, /area/mothership/treatment) "iv" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/morgue) "iw" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/engineering) "ix" = ( /obj/machinery/door_timer/cell_1{ @@ -4667,14 +4230,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/mothership/processing) -"iF" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/treatment) "iG" = ( /obj/machinery/door/airlock/medical, /obj/machinery/door/firedoor/glass, @@ -4862,10 +4417,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/processing) "iV" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/resleeving) "iW" = ( /obj/machinery/computer/transhuman/resleeving{ @@ -4926,14 +4478,6 @@ /obj/machinery/vending/medical, /turf/simulated/floor/tiled/white, /area/mothership/resleeving) -"je" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/morgue) "jf" = ( /obj/machinery/power/apc{ alarms_hidden = 1; @@ -5192,18 +4736,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/sechallway) "jC" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/warden) -"jD" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/warden) "jE" = ( /obj/machinery/door/airlock/security, @@ -5485,7 +5018,6 @@ pixel_y = -32 }, /obj/item/weapon/storage/box/body_record_disk, -/obj/item/weapon/storage/firstaid/insiderepair, /obj/item/weapon/storage/firstaid/clotting, /obj/item/weapon/storage/firstaid/bonemed, /obj/item/weapon/storage/firstaid/adv{ @@ -5513,10 +5045,7 @@ /area/mothership/resleeving) "kd" = ( /obj/structure/sign/department/morgue, -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/morgue) "ke" = ( /obj/structure/table/steel_reinforced, @@ -5576,14 +5105,10 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/fans/hardlight, /turf/simulated/floor/plating, /area/mothership/warden) "kl" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/medical) "km" = ( /obj/machinery/door/airlock/medical, @@ -5774,16 +5299,10 @@ /turf/simulated/floor/wood, /area/mothership/dorm5) "kG" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/dorm5) "kH" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/dorm6) "kI" = ( /obj/structure/closet/wardrobe/ert, @@ -5869,7 +5388,6 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/fans/hardlight, /turf/simulated/floor/plating, /area/mothership/medical) "kP" = ( @@ -5961,11 +5479,6 @@ /turf/simulated/floor/wood, /area/mothership/dorm5) "kX" = ( -/obj/machinery/door/airlock/voidcraft/vertical{ - glass = 0; - id_tag = "ship-dorm5-door"; - opacity = 1 - }, /obj/structure/cable/cyan{ d1 = 4; d2 = 8; @@ -5978,6 +5491,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/machinery/door/airlock{ + id_tag = "ship-dorm5-door" + }, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/dorm5) "kY" = ( @@ -6002,11 +5518,6 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "kZ" = ( -/obj/machinery/door/airlock/voidcraft/vertical{ - glass = 0; - id_tag = "ship-dorm6-door"; - opacity = 1 - }, /obj/structure/cable/cyan{ d1 = 4; d2 = 8; @@ -6019,6 +5530,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/machinery/door/airlock{ + id_tag = "ship-dorm6-door" + }, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/dorm6) "la" = ( @@ -6139,30 +5653,9 @@ /obj/structure/cable/cyan, /turf/simulated/floor/tiled/white, /area/mothership/medical) -"lm" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/dorm5) -"ln" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/dorm6) "lo" = ( /obj/structure/sign/department/armory, -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/armory) "lp" = ( /obj/machinery/door/airlock/highsecurity{ @@ -6179,18 +5672,7 @@ /turf/simulated/floor/tiled/steel_ridged, /area/mothership/armory) "lq" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/armory) -"lr" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/armory) "ls" = ( /obj/machinery/door/airlock/highsecurity{ @@ -6600,24 +6082,10 @@ /area/mothership/medical) "ma" = ( /obj/structure/sign/department/medbay, -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/medical) "mb" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/bridge) -"mc" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/bridge) "md" = ( /obj/item/weapon/storage/box/flashshells, @@ -6708,10 +6176,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/armory) "mi" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/rnd) "mj" = ( /obj/machinery/r_n_d/destructive_analyzer, @@ -6769,13 +6234,6 @@ /obj/machinery/computer/ship/helm, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/bridge) -"mt" = ( -/obj/structure/sign/department/armory, -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/armory) "mu" = ( /obj/item/ammo_magazine/m545/ap, /obj/item/ammo_magazine/m545/ap, @@ -7023,10 +6481,7 @@ /area/mothership/rnd) "mT" = ( /obj/structure/sign/department/rnd, -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/rnd) "mU" = ( /obj/machinery/power/apc{ @@ -7238,14 +6693,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/mothership/rnd) -"nk" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/rnd) "nl" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -7459,12 +6906,7 @@ /area/mothership/hallway) "nF" = ( /obj/structure/sign/department/bridge, -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/bridge) "nG" = ( /obj/machinery/computer/communications{ @@ -7785,6 +7227,7 @@ }, /obj/machinery/turretid/stun{ check_access = 0; + check_records = 0; check_weapons = 1; control_area = /area/mothership/hallway; name = "anti-boarding turret controls"; @@ -7815,14 +7258,6 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/bridge) "ok" = ( -/obj/machinery/button/remote/airlock{ - id = "ship-vault-door"; - name = "Vault Lock"; - pixel_x = -6; - pixel_y = -26; - req_one_access = list(108); - specialfunctions = 4 - }, /obj/machinery/turretid/lethal{ ailock = 1; check_synth = 0; @@ -7835,18 +7270,10 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/bridge) "ol" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/holodeck) "om" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/robotics) "on" = ( /obj/structure/closet/toolcloset, @@ -7916,12 +7343,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) -"ow" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/holodeck) "ox" = ( /obj/machinery/alarm{ dir = 4; @@ -7968,11 +7389,9 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/fans/hardlight, /turf/simulated/floor/plating, /area/mothership/holodeck) "oB" = ( -/obj/structure/closet/excavation, /obj/machinery/light{ dir = 8; icon_state = "tube1" @@ -8249,16 +7668,13 @@ icon_state = "4-8" }, /obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/voidcraft/vertical{ - id_tag = "ship-holodeck-door"; - opacity = 1 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/machinery/door/airlock, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/holodeck) "pc" = ( @@ -8299,29 +7715,17 @@ /turf/simulated/floor/tiled/techfloor, /area/mothership/holodeck) "pe" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/telecomms1) "pk" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/cryotube) -"pq" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/telecomms2) "pr" = ( -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_6_outer"; + locked = 1; req_one_access = list(101) }, /obj/machinery/access_button{ @@ -8333,7 +7737,6 @@ pixel_y = -26; req_one_access = list(101) }, -/obj/structure/fans/hardlight, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/telecomms1) "ps" = ( @@ -8372,9 +7775,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_6_inner"; + locked = 1; req_one_access = list(101) }, /turf/simulated/floor/tiled/techfloor/grid, @@ -8515,12 +7920,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) -"pD" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/cryotube) "pE" = ( /obj/machinery/vending/loadout/accessory, /turf/simulated/floor/tiled/steel_grid, @@ -8666,9 +8065,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_3_inner"; + locked = 1; req_one_access = list(101) }, /turf/simulated/floor/tiled/techfloor/grid, @@ -8702,9 +8103,11 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/telecomms2) "pU" = ( -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_3_outer"; + locked = 1; req_one_access = list(101) }, /obj/machinery/access_button{ @@ -8716,17 +8119,8 @@ pixel_y = -26; req_one_access = list(101) }, -/obj/structure/fans/hardlight, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/telecomms2) -"pV" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, -/area/mothership/telecomms1) "pW" = ( /obj/machinery/alarm{ dir = 4; @@ -8766,10 +8160,7 @@ /area/mothership/telecomms1) "qb" = ( /obj/structure/sign/department/telecoms, -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/telecomms1) "qc" = ( /obj/structure/closet/crate/bin, @@ -8788,7 +8179,6 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "qe" = ( -/obj/machinery/door/airlock/voidcraft/vertical, /obj/structure/cable/cyan{ d1 = 4; d2 = 8; @@ -8798,6 +8188,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/machinery/door/airlock, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/cryotube) "qf" = ( @@ -8838,11 +8229,11 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/cryotube) "qk" = ( -/obj/machinery/door/airlock/voidcraft/vertical, /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/machinery/door/airlock, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/cryotube) "ql" = ( @@ -8860,10 +8251,7 @@ /area/mothership/hallway) "qm" = ( /obj/structure/sign/department/telecoms, -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/telecomms2) "qn" = ( /obj/machinery/computer/rdservercontrol{ @@ -8914,39 +8302,12 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/telecomms2) "qs" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - hard_corner = 1; - icon_state = "void-hc"; - name = "small craft wall hc"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/telecomms2) "qt" = ( /obj/machinery/telecomms/bus/preset_cent, /turf/simulated/floor/greengrid, /area/mothership/telecomms1) -"qu" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 8 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - icon_state = "corner_techfloor_grid"; - dir = 6 - }, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive, -/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay, -/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay, -/obj/structure/closet/walllocker{ - name = "Equipment Locker"; - pixel_x = -32 - }, -/obj/item/mecha_parts/mecha_equipment/crisis_drone/rad, -/obj/item/mecha_parts/mecha_equipment/crisis_drone/rad, -/obj/item/mecha_parts/mecha_equipment/repair_droid, -/obj/item/mecha_parts/mecha_equipment/repair_droid, -/turf/simulated/floor/tiled/techfloor, -/area/mothership/telecomms1) "qv" = ( /obj/machinery/telecomms/processor/preset_cent, /turf/simulated/floor/greengrid, @@ -8967,10 +8328,7 @@ /area/mothership/telecomms1) "qB" = ( /obj/structure/sign/department/eng, -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/engineering) "qC" = ( /obj/machinery/door/airlock/engineeringatmos, @@ -9033,33 +8391,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/engineering) -"qJ" = ( -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, -/area/mothership/engineering) -"qN" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 4 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 9 - }, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon, -/obj/item/mecha_parts/mecha_equipment/crisis_drone, -/obj/item/mecha_parts/mecha_equipment/crisis_drone, -/obj/structure/closet/walllocker{ - name = "Equipment Locker"; - pixel_x = 32 - }, -/obj/item/mecha_parts/mecha_equipment/crisis_drone/rad, -/obj/item/mecha_parts/mecha_equipment/crisis_drone/rad, -/obj/item/mecha_parts/mecha_equipment/repair_droid, -/obj/item/mecha_parts/mecha_equipment/repair_droid, -/turf/simulated/floor/tiled/techfloor, -/area/mothership/telecomms2) "qR" = ( /obj/machinery/atmospherics/portables_connector{ dir = 4 @@ -9283,28 +8614,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/mothership/engineering) -"rr" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 8 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - icon_state = "corner_techfloor_grid"; - dir = 6 - }, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive, -/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay, -/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay, -/obj/structure/closet/walllocker{ - name = "Equipment Locker"; - pixel_x = -32 - }, -/obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64, -/obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64, -/obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64, -/obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64, -/turf/simulated/floor/tiled/techfloor, -/area/mothership/telecomms2) "rt" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 8 @@ -9868,9 +9177,11 @@ /area/mothership/engineering) "sD" = ( /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_5_inner"; + locked = 1; req_one_access = list(101) }, /turf/simulated/floor/tiled/techfloor/grid, @@ -9883,16 +9194,15 @@ /area/mothership/engineering) "sF" = ( /obj/machinery/atmospherics/pipe/simple/visible/black, -/turf/simulated/shuttle/wall/voidcraft/blue{ - name = "small craft wall"; - stripe_color = "#45b3d8" - }, +/turf/simulated/wall/rpshull, /area/mothership/engineering) "sG" = ( /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_4_inner"; + locked = 1; req_one_access = list(101) }, /turf/simulated/floor/tiled/techfloor/grid, @@ -9961,9 +9271,11 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/engineering) "sL" = ( -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_5_outer"; + locked = 1; req_one_access = list(101) }, /obj/machinery/access_button{ @@ -9975,7 +9287,6 @@ pixel_y = -5; req_one_access = list(101) }, -/obj/structure/fans/hardlight, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/engineering) "sN" = ( @@ -10046,6 +9357,9 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) +"tG" = ( +/turf/simulated/wall/rpshull, +/area/mothership/breakroom) "tK" = ( /obj/item/modular_computer/console/preset/mercenary{ dir = 4 @@ -10098,23 +9412,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_2_inner"; + locked = 1; req_one_access = list(101) }, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/eva) -"uV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/computer/gravity_control_computer{ - density = 0; - icon_keyboard = "laptop_key"; - icon_screen = "atmoslaptop"; - icon_state = "laptop" - }, -/turf/simulated/floor/reinforced, -/area/mothership/telecomms1) "vb" = ( /turf/simulated/floor/reinforced/airless{ name = "outer hull" @@ -10153,13 +9459,6 @@ /area/mothership/hallway) "wO" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden, -/obj/machinery/gravity_generator{ - active_power_usage = 10; - density = 0; - effectiverange = 1; - icon_state = "beacon1"; - idle_power_usage = 2 - }, /turf/simulated/floor/reinforced, /area/mothership/telecomms1) "wT" = ( @@ -10230,9 +9529,11 @@ /area/mothership/hallway) "yi" = ( /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_1_inner"; + locked = 1; req_one_access = list(101) }, /turf/simulated/floor/tiled/techfloor/grid, @@ -10246,6 +9547,20 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) +"yE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/vault{ + req_one_access = list(101) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/mothership/vault) "yG" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -10382,6 +9697,30 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/eva) +"Df" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/mothership/vault) "Do" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 @@ -10398,27 +9737,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) -"DU" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 4 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 9 - }, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon, -/obj/item/mecha_parts/mecha_equipment/crisis_drone, -/obj/item/mecha_parts/mecha_equipment/crisis_drone, -/obj/structure/closet/walllocker{ - name = "Equipment Locker"; - pixel_x = 32 - }, -/obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64, -/obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64, -/obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64, -/obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64, -/turf/simulated/floor/tiled/techfloor, -/area/mothership/telecomms1) "DX" = ( /obj/effect/floor_decal/techfloor/orange{ icon_state = "techfloororange_edges"; @@ -10574,16 +9892,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/mothership/telecomms2) -"GW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/computer/gravity_control_computer{ - density = 0; - icon_keyboard = "laptop_key"; - icon_screen = "atmoslaptop"; - icon_state = "laptop" - }, -/turf/simulated/floor/reinforced, -/area/mothership/telecomms2) "Hl" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 8 @@ -10750,9 +10058,11 @@ /turf/simulated/floor/wood, /area/mothership/breakroom) "PT" = ( -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_4_outer"; + locked = 1; req_one_access = list(101) }, /obj/machinery/access_button{ @@ -10764,7 +10074,6 @@ pixel_y = -5; req_one_access = list(101) }, -/obj/structure/fans/hardlight, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/engineering) "QF" = ( @@ -10854,13 +10163,6 @@ /area/mothership/bridge) "Sj" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden, -/obj/machinery/gravity_generator{ - active_power_usage = 10; - density = 0; - effectiverange = 1; - icon_state = "beacon1"; - idle_power_usage = 2 - }, /turf/simulated/floor/reinforced, /area/mothership/telecomms2) "Su" = ( @@ -10875,11 +10177,6 @@ name = "outer hull" }, /area/mothership/bridge) -"Sv" = ( -/turf/simulated/floor/reinforced/airless{ - name = "outer hull" - }, -/area/mothership/breakroom) "Sx" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -10929,9 +10226,11 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "SM" = ( -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_1_outer"; + locked = 1; req_one_access = list(101) }, /obj/machinery/access_button{ @@ -10943,7 +10242,6 @@ pixel_y = 5; req_one_access = list(101) }, -/obj/structure/fans/hardlight, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/breakroom) "SV" = ( @@ -10986,6 +10284,23 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) +"Tr" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/vault{ + req_one_access = list(101) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/mothership/vault) +"TE" = ( +/turf/simulated/wall/rpshull, +/area/mothership/processing) "TK" = ( /obj/effect/floor_decal/techfloor/orange{ icon_state = "techfloororange_edges"; @@ -11009,6 +10324,19 @@ /obj/machinery/meter, /turf/simulated/floor/reinforced, /area/mothership/telecomms1) +"Vb" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/engineering, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/mothership/vault) "Wi" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -11031,6 +10359,24 @@ /obj/structure/fans/hardlight, /turf/simulated/floor/tiled/steel_ridged, /area/mothership/telecomms1) +"WN" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/blast/regular{ + density = 0; + destroy_hits = 1000; + dir = 4; + icon_state = "pdoor0"; + id = "ship-lounge"; + name = "Shuttle Blast Doors"; + opacity = 0 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/mothership/breakroom) "Xh" = ( /obj/item/modular_computer/console/preset/mercenary{ dir = 8 @@ -11110,9 +10456,11 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "ZS" = ( -/obj/machinery/door/airlock/alien/blue/locked{ +/obj/machinery/door/airlock/external{ frequency = 1380; + icon_state = "door_locked"; id_tag = "ws_dock_2_outer"; + locked = 1; req_one_access = list(101) }, /obj/machinery/access_button{ @@ -11124,7 +10472,6 @@ pixel_y = 26; req_one_access = list(101) }, -/obj/structure/fans/hardlight, /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/eva) "ZZ" = ( @@ -18903,7 +18250,7 @@ uh cq cq bc -nk +mi om om om @@ -19049,15 +18396,15 @@ mi on oB oL -pV +pe pt -pV pe pe pe pe pe -pV +pe +pe bc aa aa @@ -19196,7 +18543,7 @@ pu pW Ox BQ -qu +rj rt qw WE @@ -19304,14 +18651,14 @@ eW fp fK gc -gr +dJ gI gW hp hp hY ir -iF +gG iX jq jH @@ -19480,10 +18827,10 @@ qt Ge UD wO -uV +Kd Kd AL -pV +pe uh aa aa @@ -19569,7 +18916,7 @@ aa aa bc Su -be +bd bC bC bd @@ -19579,7 +18926,7 @@ cI cr bc df -ds +df dJ dJ dJ @@ -19588,14 +18935,14 @@ eK eK eK eK -eL +eK gK gY hr hp ia hp -iF +gG iZ js jJ @@ -19705,20 +19052,20 @@ aa aa aa uh -ae +tG au au au -ae +tG +bd bd -be bD bR -bk +bi +cr cr -cs cJ -cs +cr cr df dt @@ -19764,7 +19111,7 @@ py pY DX RE -DU +XQ XQ Ch WE @@ -19845,9 +19192,9 @@ aa aa aa aa -ab -ab -ae +tG +tG +tG ao ao ao @@ -19879,7 +19226,7 @@ hp hp hp is -iF +gG jb ju jJ @@ -19904,17 +19251,17 @@ oQ pe pz pZ -qJ -qJ -qJ -qJ -qJ -qJ -qJ -qJ -qJ -qJ -qJ +iw +iw +iw +iw +iw +iw +iw +iw +iw +iw +iw aa aa aa @@ -20046,7 +19393,7 @@ oR pe pA qv -qJ +iw qT qT qT @@ -20129,9 +19476,9 @@ aa aa aa aa -ae -ab -ae +tG +tG +tG av Do ao @@ -20147,11 +19494,11 @@ cM cW cr di -ds -dM +df +dL dL eu -eL +eK eK fu fP @@ -20163,7 +19510,7 @@ gG hG id iu -iF +gG jd jw jL @@ -20178,17 +19525,17 @@ ma mi mD mT -nk +mi nD -nk -nk +mi +mi ou oG oS -pV +pe pB qb -qJ +iw qU rk ru @@ -20197,7 +19544,7 @@ sc ss sy iw -qJ +iw iw aa aa @@ -20270,9 +19617,9 @@ aa aa aa aa -aa -ag -ab +bc +tG +tG ao ao Do @@ -20284,9 +19631,9 @@ bG bT bo cr -cs +cr cN -cs +cr cr dj dw @@ -20306,9 +19653,9 @@ gG gG gG gG -je +iv jx -je +iv kd iv kl @@ -20412,9 +19759,9 @@ aa aa aa aa -aa -Sv -ae +cq +tG +tG ap ao Do @@ -20554,8 +19901,8 @@ aa aa aa aa -aa uh +WN ac ao aw @@ -20575,14 +19922,14 @@ cr dl dy dO -dP -dP -dP +dO +dO +dO fd fd fR fd -gx +fd dz EK hu @@ -20601,22 +19948,22 @@ kG EK dz mb -mc -mc +mb +mb mb nm nF -mc -mc +mb +mb mb dl dy pk -pD +pk qe -pD -pD -pD +pk +pk +pk rx rO sf @@ -20695,28 +20042,28 @@ aa aa aa aa -aa -ab -ab -ae +tG +tG +tG +tG aq ax FW aH aR -be +bd bq bH bU -be -cs +bd +cr cB cO cZ cr Ep dz -dP +dO ec ew eN @@ -20742,7 +20089,7 @@ kW kG YP ts -mc +mb mq Ux mV @@ -20750,15 +20097,15 @@ nn mG mE oh -mc +mb EK oV -pD +pk pE qf qD qX -pD +pk ry rP sg @@ -20837,7 +20184,7 @@ aa aa aa aa -aa +WN ac ah aj @@ -20851,25 +20198,25 @@ br bI bT cf -cs +cr cC cO da de EK dA -dP +dO ed ex eO fd -fw -fS -gi +fd +Tr +fd fd Pi KO -hv +hu hK hu iv @@ -20881,10 +20228,10 @@ iv iv kG kX -lm +kG xE Yt -mc +mb mr uI mW @@ -20892,15 +20239,15 @@ no no no oi -mc +mb EK oW -pD +pk pF qg qE qY -pD +pk rz rQ sh @@ -20979,7 +20326,7 @@ aa aa aa aa -aa +WN ac ah ak @@ -20988,7 +20335,7 @@ az aE az aT -be +bd bs bJ bV @@ -21006,7 +20353,7 @@ ey eP fd fx -fS +Df gj fd zd @@ -21026,7 +20373,7 @@ kY dS he dD -mc +mb ms mG uI @@ -21034,21 +20381,21 @@ np nG nT Xh -mc +mb Ep oX -pD +pk pG qh qF qZ -pD +pk rA rR si su sA -qJ +iw cq cq bc @@ -21121,7 +20468,7 @@ aa aa aa aa -aa +WN ac ah ak @@ -21130,7 +20477,7 @@ az az az aU -be +bd bt bK bW @@ -21168,7 +20515,7 @@ dj dy EK FQ -mc +mb wT mG uI @@ -21176,15 +20523,15 @@ nq nH nU tK -mc +mb EK oY -pD +pk pH qh qF ra -pD +pk rB rS sj @@ -21263,7 +20610,7 @@ aa aa aa aa -aa +WN ac ah al @@ -21277,27 +20624,27 @@ bu bL bX ci -cs +cr cF cO dd -cs +cr EK dA -dP +dO eg Hl eR fd -fz -fS -gl +fd +yE +fd fd gR EK hw hM -hx +hw hy hy hy @@ -21307,10 +20654,10 @@ hy hy kH kZ -ln +kH EK dA -mc +mb Sa uI mX @@ -21318,15 +20665,15 @@ nr nr nr oj -mc +mb ZL oZ -pD +pk pI qi qG rb -pD +pk rB rT sk @@ -21405,10 +20752,10 @@ aa aa aa aa -aa -ab -ab -ae +tG +tG +tG +tG aq ax FW @@ -21419,25 +20766,25 @@ bv bM bY cj -cs +cr cG cO cZ cr QH JJ -dP +dO ex eA eh fd fA fU -gm +gh fd dz EK -hx +hw hN ih hy @@ -21452,7 +20799,7 @@ la kH EK dz -mc +mb Xy QF mY @@ -21460,15 +20807,15 @@ ns mG mH ok -mc +mb YP Kc -pD +pk pJ qj qH rc -pD +pk rC rU sl @@ -21548,8 +20895,8 @@ aa aa aa aa -aa uh +WN ac ao aB @@ -21569,17 +20916,17 @@ cr SV wA dO -dP -dP -dP +dO +dO +dO fd fd -fR +Vb +fd fd -gx dy dl -hx +hw hO ii hy @@ -21595,22 +20942,22 @@ kH dl dy mb -mc -mc +mb +mb mb nt nF -mc -mc +mb +mb mb SV Yv pk -pD +pk qk -pD -pD -pD +pk +pk +pk rD rV sm @@ -21690,9 +21037,9 @@ aa aa aa aa -aa -Sv -ae +cq +tG +tG as ao Do @@ -21721,7 +21068,7 @@ HG yW dx Kr -hx +hw hP ij hy @@ -21832,9 +21179,9 @@ aa aa aa aa -aa -ag -ab +bc +tG +tG at ao Do @@ -21846,9 +21193,9 @@ bN ca cm cr -cs +cr cN -cs +cr cr dj dE @@ -21892,7 +21239,7 @@ dj dz EK qc -qJ +iw re ro rF @@ -21975,9 +21322,9 @@ aa aa aa aa -ae -ab -ae +tG +tG +tG av Do ao @@ -21993,11 +21340,11 @@ cR cW cr do -dF +dr dU dU eC -eT +dV dV dV dV @@ -22005,7 +21352,7 @@ dV dV gT hg -hz +hy hQ hQ ix @@ -22021,20 +21368,20 @@ lo lB lS lq -mt -lr -lr -lr +lo +lq +lq +lq lo nW ol -ow +ol ol pb qs pK qm -qJ +iw rf rp rG @@ -22043,7 +21390,7 @@ rX sw sC iw -qJ +iw iw aa aa @@ -22169,14 +21516,14 @@ mZ nv nI nX -lr +lq ox oJ pc -pq +qs pL qn -qJ +iw rg rq rH @@ -22259,9 +21606,9 @@ aa aa aa aa -ab -ab -ae +tG +tG +tG ao ao ao @@ -22289,18 +21636,18 @@ gn gA fY hi -hB -hC +TE +TE il iz -hC -hC +TE +TE +jC +jC jC -jD -jD kp -jD -jD +jC +jC lq lD lU @@ -22311,24 +21658,24 @@ lG lG lG nY -lr +lq oy oK pd -pq +qs pM qo -qJ -qJ -qJ -qJ -qJ -qJ -qJ -qJ -qJ -qJ -qJ +iw +iw +iw +iw +iw +iw +iw +iw +iw +iw +iw aa aa aa @@ -22403,20 +21750,20 @@ aa aa aa uh -ae +tG aC aC aC -ae +tG +bi bi -bk bP cc -bk +bi +cr cr -cs uS -cs +cr cr dr dI @@ -22431,19 +21778,19 @@ fY gB fY hj -hC +TE hS im iA iR jk -jD +jC jS kh kq kL ld -lr +lq lE lV me @@ -22453,16 +21800,16 @@ na nw nJ nZ -lr +lq oz oz oz -pq +qs pN qp TK rh -rr +EV GT rZ sq @@ -22551,7 +21898,7 @@ aa aa bc cq -bk +bi bQ bQ bi @@ -22561,7 +21908,7 @@ cT cr bc dr -dF +dr dV dV dV @@ -22573,7 +21920,7 @@ fY gC fY hk -hB +TE hT in iB @@ -22595,11 +21942,11 @@ nb nx nK oa -lr +lq oz oz oz -pq +qs pO qq tb @@ -22737,16 +22084,16 @@ nc ny nL ob -lr +lq oz oz oz -pq +qs pP Sz Bd Sj -GW +vi vi KA qs @@ -22857,7 +22204,7 @@ fl gE fl hm -hB +TE hV in iD @@ -22879,11 +22226,11 @@ lG lG lG oc -lr +lq oz oz oz -pq +qs pQ qq TK @@ -22999,19 +22346,19 @@ go gF fY hn -hC +TE hW ip iE iU jn -jD +jC jW ki ku ki lg -lr +lq lI lX mh @@ -23021,16 +22368,16 @@ nd nz nM od -lr +lq oz oz oz -pq +qs pR qr tb Hs -qN +Ez Ez wm sq @@ -23136,45 +22483,45 @@ dV dV dV dV -eT +dV gp gp gp dV -hC -hC -hC -hC -hC -hC -jD +TE +TE +TE +TE +TE +TE +jC jC kk kk kk -jD -lr -lr -lr -lr -lr -lr -lr -lr -lr -lr -lr +jC +lq +lq +lq +lq +lq +lq +lq +lq +lq +lq +lq oz oz oz qs pS qs -pq -pq -pq -pq -pq +qs +qs +qs +qs +qs qs bc aa @@ -23309,9 +22656,9 @@ lq oA oA oA -pq +qs pT -pq +qs bc cq cq @@ -23451,9 +22798,9 @@ aa aa aa aa -pq +qs pU -pq +qs aa aa aa diff --git a/maps/tether/submaps/om_ships/curashuttle.dm b/maps/tether/submaps/om_ships/curashuttle.dm new file mode 100644 index 0000000000..158d145894 --- /dev/null +++ b/maps/tether/submaps/om_ships/curashuttle.dm @@ -0,0 +1,67 @@ +// Compile in the map for CI testing if we're testing compileability of all the maps +#if MAP_TEST +#include "curashuttle.dmm" +#endif + +// Map template for spawning the shuttle +/datum/map_template/om_ships/curabiturmedical + name = "OM Ship - Curabitur Rescue Shuttle (new Z)" + desc = "A small corporate rescue shuttle." + mappath = 'curashuttle.dmm' + annihilate = TRUE + +// The shuttle's area(s) +/area/shuttle/curabitur/curashuttle/eng + name = "\improper Curabitur Rescue - Engineering" + icon_state = "shuttle2" + requires_power = 1 + +/area/shuttle/curabitur/curashuttle/med + name = "\improper Curabitur Rescue - Medbay" + icon_state = "shuttle2" + requires_power = 1 + +/area/shuttle/curabitur/curashuttle/hangar + name = "\improper Curabitur Rescue - Hangar" + icon_state = "shuttle2" + requires_power = 1 + +/area/shuttle/curabitur/curashuttle/cockpit + name = "\improper Curabitur Rescue - Cockpit" + icon_state = "shuttle2" + requires_power = 1 + +// The shuttle's 'shuttle' computer +/obj/machinery/computer/shuttle_control/explore/curashuttle + name = "short jump console" + shuttle_tag = "Cura" + req_one_access = list() + +// The 'shuttle' +/datum/shuttle/autodock/overmap/curashuttle + name = "Cura" + current_location = "omship_spawn_curashuttle" + docking_controller_tag = "curadocking" + shuttle_area = list(/area/shuttle/curabitur/curashuttle/eng, /area/shuttle/curabitur/curashuttle/med, /area/shuttle/curabitur/curashuttle/hangar, /area/shuttle/curabitur/curashuttle/cockpit) + defer_initialisation = TRUE //We're not loaded until an admin does it + fuel_consumption = 3 + +// A shuttle lateloader landmark +/obj/effect/shuttle_landmark/shuttle_initializer/curashuttle + name = "CRV Rescue" + base_area = /area/space + base_turf = /turf/space + landmark_tag = "omship_spawn_curashuttle" + shuttle_type = /datum/shuttle/autodock/overmap/curashuttle + +// The 'ship' +/obj/effect/overmap/visitable/ship/landable/curashuttle + scanner_name = "CRV Doom Delay" + scanner_desc = @{"[i]Registration[/i]: Curabitur Scimed +[i]Class[/i]: Small Shuttle +[i]Transponder[/i]: Transmitting (CIV), non-hostile +[b]Notice[/b]: Small private vessel"} + color = "#01A9DB" + vessel_mass = 2000 + vessel_size = SHIP_SIZE_TINY + shuttle = "Cura" \ No newline at end of file diff --git a/maps/tether/submaps/om_ships/curashuttle.dmm b/maps/tether/submaps/om_ships/curashuttle.dmm new file mode 100644 index 0000000000..91c134a7cd --- /dev/null +++ b/maps/tether/submaps/om_ships/curashuttle.dmm @@ -0,0 +1,1916 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/simulated/wall/rdshull, +/area/shuttle/curabitur/curashuttle/med) +"ac" = ( +/obj/machinery/shipsensors{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor/orange{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor/orange{ + dir = 8 + }, +/turf/simulated/shuttle/plating/airless, +/area/shuttle/curabitur/curashuttle/cockpit) +"ad" = ( +/turf/simulated/wall/rdshull, +/area/shuttle/curabitur/curashuttle/cockpit) +"ae" = ( +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "mediwindowshutters"; + name = "Window Blast Door"; + opacity = 0 + }, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/shuttle/curabitur/curashuttle/med) +"af" = ( +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "mediwindowshutters"; + name = "Window Blast Door"; + opacity = 0 + }, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/shuttle/curabitur/curashuttle/cockpit) +"ag" = ( +/obj/structure/sign/redcross, +/turf/simulated/wall/rdshull, +/area/shuttle/curabitur/curashuttle/med) +"ah" = ( +/obj/machinery/optable, +/obj/machinery/oxygen_pump/anesthetic{ + pixel_x = -25 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"ai" = ( +/obj/machinery/computer/operating, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"aj" = ( +/obj/machinery/vending/blood{ + density = 0; + pixel_y = 18; + req_access = newlist() + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"ak" = ( +/obj/machinery/body_scanconsole{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"al" = ( +/obj/machinery/bodyscanner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"am" = ( +/turf/simulated/wall/shull, +/area/shuttle/curabitur/curashuttle/cockpit) +"an" = ( +/obj/machinery/computer/shuttle_control/explore/curashuttle{ + icon_state = "computer"; + dir = 4 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"ao" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"ap" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24; + pixel_y = 0 + }, +/obj/structure/table/darkglass, +/obj/item/weapon/paper_bin{ + pixel_y = -2; + pixel_x = 8 + }, +/obj/item/weapon/pen/fountain, +/obj/machinery/photocopier/faxmachine{ + department = "Curabitur Rescue Service"; + name = "Curabitur fax machine"; + pixel_y = 6 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aq" = ( +/obj/structure/sign/redcross, +/turf/simulated/wall/rdshull, +/area/shuttle/curabitur/curashuttle/cockpit) +"ar" = ( +/obj/item/weapon/storage/firstaid/surgery, +/obj/item/weapon/surgical/scalpel/manager, +/obj/item/weapon/surgical/scalpel/ripper, +/obj/item/weapon/surgical/circular_saw/manager, +/obj/item/stack/nanopaste/advanced, +/obj/item/stack/nanopaste/advanced, +/obj/structure/table/standard, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"as" = ( +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"at" = ( +/obj/structure/closet/crate, +/obj/item/weapon/gun/projectile/cell_loaded/medical/cmo, +/obj/item/ammo_casing/microbattery/medical/stabilize2, +/obj/item/ammo_casing/microbattery/medical/stabilize2, +/obj/item/ammo_casing/microbattery/medical/haste, +/obj/item/ammo_casing/microbattery/medical/haste, +/obj/item/ammo_casing/microbattery/medical/antirad, +/obj/item/ammo_casing/microbattery/medical/resist, +/obj/item/ammo_magazine/cell_mag/medical/advanced, +/obj/item/ammo_magazine/cell_mag/medical/advanced, +/obj/item/clothing/accessory/holster/hip, +/obj/item/clothing/suit/storage/toggle/labcoat/cmoalt{ + name = "Curabitur medical officer labcoat" + }, +/obj/item/clothing/under/shorts/jeans/classic/female, +/obj/item/clothing/gloves/fluff/siren, +/obj/item/clothing/shoes/boots/fluff/siren, +/obj/item/device/radio/headset/volunteer, +/obj/item/clothing/accessory/storage/white_drop_pouches, +/obj/item/weapon/storage/backpack/dufflebag/syndie/med, +/obj/item/ammo_casing/microbattery/medical/brute3, +/obj/item/ammo_casing/microbattery/medical/brute3, +/obj/item/ammo_casing/microbattery/medical/burn3, +/obj/item/ammo_casing/microbattery/medical/burn3, +/obj/item/ammo_casing/microbattery/medical/toxin3, +/obj/item/weapon/card/id/syndicate{ + access = list(616); + assignment = "Curabitur Contractor"; + origin_tech = newlist() + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"au" = ( +/obj/structure/medical_stand, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"av" = ( +/obj/machinery/computer/ship/helm{ + dir = 4; + icon_state = "computer"; + req_one_access = newlist() + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/bed/chair/bay/comfy{ + icon_state = "bay_comfychair_preview"; + dir = 1 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"ax" = ( +/obj/machinery/computer/ship/engines{ + icon_state = "computer"; + dir = 8 + }, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 4 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"ay" = ( +/obj/item/weapon/bedsheet/bluedouble, +/obj/structure/bed/double/padded, +/obj/structure/curtain/open/bed, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"az" = ( +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/med) +"aA" = ( +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/toxin, +/obj/item/weapon/storage/pill_bottle/spaceacillin, +/obj/structure/table/standard, +/obj/item/device/healthanalyzer/advanced, +/obj/item/device/healthanalyzer/advanced, +/obj/item/weapon/reagent_containers/spray/cleaner, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"aB" = ( +/obj/item/weapon/surgical/scalpel/alien, +/obj/item/weapon/surgical/retractor/alien, +/obj/item/weapon/surgical/hemostat/alien, +/obj/item/weapon/surgical/circular_saw/alien, +/obj/item/weapon/surgical/cautery/alien, +/obj/item/weapon/surgical/FixOVein/alien, +/obj/item/weapon/surgical/surgicaldrill/alien, +/obj/structure/table/standard, +/obj/item/ammo_casing/microbattery/medical/corpse_mend, +/obj/machinery/recharger{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/machinery/recharger{ + pixel_y = 8; + pixel_x = 2 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"aC" = ( +/obj/machinery/organ_printer/flesh/full, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"aD" = ( +/obj/item/weapon/storage/backpack/dufflebag/syndie/med, +/obj/item/weapon/storage/belt/medical, +/obj/item/weapon/storage/belt/medical, +/obj/item/weapon/storage/belt/medical, +/obj/structure/table/rack, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"aE" = ( +/obj/machinery/computer/ship/sensors{ + icon_state = "computer"; + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -29; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aF" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aG" = ( +/obj/machinery/button/remote/blast_door{ + name = "Hangar blast door control"; + plane = 0; + pixel_y = 8; + pixel_x = 8; + id = "medihangar" + }, +/obj/structure/table/darkglass, +/obj/machinery/button/remote/blast_door{ + id = "mediwindowshutters"; + name = "Window shutters"; + pixel_x = -9; + pixel_y = 8 + }, +/obj/machinery/atmospherics/pipe/vent, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 4 + }, +/obj/machinery/button/remote/airlock/survival_pod{ + id = "curadocking"; + name = "Main airlock lock"; + pixel_y = 8 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aH" = ( +/obj/item/weapon/storage/secure/safe{ + pixel_x = 31 + }, +/obj/item/weapon/gun/projectile/automatic/mini_uzi, +/obj/item/weapon/card/id/syndicate{ + access = list(616); + assignment = "Curabitur Contractor"; + origin_tech = newlist() + }, +/obj/item/weapon/card/id/syndicate{ + access = list(616); + assignment = "Curabitur Contractor"; + origin_tech = newlist() + }, +/obj/item/weapon/spacecash/c1000, +/obj/item/weapon/spacecash/c1000, +/obj/item/weapon/spacecash/c1000, +/obj/item/weapon/spacecash/c1000, +/obj/item/weapon/spacecash/c1000, +/obj/item/weapon/spacecash/c1000, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aI" = ( +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/cockpit) +"aJ" = ( +/obj/machinery/sleep_console{ + icon_state = "sleeperconsole"; + dir = 2; + pixel_x = -1 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"aK" = ( +/obj/structure/table/standard, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/device/robotanalyzer, +/obj/item/device/robotanalyzer, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/item/weapon/reagent_containers/dropper, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"aL" = ( +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + dir = 8; + frequency = 1480; + id_tag = "curadocking"; + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"aM" = ( +/obj/structure/table/rack, +/obj/item/device/defib_kit/jumper_kit/loaded, +/obj/item/device/defib_kit/compact/combat/loaded, +/obj/item/device/defib_kit/compact/combat/loaded, +/obj/item/device/mmi/radio_enabled{ + req_access = newlist() + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"aN" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/closet, +/obj/item/clothing/under/rank/nurse, +/obj/item/clothing/under/rank/nurse, +/obj/item/clothing/under/rank/medical, +/obj/item/clothing/shoes/blue, +/obj/item/clothing/shoes/blue, +/obj/item/clothing/suit/storage/toggle/bomber/pilot, +/obj/item/clothing/suit/storage/toggle/labcoat, +/obj/item/clothing/accessory/storage/white_drop_pouches, +/obj/item/clothing/accessory/storage/white_drop_pouches, +/obj/item/clothing/accessory/holster/machete, +/obj/item/clothing/accessory/holster/hip, +/obj/item/weapon/material/knife/machete, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aQ" = ( +/obj/machinery/recharger/wallcharger{ + pixel_y = -10; + pixel_x = 31 + }, +/obj/machinery/recharger/wallcharger{ + pixel_y = -2; + pixel_x = 31 + }, +/obj/machinery/recharger/wallcharger{ + pixel_y = 7; + pixel_x = 31 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aR" = ( +/obj/machinery/sleeper, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"aS" = ( +/obj/structure/table/standard, +/obj/item/wheelchair, +/obj/item/roller/adv, +/obj/item/roller/adv, +/obj/item/roller/adv, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag/robobag, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"aT" = ( +/obj/structure/table/rack, +/obj/item/wheelchair, +/obj/item/wheelchair, +/obj/item/weapon/cane/crutch, +/obj/item/weapon/cane/crutch, +/obj/item/weapon/cane/white/collapsible, +/obj/item/clothing/accessory/stethoscope, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"aU" = ( +/obj/structure/window/plastitanium{ + dir = 8; + icon_state = "window" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/shield_generator/charged{ + initial_shield_modes = 2133; + input_cap = 50000 + }, +/obj/structure/curtain/black, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/cockpit) +"aV" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/shuttle/curabitur/curashuttle/cockpit) +"aY" = ( +/obj/machinery/atmospherics/pipe/simple/visible/blue{ + icon_state = "intact"; + dir = 6 + }, +/obj/structure/table/standard, +/obj/fiftyspawner/steel, +/obj/item/weapon/storage/toolbox/syndicate/powertools, +/obj/item/stack/nanopaste/advanced, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/device/multitool, +/obj/item/weapon/storage/box/metalfoam, +/obj/item/bodybag/cryobag/robobag, +/obj/item/bodybag/cryobag/robobag, +/obj/item/weapon/storage/belt/utility, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"aZ" = ( +/obj/machinery/vending/medical{ + dir = 4; + req_access = newlist() + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"ba" = ( +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 12; + pixel_y = 0 + }, +/obj/machinery/recharger/wallcharger{ + pixel_y = 6; + pixel_x = 31 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"bb" = ( +/obj/structure/window/plastitanium, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 1 + }, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/cockpit) +"bc" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_command{ + name = "Rescue Ship Cockpit"; + req_one_access = null + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/cockpit) +"bd" = ( +/obj/structure/curtain/medical, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"be" = ( +/turf/simulated/wall/shull, +/area/shuttle/curabitur/curashuttle/med) +"bf" = ( +/obj/structure/table/darkglass, +/obj/machinery/recharger{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/machinery/recharger{ + pixel_y = 8; + pixel_x = 2 + }, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"bg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"bh" = ( +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/obj/structure/table/rack, +/obj/item/clothing/head/helmet/space/void/medical, +/obj/item/clothing/head/helmet/space/void/medical, +/obj/item/clothing/head/helmet/space/void/medical, +/obj/item/clothing/suit/space/void/medical, +/obj/item/clothing/suit/space/void/medical, +/obj/item/clothing/suit/space/void/medical, +/obj/item/weapon/tank/air, +/obj/item/weapon/tank/air, +/obj/item/weapon/tank/air, +/obj/item/weapon/tank/jetpack/carbondioxide, +/obj/item/weapon/tank/jetpack/carbondioxide, +/obj/item/weapon/tank/jetpack/carbondioxide, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/shoes/magboots, +/obj/item/device/gps/medical, +/obj/item/device/gps/medical, +/obj/item/device/gps/medical, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"bi" = ( +/obj/machinery/suit_cycler/medical, +/obj/machinery/alarm{ + pixel_y = 25 + }, +/obj/machinery/firealarm{ + dir = 4; + layer = 3.3; + pixel_y = 26 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"bj" = ( +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + dir = 8; + icon_state = "window" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "mediwindowshutters"; + name = "Window Blast Door"; + opacity = 0 + }, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/shuttle/curabitur/curashuttle/med) +"bk" = ( +/obj/machinery/smartfridge/chemistry{ + icon_state = "fridge_food"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"bl" = ( +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"bm" = ( +/obj/structure/filingcabinet/medical, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"bn" = ( +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "mediwindowshutters"; + name = "Window Blast Door"; + opacity = 0 + }, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/shuttle/curabitur/curashuttle/med) +"bo" = ( +/obj/machinery/chem_master, +/obj/structure/table/standard, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"bp" = ( +/obj/structure/bed/chair/bay/comfy, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"br" = ( +/obj/machinery/chemical_dispenser/ert/specialops, +/obj/structure/table/standard, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"bs" = ( +/obj/structure/bed/chair/bay/comfy{ + icon_state = "bay_comfychair_preview"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"bt" = ( +/obj/structure/reagent_dispensers/water_cooler/full{ + density = 0; + pixel_x = 11 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/shuttle/curabitur/curashuttle/med) +"bu" = ( +/obj/structure/table/darkglass, +/obj/machinery/atmospherics/pipe/vent, +/obj/item/weapon/reagent_containers/food/snacks/applepie, +/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti, +/turf/simulated/floor/carpet/sblucarpet, +/area/shuttle/curabitur/curashuttle/med) +"bv" = ( +/obj/structure/table/darkglass, +/obj/item/weapon/reagent_containers/food/snacks/aesirsalad, +/obj/item/weapon/reagent_containers/food/snacks/carrotfries, +/obj/item/weapon/reagent_containers/food/snacks/carrotfries, +/obj/item/weapon/reagent_containers/food/snacks/carrotfries, +/turf/simulated/floor/carpet/sblucarpet, +/area/shuttle/curabitur/curashuttle/med) +"bw" = ( +/turf/simulated/floor/carpet/sblucarpet, +/area/shuttle/curabitur/curashuttle/med) +"bx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"by" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"bA" = ( +/obj/structure/sign/redcross, +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/med) +"bB" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/bag/chemistry, +/obj/item/weapon/storage/box/pillbottles, +/obj/item/weapon/reagent_containers/dropper, +/obj/item/weapon/reagent_containers/dropper, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -28; + pixel_y = 0 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"bC" = ( +/obj/structure/sign/department/eng{ + pixel_y = -31; + pixel_x = 0 + }, +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/glass/beaker/bluespace, +/obj/item/weapon/reagent_containers/glass/beaker/bluespace, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"bD" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"bE" = ( +/obj/structure/bed/chair/sofa/teal/left{ + icon_state = "sofaend_left"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light, +/obj/structure/sign/directions/engineering{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/shuttle/curabitur/curashuttle/med) +"bF" = ( +/obj/machinery/vending/wallmed1/public{ + icon_state = "wallmed"; + dir = 1; + pixel_y = -28 + }, +/obj/structure/bed/chair/sofa/teal{ + icon_state = "sofamiddle"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/shuttle/curabitur/curashuttle/med) +"bG" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = -32 + }, +/obj/structure/bed/chair/sofa/teal{ + icon_state = "sofamiddle"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/shuttle/curabitur/curashuttle/med) +"bH" = ( +/obj/machinery/vending/wallmed1/public{ + icon_state = "wallmed"; + dir = 1; + pixel_y = -29 + }, +/obj/structure/bed/chair/sofa/teal/right{ + icon_state = "sofaend_right"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/shuttle/curabitur/curashuttle/med) +"bI" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"bJ" = ( +/obj/machinery/recharger/wallcharger{ + pixel_y = -26; + pixel_x = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/handrail{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"bK" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -26 + }, +/obj/machinery/light, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/binary/pump/fuel{ + icon_state = "map_off-fuel"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"bL" = ( +/obj/effect/shuttle_landmark/shuttle_initializer/curashuttle, +/obj/effect/overmap/visitable/ship/landable/curashuttle, +/obj/structure/handrail{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"bM" = ( +/obj/structure/fans/hardlight, +/obj/machinery/door/airlock/external/glass/bolted{ + frequency = 1480; + id_tag = "curadocking" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/shuttle/curabitur/curashuttle/med) +"bN" = ( +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/eng) +"bO" = ( +/turf/simulated/wall/shull, +/area/shuttle/curabitur/curashuttle/eng) +"bP" = ( +/obj/machinery/door/airlock/voidcraft, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/shuttle/curabitur/curashuttle/eng) +"bQ" = ( +/turf/simulated/wall/shull, +/area/shuttle/curabitur/curashuttle/hangar) +"bR" = ( +/obj/machinery/door/airlock/voidcraft, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/hangar) +"bS" = ( +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/hangar) +"bT" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_y = 0 + }, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"bU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"bV" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + icon_state = "intact-supply"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"bX" = ( +/obj/machinery/power/port_gen/pacman/mrs{ + anchored = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"bY" = ( +/obj/structure/window/plastitanium{ + dir = 8; + icon_state = "window" + }, +/obj/structure/window/plastitanium{ + icon_state = "window"; + dir = 4 + }, +/obj/structure/curtain/black, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"bZ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"ca" = ( +/obj/structure/table/standard, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/clothing/gloves/sterile/nitrile, +/obj/item/clothing/gloves/sterile/nitrile, +/obj/item/clothing/suit/surgicalapron, +/turf/simulated/floor/tiled/white, +/area/shuttle/curabitur/curashuttle/med) +"cb" = ( +/obj/structure/closet/crate/medical, +/obj/item/weapon/surgical/scalpel/manager, +/obj/item/weapon/surgical/scalpel/manager, +/obj/item/weapon/surgical/circular_saw/manager, +/obj/item/weapon/surgical/circular_saw/manager, +/obj/item/stack/nanopaste/advanced, +/obj/item/stack/nanopaste/advanced, +/obj/item/device/defib_kit/compact/combat/loaded, +/obj/item/device/defib_kit/compact/combat/loaded, +/obj/item/device/healthanalyzer/advanced, +/obj/item/weapon/storage/backpack/dufflebag/syndie/med, +/obj/item/weapon/surgical/bone_clamp, +/obj/item/weapon/surgical/bone_clamp, +/obj/item/weapon/surgical/scalpel/ripper, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/vent, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"cc" = ( +/obj/structure/table/rack, +/obj/item/mecha_parts/mecha_equipment/crisis_drone, +/obj/item/mecha_parts/mecha_equipment/crisis_drone/rad, +/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun, +/obj/item/mecha_parts/mecha_equipment/weapon/energy/medigun, +/obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables, +/obj/item/mecha_parts/mecha_equipment/tool/powertool/medanalyzer, +/obj/item/mecha_parts/mecha_equipment/tool/powertool/prybar, +/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"cd" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/obj/structure/fireaxecabinet{ + pixel_x = -31 + }, +/obj/structure/handrail{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"ce" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"cf" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"cg" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"ch" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"cj" = ( +/obj/machinery/mech_recharger, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"ck" = ( +/obj/structure/cable{ + 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/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"cl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"cm" = ( +/obj/structure/table/rack, +/obj/item/mecha_parts/mecha_equipment/tool/passenger, +/obj/item/mecha_parts/mecha_equipment/tool/sleeper, +/obj/item/mecha_parts/mecha_equipment/tool/sleeper, +/obj/item/mecha_parts/mecha_equipment/tool/sleeper, +/obj/item/mecha_parts/mecha_equipment/tool/sleeper, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"cn" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/tiled/monofloor{ + dir = 1 + }, +/area/shuttle/curabitur/curashuttle/eng) +"co" = ( +/obj/structure/fuel_port, +/turf/simulated/floor/tiled/monofloor{ + dir = 1 + }, +/area/shuttle/curabitur/curashuttle/eng) +"cp" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"cq" = ( +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"cr" = ( +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"cs" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"ct" = ( +/obj/structure/fans/hardlight, +/obj/machinery/door/blast/regular{ + id = "medihangar" + }, +/turf/simulated/floor/plating, +/area/shuttle/curabitur/curashuttle/hangar) +"cu" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/empty, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/monofloor, +/area/shuttle/curabitur/curashuttle/eng) +"cv" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 8 + }, +/obj/machinery/light/small, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"cw" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 9 + }, +/obj/machinery/autolathe, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"cx" = ( +/obj/machinery/computer/ship/engines{ + dir = 1; + icon_state = "computer" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"cy" = ( +/obj/machinery/atmospherics/binary/pump, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/light/small, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"cz" = ( +/obj/machinery/vending/fitness{ + density = 0; + pixel_y = 16 + }, +/turf/simulated/floor/tiled, +/area/shuttle/curabitur/curashuttle/med) +"cA" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_x = 0; + pixel_y = -28 + }, +/obj/structure/handrail{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"cB" = ( +/obj/machinery/light, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"cC" = ( +/obj/structure/sign/redcross, +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/eng) +"cD" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/eng) +"cE" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 1 + }, +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/eng) +"cF" = ( +/obj/machinery/button/remote/blast_door{ + name = "Hangar blast door control"; + pixel_y = 24; + pixel_x = -7; + id = "medihangar" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/table/standard, +/obj/item/device/flashlight/flare, +/obj/item/device/flashlight/flare, +/obj/item/device/flashlight/flare, +/obj/machinery/cell_charger{ + pixel_y = 13; + pixel_x = -3 + }, +/obj/item/weapon/cell/high, +/obj/item/weapon/cell/high, +/obj/item/weapon/storage/briefcase/inflatable, +/obj/item/weapon/storage/briefcase/inflatable, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"cG" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow, +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/eng) +"cI" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 1 + }, +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/hangar) +"cJ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 10 + }, +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/hangar) +"cK" = ( +/obj/structure/sign/redcross, +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/hangar) +"cL" = ( +/obj/mecha/combat/fighter/pinnace{ + desc = "A modified Pinnace made to be able to fit a wide arsenal of equipment for rescue missions in space."; + health = 200; + max_equip = 1; + max_hull_equip = 2; + max_special_equip = 1; + max_universal_equip = 2; + max_utility_equip = 3; + maxhealth = 200; + name = "Curabitur Pinnace" + }, +/obj/machinery/mech_recharger, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"cM" = ( +/obj/machinery/atmospherics/unary/engine{ + dir = 1 + }, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/curabitur/curashuttle/eng) +"cN" = ( +/obj/structure/handrail{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/hangar) +"cO" = ( +/obj/machinery/atmospherics/unary/engine{ + dir = 1 + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/curabitur/curashuttle/eng) +"cP" = ( +/obj/machinery/ion_engine{ + icon_state = "nozzle"; + dir = 1 + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/curabitur/curashuttle/eng) +"dF" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/handrail, +/obj/fiftyspawner/tritium, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"ic" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"qN" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/turf/simulated/wall/rpshull, +/area/shuttle/curabitur/curashuttle/eng) +"tI" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor/tiled/monofloor, +/area/shuttle/curabitur/curashuttle/eng) +"MI" = ( +/obj/machinery/power/smes/buildable/point_of_interest, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/curabitur/curashuttle/eng) +"OD" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/monofloor, +/area/shuttle/curabitur/curashuttle/eng) + +(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 +"} +(2,1,1) = {" +aa +aa +aa +ag +az +az +az +az +az +az +bj +bj +bj +az +bN +bN +bN +bN +bN +cC +aa +aa +aa +"} +(3,1,1) = {" +aa +ab +ab +ab +ar +aA +aJ +aR +aZ +bd +bk +bo +br +bB +bO +aY +cd +cn +cu +bN +bN +aa +aa +"} +(4,1,1) = {" +aa +aa +ae +ah +as +as +as +as +as +bd +as +as +bs +bC +bO +bU +ce +co +cv +cD +cO +aa +aa +"} +(5,1,1) = {" +aa +aa +ae +ai +as +aB +aK +aS +as +bd +bl +bl +bl +bD +bP +bV +cf +cp +cw +cE +cM +aa +aa +"} +(6,1,1) = {" +aa +aa +ab +aj +as +aC +ca +bm +as +bd +bl +bl +bt +bE +bO +bT +cg +cq +cx +cE +cM +aa +aa +"} +(7,1,1) = {" +aa +ab +ab +ak +as +as +as +as +as +bd +bl +bp +bu +bF +bO +dF +ch +ic +cy +cG +cP +aa +aa +"} +(8,1,1) = {" +aa +ac +ab +al +au +aD +aM +aT +ba +bd +bl +bl +bv +bG +bO +bX +OD +tI +MI +qN +bN +aa +aa +"} +(9,1,1) = {" +aa +ad +ad +am +am +am +am +aU +am +be +cz +bl +bw +bH +bQ +bY +bO +bO +bO +qN +cP +aa +aa +"} +(10,1,1) = {" +aa +aa +af +an +av +aE +at +aV +bb +bf +bl +bl +bx +bI +bR +bZ +cj +cr +cL +cI +cM +aa +aa +"} +(11,1,1) = {" +aa +aa +af +ao +aw +aF +aO +aW +bc +bg +bg +bg +by +bJ +bQ +cF +ck +cs +cA +cI +cM +aa +aa +"} +(12,1,1) = {" +aa +aa +af +ap +ax +aG +aP +aX +bb +bh +bl +bl +bl +bK +bQ +cb +cl +cr +cB +cJ +cO +aa +aa +"} +(13,1,1) = {" +aa +ad +ad +ad +ay +aH +aQ +aN +aI +bi +bl +bl +aL +bL +bQ +cc +cm +cr +cN +bS +bN +aa +aa +"} +(14,1,1) = {" +aa +aa +aa +aq +aI +aI +aI +aI +aI +az +bn +bn +bA +bM +bS +bS +bS +ct +ct +cK +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 +"} diff --git a/maps/tether/submaps/om_ships/generic_shuttle.dm b/maps/tether/submaps/om_ships/generic_shuttle.dm index 53d3df1fd3..0c5f894b29 100644 --- a/maps/tether/submaps/om_ships/generic_shuttle.dm +++ b/maps/tether/submaps/om_ships/generic_shuttle.dm @@ -45,8 +45,11 @@ // The 'ship' /obj/effect/overmap/visitable/ship/landable/generic_shuttle - name = "Private Vessel" - desc = "A small privately-owned vessel." + scanner_name = "Private Vessel" + scanner_desc = @{"[i]Registration[/i]: PRIVATE +[i]Class[/i]: Small Shuttle +[i]Transponder[/i]: Transmitting (CIV), non-hostile +[b]Notice[/b]: Small private vessel"} vessel_mass = 1000 vessel_size = SHIP_SIZE_TINY shuttle = "Private Vessel" \ No newline at end of file diff --git a/maps/tether/submaps/om_ships/generic_shuttle.dmm b/maps/tether/submaps/om_ships/generic_shuttle.dmm index 5f7902932c..83f7fe815d 100644 --- a/maps/tether/submaps/om_ships/generic_shuttle.dmm +++ b/maps/tether/submaps/om_ships/generic_shuttle.dmm @@ -5,18 +5,6 @@ "ab" = ( /turf/simulated/wall/shull, /area/shuttle/generic_shuttle/gen) -"ac" = ( -/obj/machinery/shipsensors{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor/orange{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor/orange{ - dir = 8 - }, -/turf/simulated/shuttle/plating/airless, -/area/shuttle/generic_shuttle/gen) "ad" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -26,18 +14,27 @@ /turf/simulated/floor/plating, /area/shuttle/generic_shuttle/gen) "ae" = ( -/obj/structure/fitness/weightlifter, +/obj/structure/closet/walllocker/emerglocker/west, /turf/simulated/floor/wood, /area/shuttle/generic_shuttle/gen) "af" = ( /obj/structure/bed/padded, /obj/item/weapon/bedsheet, -/obj/structure/closet/walllocker/emerglocker/east, +/obj/machinery/button/remote/blast_door{ + id = "generic_dorm1_blast"; + name = "Blast Doors Controls"; + pixel_x = 24; + pixel_y = -28 + }, /turf/simulated/floor/wood, /area/shuttle/generic_shuttle/gen) "ag" = ( -/obj/structure/flora/pottedplant{ - icon_state = "plant-21" +/obj/structure/closet/walllocker/emerglocker/west, +/obj/machinery/button/remote/blast_door{ + id = "generic_dorm2_blast"; + name = "Blast Doors Controls"; + pixel_x = -24; + pixel_y = -28 }, /turf/simulated/floor/wood, /area/shuttle/generic_shuttle/gen) @@ -67,6 +64,13 @@ icon_state = "map_vent_out"; dir = 8 }, +/obj/machinery/button/remote/airlock{ + id = "generic-dorm1-door"; + name = "Room 1 Lock"; + pixel_x = -6; + pixel_y = -26; + specialfunctions = 4 + }, /turf/simulated/floor/wood, /area/shuttle/generic_shuttle/gen) "ak" = ( @@ -78,6 +82,13 @@ icon_state = "map_vent_out"; dir = 4 }, +/obj/machinery/button/remote/airlock{ + id = "generic-dorm2-door"; + name = "Room 2 Lock"; + pixel_x = 6; + pixel_y = -26; + specialfunctions = 4 + }, /turf/simulated/floor/wood, /area/shuttle/generic_shuttle/gen) "al" = ( @@ -101,18 +112,22 @@ /area/shuttle/generic_shuttle/gen) "an" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/voidcraft, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock{ + id_tag = "generic-dorm1-door" + }, /turf/simulated/floor/tiled{ icon_state = "monotile" }, /area/shuttle/generic_shuttle/gen) "ao" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/voidcraft, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock{ + id_tag = "generic-dorm2-door" + }, /turf/simulated/floor/tiled{ icon_state = "monotile" }, @@ -121,6 +136,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, +/obj/structure/closet/emcloset, /turf/simulated/floor/tiled{ icon_state = "techmaint" }, @@ -197,6 +213,7 @@ icon_state = "map_vent_out"; dir = 8 }, +/obj/structure/closet/emcloset, /turf/simulated/floor/tiled{ icon_state = "techmaint" }, @@ -259,7 +276,6 @@ icon_state = "tube1"; dir = 4 }, -/obj/structure/fitness/punchingbag, /turf/simulated/floor/tiled{ icon_state = "techmaint" }, @@ -575,15 +591,6 @@ }, /turf/simulated/wall/shull, /area/shuttle/generic_shuttle/gen) -"bl" = ( -/obj/machinery/smartfridge{ - density = 0; - pixel_y = -32 - }, -/turf/simulated/floor/tiled{ - icon_state = "techmaint" - }, -/area/shuttle/generic_shuttle/gen) "bm" = ( /obj/structure/cable{ d1 = 2; @@ -602,6 +609,15 @@ d2 = 8; icon_state = "1-8" }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "generic_shuttle_docker"; + name = "interior access button"; + pixel_x = 28; + pixel_y = 26; + req_one_access = list(101) + }, /turf/simulated/floor/tiled{ icon_state = "techmaint" }, @@ -654,6 +670,15 @@ pixel_x = 0 }, /obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "generic_shuttle_docker"; + name = "exterior access button"; + pixel_x = 5; + pixel_y = -26; + req_one_access = list(101) + }, /turf/simulated/floor/plating, /area/shuttle/generic_shuttle/gen) "bs" = ( @@ -661,12 +686,12 @@ /area/shuttle/generic_shuttle/eng) "bt" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/voidcraft, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/door/airlock, /turf/simulated/floor/tiled{ icon_state = "monotile" }, @@ -690,6 +715,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/universal{ dir = 4 }, +/obj/structure/closet/emcloset, /turf/simulated/floor/plating, /area/shuttle/generic_shuttle/eng) "bx" = ( @@ -799,6 +825,7 @@ }, /area/shuttle/generic_shuttle/eng) "bJ" = ( +/obj/machinery/portable_atmospherics/canister/phoron, /turf/simulated/floor/plating, /area/shuttle/generic_shuttle/eng) "bK" = ( @@ -898,6 +925,51 @@ /turf/space, /turf/simulated/shuttle/plating/airless/carry, /area/shuttle/generic_shuttle/eng) +"dV" = ( +/obj/structure/fuel_port, +/turf/simulated/wall/shull, +/area/shuttle/generic_shuttle/eng) +"gZ" = ( +/obj/machinery/door/blast/regular{ + density = 0; + destroy_hits = 10; + dir = 4; + icon_state = "pdoor0"; + id = "generic_dorm2_blast"; + name = "Shuttle Blast Doors"; + opacity = 0 + }, +/turf/template_noop, +/area/shuttle/generic_shuttle/gen) +"jV" = ( +/obj/machinery/shipsensors{ + dir = 2 + }, +/obj/effect/floor_decal/techfloor/orange{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor/orange{ + dir = 8 + }, +/turf/simulated/shuttle/plating/airless, +/area/shuttle/generic_shuttle/gen) +"tg" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet, +/turf/simulated/floor/wood, +/area/shuttle/generic_shuttle/gen) +"Ue" = ( +/obj/machinery/door/blast/regular{ + density = 0; + destroy_hits = 10; + dir = 4; + icon_state = "pdoor0"; + id = "generic_dorm1_blast"; + name = "Shuttle Blast Doors"; + opacity = 0 + }, +/turf/template_noop, +/area/shuttle/generic_shuttle/gen) (1,1,1) = {" aa @@ -961,7 +1033,7 @@ aL aT aJ bf -bl +aJ bs bv bC @@ -973,7 +1045,7 @@ aa "} (4,1,1) = {" aa -aa +Ue ad ae ai @@ -997,7 +1069,7 @@ aa "} (5,1,1) = {" aa -aa +Ue ad af aj @@ -1021,7 +1093,7 @@ aa "} (6,1,1) = {" aa -ac +ab ab ab ab @@ -1036,16 +1108,16 @@ bi bn bs by -bs +dV bs bM bV -aa +jV aa "} (7,1,1) = {" aa -aa +gZ ad ag ak @@ -1069,9 +1141,9 @@ aa "} (8,1,1) = {" aa -aa +gZ ad -af +tg al ao au diff --git a/maps/tether/submaps/om_ships/hybridshuttle.dm b/maps/tether/submaps/om_ships/hybridshuttle.dm index e85d234223..2194ea3416 100644 --- a/maps/tether/submaps/om_ships/hybridshuttle.dm +++ b/maps/tether/submaps/om_ships/hybridshuttle.dm @@ -41,8 +41,11 @@ // The 'ship' /obj/effect/overmap/visitable/ship/landable/hybridshuttle - name = "XN-29 Prototype Shuttle" - desc = "A hybrid excursion shuttle, sporting different features. Less space for equipment, but no fuel or power requirements." + scanner_name = "XN-29 Prototype Shuttle" + scanner_desc = @{"[i]Registration[/i]: UNKNOWN +[i]Class[/i]: Shuttle +[i]Transponder[/i]: Transmitting (MIL), NanoTrasen +[b]Notice[/b]: Experimental vessel"} color = "#00aaff" //Bluey vessel_mass = 3000 vessel_size = SHIP_SIZE_SMALL diff --git a/maps/tether/submaps/om_ships/mercenarybase.dmm b/maps/tether/submaps/om_ships/mercenarybase.dmm index 8c7c0ac77b..95238c7b19 100644 --- a/maps/tether/submaps/om_ships/mercenarybase.dmm +++ b/maps/tether/submaps/om_ships/mercenarybase.dmm @@ -3686,7 +3686,6 @@ /area/mercbase/engineering) "ov" = ( /obj/structure/table/reinforced, -/obj/item/weapon/storage/firstaid/insiderepair, /turf/simulated/floor/tiled/dark, /area/mercbase/medicalOR) "ow" = ( diff --git a/maps/tether/submaps/om_ships/mercship.dm b/maps/tether/submaps/om_ships/mercship.dm index b6ae03ad72..8400120e33 100644 --- a/maps/tether/submaps/om_ships/mercship.dm +++ b/maps/tether/submaps/om_ships/mercship.dm @@ -64,7 +64,11 @@ // The 'ship' /obj/effect/overmap/visitable/ship/mercship name = "Unknown Vessel" - desc = "An unknown vessel, of unknown design." + desc = "Spacefaring vessel. No IFF detected." + scanner_desc = @{"[i]Registration[/i]: UNKNOWN +[i]Class[/i]: UNKNOWN +[i]Transponder[/i]: None Detected +[b]Notice[/b]: Unregistered vessel"} color = "#f23000" //Red vessel_mass = 8000 vessel_size = SHIP_SIZE_SMALL diff --git a/maps/tether/submaps/om_ships/mercship.dmm b/maps/tether/submaps/om_ships/mercship.dmm index 727b9250bd..81864bde35 100644 --- a/maps/tether/submaps/om_ships/mercship.dmm +++ b/maps/tether/submaps/om_ships/mercship.dmm @@ -3824,9 +3824,6 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, -/obj/item/weapon/storage/firstaid/insiderepair, -/obj/item/weapon/storage/firstaid/insiderepair, -/obj/item/weapon/storage/firstaid/insiderepair, /turf/simulated/floor/tiled/white, /area/ship/mercenary/armoury) "gK" = ( diff --git a/maps/tether/submaps/om_ships/shelter_5.dm b/maps/tether/submaps/om_ships/shelter_5.dm new file mode 100644 index 0000000000..28dd871bbf --- /dev/null +++ b/maps/tether/submaps/om_ships/shelter_5.dm @@ -0,0 +1,50 @@ +// Compile in the map for CI testing if we're testing compileability of all the maps +#if MAP_TEST +#include "shelter_5.dmm" +#endif + +// Map template for spawning the shuttle +/datum/map_template/om_ships/escapepod + name = "OM Ship - Escape Pod" + desc = "An escape pod." + mappath = 'shelter_5.dmm' + annihilate = TRUE + +// The shuttle's area(s) +/area/shuttle/deployable/escapepod + name = "\improper Escape Pod" + icon_state = "shuttle2" + requires_power = 1 + +// The shuttle's 'shuttle' computer +/obj/machinery/computer/shuttle_control/explore/escapepod + name = "short jump console" + shuttle_tag = "Escape Pod" + +// A shuttle lateloader landmark +/obj/effect/shuttle_landmark/shuttle_initializer/escapepod + name = "Origin - Escape Pod" + base_area = /area/space + base_turf = /turf/space + landmark_tag = "omship_spawn_escapepod" + shuttle_type = /datum/shuttle/autodock/overmap/escapepod + +// The 'shuttle' +/datum/shuttle/autodock/overmap/escapepod + name = "Escape Pod" + current_location = "omship_spawn_escapepod" + docking_controller_tag = "escapepod_shuttle_docker" + shuttle_area = /area/shuttle/deployable/escapepod + fuel_consumption = 0 + defer_initialisation = TRUE //We're not loaded until an admin does it + +// The 'ship' +/obj/effect/overmap/visitable/ship/landable/escapepod + scanner_name = "Escape Pod" + scanner_desc = @{"[i]Registration[/i]: NOT AVAILABLE +[i]Class[/i]: Escape Pod +[i]Transponder[/i]: Transmitting (CIV), non-hostile +[b]Notice[/b]: Emergency Transponder Active"} + vessel_mass = 1000 + vessel_size = SHIP_SIZE_TINY + shuttle = "Escape Pod" diff --git a/maps/tether/submaps/om_ships/shelter_5.dmm b/maps/tether/submaps/om_ships/shelter_5.dmm new file mode 100644 index 0000000000..104a90a96a --- /dev/null +++ b/maps/tether/submaps/om_ships/shelter_5.dmm @@ -0,0 +1,300 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/shuttle/deployable/escapepod) +"b" = ( +/turf/simulated/wall/rpshull, +/area/shuttle/deployable/escapepod) +"c" = ( +/obj/structure/sign/mining/survival{ + dir = 1 + }, +/turf/simulated/wall/rpshull, +/area/shuttle/deployable/escapepod) +"d" = ( +/obj/structure/fans, +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) +"e" = ( +/obj/machinery/smartfridge/survival_pod, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/menu11, +/obj/item/weapon/storage/mre/menu11, +/obj/item/weapon/storage/mre/menu13, +/obj/item/device/fbp_backup_cell, +/obj/item/device/fbp_backup_cell, +/obj/item/device/fbp_backup_cell, +/obj/item/device/fbp_backup_cell, +/obj/item/device/fbp_backup_cell, +/obj/item/weapon/storage/pill_bottle/dice, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/obj/item/weapon/storage/box/survival/space, +/obj/item/weapon/storage/box/survival/space, +/obj/item/weapon/storage/box/survival/space, +/obj/item/weapon/storage/box/survival/space, +/obj/item/device/gps, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/storage/toolbox/emergency, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) +"f" = ( +/obj/machinery/sleeper/survival_pod, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) +"g" = ( +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) +"h" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + frequency = 1380 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "escapepod_shuttle_docker"; + pixel_y = 28 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/structure/handrail{ + dir = 8 + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + pixel_y = 22 + }, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/shuttle/deployable/escapepod) +"i" = ( +/obj/machinery/computer/shuttle_control/explore/escapepod{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) +"j" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) +"k" = ( +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) +"m" = ( +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) +"n" = ( +/obj/machinery/door/airlock/external, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "escapepod_shuttle_docker"; + pixel_x = -5; + pixel_y = 26 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/map_helper/airlock/door/int_door, +/turf/simulated/floor/tiled/steel_ridged, +/area/shuttle/deployable/escapepod) +"o" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/shuttle_landmark/shuttle_initializer/escapepod, +/obj/effect/overmap/visitable/ship/landable/escapepod, +/turf/simulated/floor/tiled/steel_grid, +/area/shuttle/deployable/escapepod) +"p" = ( +/obj/machinery/door/airlock/external, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "escapepod_shuttle_docker"; + name = "exterior access button"; + pixel_x = 5; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/shuttle/deployable/escapepod) +"q" = ( +/obj/structure/table/survival_pod, +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/obj/machinery/recharger, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) +"r" = ( +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/machinery/power/rtg/advanced, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) +"s" = ( +/obj/effect/floor_decal/techfloor, +/obj/structure/bed/chair/shuttle{ + dir = 1 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) +"t" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -28 + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) +"u" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/tiled/steel_grid, +/area/shuttle/deployable/escapepod) +"v" = ( +/obj/structure/sign/mining/survival, +/turf/simulated/wall/rpshull, +/area/shuttle/deployable/escapepod) +"L" = ( +/obj/effect/floor_decal/techfloor, +/obj/structure/bed/chair/shuttle{ + dir = 1 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light/small, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/deployable/escapepod) + +(1,1,1) = {" +a +b +b +b +a +"} +(2,1,1) = {" +b +b +i +b +b +"} +(3,1,1) = {" +c +d +j +q +v +"} +(4,1,1) = {" +b +e +k +r +b +"} +(5,1,1) = {" +c +f +k +s +v +"} +(6,1,1) = {" +b +f +k +L +b +"} +(7,1,1) = {" +c +g +m +t +v +"} +(8,1,1) = {" +b +b +n +b +b +"} +(9,1,1) = {" +c +h +o +u +v +"} +(10,1,1) = {" +b +b +p +b +b +"} diff --git a/maps/tether/submaps/om_ships/shelter_6.dm b/maps/tether/submaps/om_ships/shelter_6.dm new file mode 100644 index 0000000000..f65d2491dd --- /dev/null +++ b/maps/tether/submaps/om_ships/shelter_6.dm @@ -0,0 +1,53 @@ +// Compile in the map for CI testing if we're testing compileability of all the maps +#if MAP_TEST +#include "shelter_6.dmm" +#endif + +// Map template for spawning the shuttle +/datum/map_template/om_ships/tabiranth + name = "OM Ship - Tabiranth" + desc = "A prototype deployable assault shuttle." + mappath = 'shelter_6.dmm' + annihilate = TRUE + +// The shuttle's area(s) +/area/shuttle/tabiranth + name = "\improper Tabiranth" + icon_state = "blue-red2" + flags = RAD_SHIELDED | BLUE_SHIELDED + requires_power = 1 + +// The shuttle's 'shuttle' computer +/obj/machinery/computer/shuttle_control/explore/tabiranth + name = "short jump console" + shuttle_tag = "NDV Tabiranth" + req_one_access = list(access_cent_general) + +// A shuttle lateloader landmark +/obj/effect/shuttle_landmark/shuttle_initializer/tabiranth + name = "Origin - Tabiranth" + base_area = /area/space + base_turf = /turf/space + landmark_tag = "omship_spawn_tabiranth" + shuttle_type = /datum/shuttle/autodock/overmap/tabiranth + +// The 'shuttle' +/datum/shuttle/autodock/overmap/tabiranth + name = "NDV Tabiranth" + current_location = "omship_spawn_tabiranth" + docking_controller_tag = "tabiranth_docker" + shuttle_area = /area/shuttle/tabiranth + fuel_consumption = 0 + defer_initialisation = TRUE //We're not loaded until an admin does it + +// The 'ship' +/obj/effect/overmap/visitable/ship/landable/tabiranth + scanner_name = "Experimental Dropship" + scanner_desc = @{"[i]Registration[/i]: UNKNOWN +[i]Class[/i]: Assault Dropship +[i]Transponder[/i]: Transmitting (MIL), NanoTrasen +[b]Notice[/b]: Experimental vessel"} + color = "#8800ff" //Indigo + vessel_mass = 5000 + vessel_size = SHIP_SIZE_SMALL + shuttle = "NDV Tabiranth" diff --git a/maps/tether/submaps/om_ships/shelter_6.dmm b/maps/tether/submaps/om_ships/shelter_6.dmm new file mode 100644 index 0000000000..e80de136a1 --- /dev/null +++ b/maps/tether/submaps/om_ships/shelter_6.dmm @@ -0,0 +1,2014 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/machinery/porta_turret/industrial/military, +/turf/simulated/floor/reinforced/airless{ + name = "outer hull" + }, +/area/shuttle/tabiranth) +"ab" = ( +/obj/machinery/power/pointdefense{ + id_tag = "tabiranth_pd" + }, +/turf/simulated/floor/reinforced/airless{ + name = "outer hull" + }, +/area/shuttle/tabiranth) +"ac" = ( +/turf/simulated/shuttle/wall/voidcraft/blue{ + hard_corner = 1; + icon_state = "void-hc"; + name = "small craft wall hc"; + stripe_color = "#45b3d8" + }, +/area/shuttle/tabiranth) +"ad" = ( +/turf/simulated/shuttle/wall/voidcraft/blue{ + name = "small craft wall"; + stripe_color = "#45b3d8" + }, +/area/shuttle/tabiranth) +"ae" = ( +/obj/machinery/smartfridge/survival_pod, +/obj/item/clothing/suit/armor/vest/ert/command, +/obj/item/clothing/head/helmet/ert/command, +/obj/item/clothing/suit/armor/vest/ert/engineer, +/obj/item/clothing/suit/armor/vest/ert/engineer, +/obj/item/clothing/head/helmet/ert/engineer, +/obj/item/clothing/head/helmet/ert/engineer, +/obj/item/clothing/suit/armor/vest/ert/medical, +/obj/item/clothing/suit/armor/vest/ert/medical, +/obj/item/clothing/head/helmet/ert/medical, +/obj/item/clothing/head/helmet/ert/medical, +/obj/item/clothing/suit/armor/vest/ert/security, +/obj/item/clothing/suit/armor/vest/ert/security, +/obj/item/clothing/suit/armor/vest/ert/security, +/obj/item/clothing/suit/armor/vest/ert/security, +/obj/item/clothing/head/helmet/ert/security, +/obj/item/clothing/head/helmet/ert/security, +/obj/item/clothing/head/helmet/ert/security, +/obj/item/clothing/head/helmet/ert/security, +/obj/item/clothing/suit/armor/pcarrier/merc, +/obj/item/clothing/suit/armor/pcarrier/merc, +/obj/item/clothing/suit/armor/pcarrier/merc, +/obj/item/clothing/suit/armor/pcarrier/merc, +/obj/item/clothing/head/helmet/merc, +/obj/item/clothing/head/helmet/merc, +/obj/item/clothing/head/helmet/merc, +/obj/item/clothing/head/helmet/merc, +/obj/item/clothing/suit/armor/pcarrier/blue/sol, +/obj/item/clothing/suit/armor/pcarrier/blue/sol, +/obj/item/clothing/suit/armor/pcarrier/blue/sol, +/obj/item/clothing/suit/armor/pcarrier/blue/sol, +/obj/item/clothing/head/helmet/solgov, +/obj/item/clothing/head/helmet/solgov, +/obj/item/clothing/head/helmet/solgov, +/obj/item/clothing/head/helmet/solgov, +/obj/item/clothing/accessory/storage/pouches/large/blue, +/obj/item/clothing/accessory/storage/pouches/large/blue, +/obj/item/clothing/accessory/storage/pouches/large/blue, +/obj/item/clothing/accessory/storage/pouches/large/blue, +/obj/item/weapon/storage/box/syndie_kit/combat_armor, +/obj/item/weapon/storage/box/syndie_kit/combat_armor, +/obj/item/weapon/storage/box/syndie_kit/combat_armor, +/obj/item/weapon/storage/box/syndie_kit/combat_armor, +/obj/item/clothing/accessory/holster/machete, +/obj/item/clothing/accessory/holster/machete, +/obj/item/clothing/accessory/holster/machete, +/obj/item/clothing/accessory/holster/machete, +/obj/item/weapon/material/knife/machete, +/obj/item/weapon/material/knife/machete, +/obj/item/weapon/material/knife/machete, +/obj/item/weapon/material/knife/machete, +/obj/item/weapon/melee/energy/sword, +/obj/item/weapon/melee/energy/sword, +/obj/item/weapon/melee/energy/sword, +/obj/item/weapon/melee/energy/sword, +/obj/item/weapon/melee/energy/sword, +/obj/item/weapon/shield/energy, +/obj/item/weapon/shield/energy, +/obj/item/weapon/shield/energy, +/obj/item/weapon/melee/baton/loaded, +/obj/item/weapon/melee/baton/loaded, +/obj/item/weapon/melee/baton/loaded, +/obj/item/weapon/melee/baton/loaded, +/obj/item/weapon/rig/ert, +/obj/item/weapon/rig/ert/engineer, +/obj/item/weapon/rig/ert/engineer, +/obj/item/weapon/rig/ert/medical, +/obj/item/weapon/rig/ert/medical, +/obj/item/weapon/rig/ert/security, +/obj/item/weapon/rig/ert/security, +/obj/item/weapon/rig/ert/security, +/obj/item/weapon/rig/ert/security, +/obj/item/rig_module/vision/multi, +/obj/item/rig_module/device/drill, +/obj/item/rig_module/device/drill, +/obj/item/rig_module/device/plasmacutter, +/obj/item/rig_module/device/plasmacutter, +/obj/item/rig_module/device/orescanner, +/obj/item/rig_module/device/orescanner, +/obj/item/rig_module/rescue_pharm, +/obj/item/rig_module/rescue_pharm, +/obj/item/rig_module/chem_dispenser/injector, +/obj/item/rig_module/chem_dispenser/injector, +/obj/item/rig_module/chem_dispenser/combat, +/obj/item/rig_module/chem_dispenser/combat, +/obj/item/rig_module/device/healthscanner, +/obj/item/rig_module/device/healthscanner, +/obj/item/rig_module/sprinter, +/obj/item/rig_module/sprinter, +/obj/item/rig_module/sprinter, +/obj/item/rig_module/sprinter, +/obj/item/rig_module/device/anomaly_scanner, +/obj/item/rig_module/device/anomaly_scanner, +/obj/item/rig_module/device/rcd, +/obj/item/rig_module/device/rcd, +/obj/item/rig_module/mounted/egun, +/obj/item/rig_module/mounted/egun, +/obj/item/rig_module/mounted/egun, +/obj/item/rig_module/mounted/egun, +/obj/item/rig_module/mounted, +/obj/item/rig_module/mounted, +/obj/item/rig_module/grenade_launcher/smoke, +/obj/item/rig_module/cleaner_launcher, +/obj/item/rig_module/grenade_launcher, +/obj/item/weapon/storage/box/handcuffs, +/obj/item/weapon/storage/box/handcuffs, +/obj/item/weapon/storage/box/holobadge, +/obj/item/weapon/storage/box/holowarrants, +/obj/item/weapon/storage/box/flare, +/obj/item/weapon/storage/box/flare, +/obj/item/weapon/storage/box/flare, +/obj/item/weapon/storage/box/flare, +/obj/item/weapon/storage/box/metalfoam, +/obj/item/weapon/storage/box/metalfoam, +/obj/item/weapon/storage/box/metalfoam, +/obj/item/weapon/storage/box/metalfoam, +/obj/item/clothing/suit/space/void/merc/prototype, +/obj/item/clothing/suit/space/void/merc/prototype, +/obj/item/clothing/suit/space/void/merc/prototype, +/obj/item/clothing/suit/space/void/merc/prototype, +/obj/item/clothing/head/helmet/space/void/merc/prototype, +/obj/item/clothing/head/helmet/space/void/merc/prototype, +/obj/item/clothing/head/helmet/space/void/merc/prototype, +/obj/item/clothing/head/helmet/space/void/merc/prototype, +/obj/item/clothing/shoes/magboots/adv, +/obj/item/clothing/shoes/magboots/adv, +/obj/item/clothing/shoes/magboots/adv, +/obj/item/clothing/shoes/magboots/adv, +/obj/item/clothing/shoes/magboots/adv, +/obj/item/clothing/shoes/magboots/adv, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/vox, +/obj/item/weapon/tank/vox, +/obj/item/weapon/tank/vox, +/obj/item/weapon/tank/vox, +/obj/item/weapon/tank/jetpack/oxygen, +/obj/item/weapon/tank/jetpack/oxygen, +/obj/item/weapon/tank/jetpack/oxygen, +/obj/item/weapon/tank/jetpack/oxygen, +/obj/item/weapon/tank/jetpack/oxygen, +/obj/item/weapon/tank/jetpack/oxygen, +/obj/item/clothing/suit/space/void/pilot, +/obj/item/clothing/suit/space/void/pilot, +/obj/item/clothing/head/helmet/space/void/pilot, +/obj/item/clothing/head/helmet/space/void/pilot, +/obj/item/weapon/storage/briefcase/inflatable, +/obj/item/weapon/storage/briefcase/inflatable, +/obj/item/weapon/storage/briefcase/inflatable, +/obj/item/weapon/storage/briefcase/inflatable, +/obj/item/weapon/storage/briefcase/inflatable, +/obj/item/weapon/storage/briefcase/inflatable, +/obj/item/weapon/storage/belt/utility/full, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"af" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram{ + desc = "A large machine releasing a constant gust of air."; + icon = 'icons/obj/survival_pod.dmi'; + icon_state = "fans"; + name = "enviornmental regulation system" + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"ag" = ( +/obj/machinery/smartfridge/survival_pod, +/obj/item/weapon/gun/energy/sniperrifle, +/obj/item/weapon/gun/energy/sniperrifle, +/obj/item/weapon/gun/energy/gun/burst, +/obj/item/weapon/gun/energy/gun/burst, +/obj/item/weapon/gun/energy/xray, +/obj/item/weapon/gun/energy/xray, +/obj/item/weapon/gun/energy/netgun, +/obj/item/weapon/gun/energy/ionrifle, +/obj/item/weapon/gun/energy/ionrifle, +/obj/item/weapon/gun/energy/ionrifle/pistol, +/obj/item/weapon/gun/energy/ionrifle/pistol, +/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid_combat, +/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid, +/obj/item/weapon/gun/launcher/grenade, +/obj/item/weapon/gun/launcher/grenade, +/obj/item/weapon/storage/box/flashbangs, +/obj/item/weapon/storage/box/flashbangs, +/obj/item/weapon/storage/box/smokes, +/obj/item/weapon/storage/box/smokes, +/obj/item/weapon/storage/box/empslite, +/obj/item/weapon/storage/box/empslite, +/obj/item/weapon/storage/box/teargas, +/obj/item/weapon/storage/box/teargas, +/obj/item/weapon/storage/box/frags, +/obj/item/weapon/storage/box/frags, +/obj/item/weapon/gun/energy/gun, +/obj/item/weapon/gun/energy/gun, +/obj/item/weapon/gun/energy/gun, +/obj/item/weapon/gun/energy/gun, +/obj/item/weapon/gun/energy/gun/nuclear, +/obj/item/weapon/gun/energy/gun/nuclear, +/obj/item/weapon/gun/energy/gun/nuclear, +/obj/item/weapon/gun/energy/gun/nuclear, +/obj/item/weapon/gun/energy/laser, +/obj/item/weapon/gun/energy/laser, +/obj/item/weapon/gun/energy/laser, +/obj/item/weapon/gun/energy/laser, +/obj/item/weapon/gun/projectile/automatic/p90, +/obj/item/weapon/gun/projectile/automatic/p90, +/obj/item/ammo_magazine/m9mmp90, +/obj/item/ammo_magazine/m9mmp90, +/obj/item/ammo_magazine/m9mmp90, +/obj/item/ammo_magazine/m9mmp90, +/obj/item/ammo_magazine/m9mmp90, +/obj/item/ammo_magazine/m9mmp90, +/obj/item/ammo_magazine/m9mmp90, +/obj/item/ammo_magazine/m9mmp90, +/obj/item/ammo_magazine/m9mmt/flash, +/obj/item/ammo_magazine/m9mmt/flash, +/obj/item/ammo_magazine/m9mmt/flash, +/obj/item/ammo_magazine/m9mmt/flash, +/obj/item/ammo_magazine/m9mmt/rubber, +/obj/item/ammo_magazine/m9mmt/rubber, +/obj/item/ammo_magazine/m9mmt/rubber, +/obj/item/ammo_magazine/m9mmt/rubber, +/obj/item/weapon/gun/projectile/automatic/sts35, +/obj/item/weapon/gun/projectile/automatic/sts35, +/obj/item/weapon/gun/projectile/automatic/sts35, +/obj/item/weapon/gun/projectile/automatic/sts35, +/obj/item/ammo_magazine/m545/ap, +/obj/item/ammo_magazine/m545/ap, +/obj/item/ammo_magazine/m545/ap, +/obj/item/ammo_magazine/m545/ap, +/obj/item/ammo_magazine/m545/ap, +/obj/item/ammo_magazine/m545/ap, +/obj/item/ammo_magazine/m545/ap, +/obj/item/ammo_magazine/m545/ap, +/obj/item/ammo_magazine/m545/ap, +/obj/item/ammo_magazine/m545/ap, +/obj/item/ammo_magazine/m545/ap, +/obj/item/ammo_magazine/m545/ap, +/obj/item/ammo_magazine/m545, +/obj/item/ammo_magazine/m545, +/obj/item/ammo_magazine/m545, +/obj/item/ammo_magazine/m545, +/obj/item/ammo_magazine/m545, +/obj/item/ammo_magazine/m545, +/obj/item/ammo_magazine/m545, +/obj/item/ammo_magazine/m545, +/obj/item/weapon/gun/projectile/shotgun/pump/combat, +/obj/item/weapon/gun/projectile/shotgun/pump/combat, +/obj/item/weapon/storage/box/shotgunshells/large, +/obj/item/weapon/storage/box/shotgunshells/large, +/obj/item/weapon/storage/box/shotgunshells/large, +/obj/item/weapon/storage/box/shotgunshells/large, +/obj/item/weapon/storage/box/shotgunammo/large, +/obj/item/weapon/storage/box/shotgunammo/large, +/obj/item/weapon/storage/box/shotgunammo/large, +/obj/item/weapon/storage/box/shotgunammo/large, +/obj/item/weapon/storage/box/empshells/large, +/obj/item/weapon/storage/box/empshells/large, +/obj/item/weapon/storage/box/beanbags, +/obj/item/weapon/storage/box/beanbags, +/obj/item/weapon/storage/box/stunshells, +/obj/item/weapon/storage/box/stunshells, +/obj/item/weapon/storage/box/flashshells, +/obj/item/weapon/storage/box/flashshells, +/obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"ah" = ( +/obj/structure/fans/hardlight, +/obj/machinery/door/blast/regular{ + destroy_hits = 1000; + id = "tabi-hangar1" + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/shuttle/tabiranth) +"ai" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"aj" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"ak" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/button/remote/blast_door{ + id = "tabi-hangar1"; + pixel_x = -26; + pixel_y = 26 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"al" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/machinery/suit_cycler{ + density = 0; + layer = 2.2 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"am" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/button/remote/blast_door{ + id = "tabi-hangar2"; + pixel_x = 26; + pixel_y = 26 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"an" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"ao" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"ap" = ( +/obj/machinery/power/shield_generator/charged{ + density = 0; + field_radius = 9; + initial_shield_modes = 2113; + layer = 2.45; + plane = -44 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/effect/catwalk_plated/white, +/turf/simulated/floor/bluegrid, +/area/shuttle/tabiranth) +"aq" = ( +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"ar" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"as" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"at" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"au" = ( +/obj/machinery/autolathe{ + desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; + hacked = 1; + mat_efficiency = 0.5; + name = "Centcom Autolathe" + }, +/turf/simulated/floor/bluegrid, +/area/shuttle/tabiranth) +"av" = ( +/obj/machinery/mech_recharger, +/obj/effect/floor_decal/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"aw" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 4 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"ax" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 8 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"aA" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/portable_atmospherics/canister/air{ + start_pressure = 8559.63 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"aB" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/portable_atmospherics/canister/air{ + start_pressure = 8559.63 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"aC" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/telecomms/relay{ + density = 0; + layer = 2.45; + plane = -44 + }, +/obj/effect/catwalk_plated/white, +/turf/simulated/floor/bluegrid, +/area/shuttle/tabiranth) +"aD" = ( +/obj/structure/fans/hardlight, +/obj/machinery/door/airlock/alien/blue/locked{ + req_one_access = list(101) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "tabiranth_airlock"; + name = "exterior access button"; + pixel_x = -5; + pixel_y = -26 + }, +/obj/effect/map_helper/airlock/door/ext_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"aE" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1380 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "tabiranth_airlock"; + pixel_y = -32; + req_one_access = list(101) + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + pixel_y = 25 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/structure/handrail{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"aF" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/structure/handrail{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/recharger/wallcharger{ + pixel_y = -32 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"aG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/closet/walllocker{ + name = "Janitor Locker"; + pixel_y = -32 + }, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/mop, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/soap/nanotrasen, +/obj/item/weapon/soap/deluxe, +/obj/item/weapon/soap, +/obj/item/weapon/rig/ert/janitor, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"aH" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/mech_recharger, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"aI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/closet/walllocker{ + name = "Internals Locker"; + pixel_y = -32 + }, +/obj/item/weapon/storage/box/survival/space, +/obj/item/weapon/storage/box/survival/space, +/obj/item/weapon/storage/box/survival/space, +/obj/item/weapon/storage/box/survival/space, +/obj/item/weapon/storage/box/survival/space, +/obj/item/weapon/storage/box/survival/space, +/obj/item/weapon/storage/box/survival/space, +/obj/item/weapon/storage/box/survival/space, +/obj/item/weapon/storage/toolbox/emergency, +/obj/item/weapon/storage/toolbox/emergency, +/obj/item/weapon/storage/toolbox/emergency, +/obj/item/weapon/storage/toolbox/emergency, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, +/obj/item/weapon/storage/belt/utility/full, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"aJ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/structure/handrail{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/recharger/wallcharger{ + pixel_y = -32 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"aK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/fans/hardlight, +/obj/machinery/door/airlock/alien/blue/locked{ + req_one_access = list(101) + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "tabiranth_airlock"; + pixel_x = 5; + pixel_y = 26 + }, +/obj/effect/map_helper/airlock/door/int_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"aL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/fans/hardlight, +/obj/machinery/door/airlock/alien/blue/locked{ + req_one_access = list(101) + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "tabiranth_docker"; + pixel_x = -5; + pixel_y = 26 + }, +/obj/effect/map_helper/airlock/door/int_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"aM" = ( +/turf/simulated/floor/reinforced/airless{ + name = "outer hull" + }, +/area/shuttle/tabiranth) +"aN" = ( +/obj/machinery/sleeper/survival_pod, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"aO" = ( +/obj/machinery/smartfridge/survival_pod, +/obj/item/clothing/under/ert, +/obj/item/clothing/under/ert, +/obj/item/clothing/under/ert, +/obj/item/clothing/under/ert, +/obj/item/clothing/under/ert, +/obj/item/clothing/under/ert, +/obj/item/weapon/storage/box/survival/comp{ + starts_with = list(/obj/item/weapon/tool/prybar/red,/obj/item/clothing/glasses/goggles,/obj/item/weapon/reagent_containers/hypospray/autoinjector,/obj/item/stack/medical/bruise_pack,/obj/item/device/flashlight/glowstick,/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency/oxygen/engi) + }, +/obj/item/weapon/storage/box/survival/comp{ + starts_with = list(/obj/item/weapon/tool/prybar/red,/obj/item/clothing/glasses/goggles,/obj/item/weapon/reagent_containers/hypospray/autoinjector,/obj/item/stack/medical/bruise_pack,/obj/item/device/flashlight/glowstick,/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency/oxygen/engi) + }, +/obj/item/weapon/storage/box/survival/comp{ + starts_with = list(/obj/item/weapon/tool/prybar/red,/obj/item/clothing/glasses/goggles,/obj/item/weapon/reagent_containers/hypospray/autoinjector,/obj/item/stack/medical/bruise_pack,/obj/item/device/flashlight/glowstick,/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency/oxygen/engi) + }, +/obj/item/weapon/storage/box/survival/comp{ + starts_with = list(/obj/item/weapon/tool/prybar/red,/obj/item/clothing/glasses/goggles,/obj/item/weapon/reagent_containers/hypospray/autoinjector,/obj/item/stack/medical/bruise_pack,/obj/item/device/flashlight/glowstick,/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency/oxygen/engi) + }, +/obj/item/weapon/storage/box/survival/comp{ + starts_with = list(/obj/item/weapon/tool/prybar/red,/obj/item/clothing/glasses/goggles,/obj/item/weapon/reagent_containers/hypospray/autoinjector,/obj/item/stack/medical/bruise_pack,/obj/item/device/flashlight/glowstick,/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency/oxygen/engi) + }, +/obj/item/weapon/storage/box/survival/comp{ + starts_with = list(/obj/item/weapon/tool/prybar/red,/obj/item/clothing/glasses/goggles,/obj/item/weapon/reagent_containers/hypospray/autoinjector,/obj/item/stack/medical/bruise_pack,/obj/item/device/flashlight/glowstick,/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency/oxygen/engi) + }, +/obj/item/device/perfect_tele, +/obj/item/weapon/storage/belt/utility/chief/full, +/obj/item/weapon/storage/belt/utility/chief/full, +/obj/item/weapon/storage/belt/utility/chief/full, +/obj/item/weapon/storage/belt/utility/chief/full, +/obj/item/weapon/storage/belt/security/tactical, +/obj/item/weapon/storage/belt/security/tactical, +/obj/item/weapon/storage/belt/security/tactical, +/obj/item/weapon/storage/belt/security/tactical, +/obj/item/weapon/storage/belt/medical/emt, +/obj/item/weapon/storage/belt/medical/emt, +/obj/item/weapon/storage/belt/medical/emt, +/obj/item/weapon/storage/belt/medical/emt, +/obj/item/weapon/storage/backpack/ert/commander, +/obj/item/weapon/storage/backpack/ert/engineer, +/obj/item/weapon/storage/backpack/ert/engineer, +/obj/item/weapon/storage/backpack/ert/medical, +/obj/item/weapon/storage/backpack/ert/medical, +/obj/item/weapon/storage/backpack/ert/security, +/obj/item/weapon/storage/backpack/ert/security, +/obj/item/weapon/storage/backpack/ert/security, +/obj/item/weapon/storage/backpack/ert/security, +/obj/item/weapon/cell/hyper, +/obj/item/weapon/cell/hyper, +/obj/item/weapon/cell/hyper, +/obj/item/weapon/cell/hyper, +/obj/item/weapon/cell/hyper, +/obj/item/weapon/cell/hyper, +/obj/item/weapon/cell/hyper, +/obj/item/weapon/cell/hyper, +/obj/item/weapon/cell/hyper, +/obj/item/weapon/cell/hyper, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/obj/item/weapon/gun/projectile/pistol, +/obj/item/weapon/gun/projectile/pistol, +/obj/item/weapon/gun/projectile/pistol, +/obj/item/ammo_magazine/m9mm/compact, +/obj/item/ammo_magazine/m9mm/compact, +/obj/item/ammo_magazine/m9mm/compact, +/obj/item/ammo_magazine/m9mm/compact, +/obj/item/ammo_magazine/m9mm/compact, +/obj/item/ammo_magazine/m9mm/compact, +/obj/item/ammo_magazine/m9mm/compact/flash, +/obj/item/ammo_magazine/m9mm/compact/flash, +/obj/item/ammo_magazine/m9mm/compact/flash, +/obj/item/ammo_magazine/m9mm/compact/rubber, +/obj/item/ammo_magazine/m9mm/compact/rubber, +/obj/item/ammo_magazine/m9mm/compact/rubber, +/obj/item/ammo_magazine/m9mm/compact/practice, +/obj/item/ammo_magazine/m9mm/compact/practice, +/obj/item/ammo_magazine/m9mm/compact/practice, +/obj/item/clothing/glasses/thermal, +/obj/item/clothing/glasses/thermal, +/obj/item/clothing/glasses/graviton, +/obj/item/clothing/glasses/graviton, +/obj/item/clothing/glasses/graviton, +/obj/item/clothing/glasses/graviton, +/obj/item/clothing/glasses/graviton, +/obj/item/clothing/glasses/graviton, +/obj/item/clothing/glasses/night, +/obj/item/clothing/glasses/night, +/obj/item/clothing/glasses/night, +/obj/item/clothing/glasses/night, +/obj/item/device/binoculars, +/obj/item/device/binoculars, +/obj/item/device/binoculars, +/obj/item/device/binoculars, +/obj/item/clothing/mask/gas/half, +/obj/item/clothing/mask/gas/half, +/obj/item/clothing/mask/gas/half, +/obj/item/clothing/mask/gas/half, +/obj/item/clothing/mask/gas/half, +/obj/item/clothing/mask/gas/half, +/obj/item/clothing/mask/gas/half, +/obj/item/clothing/mask/gas/half, +/obj/item/modular_computer/laptop/preset/custom_loadout/elite, +/obj/item/modular_computer/laptop/preset/custom_loadout/elite, +/obj/item/modular_computer/laptop/preset/custom_loadout/elite, +/obj/item/modular_computer/laptop/preset/custom_loadout/elite, +/obj/item/modular_computer/laptop/preset/custom_loadout/elite, +/obj/item/modular_computer/laptop/preset/custom_loadout/elite, +/obj/item/modular_computer/tablet/preset/custom_loadout/elite, +/obj/item/modular_computer/tablet/preset/custom_loadout/elite, +/obj/item/modular_computer/tablet/preset/custom_loadout/elite, +/obj/item/modular_computer/tablet/preset/custom_loadout/elite, +/obj/item/modular_computer/tablet/preset/custom_loadout/elite, +/obj/item/modular_computer/tablet/preset/custom_loadout/elite, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule, +/obj/item/device/survivalcapsule/luxury, +/obj/item/device/survivalcapsule/luxury, +/obj/item/device/survivalcapsule/luxury, +/obj/item/device/survivalcapsule/luxury, +/obj/item/device/survivalcapsule/luxury, +/obj/item/device/survivalcapsule/luxury, +/obj/item/device/survivalcapsule/luxury, +/obj/item/device/survivalcapsule/luxury, +/obj/item/device/survivalcapsule/luxurybar, +/obj/item/device/survivalcapsule/luxurybar, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/item/weapon/tank/emergency/oxygen/double, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"aP" = ( +/obj/machinery/telecomms/allinone, +/turf/simulated/floor/bluegrid, +/area/shuttle/tabiranth) +"aQ" = ( +/obj/structure/bed/pod, +/obj/item/weapon/bedsheet/rd, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/tabiranth) +"aR" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/machinery/meter, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"aS" = ( +/obj/machinery/smartfridge/survival_pod, +/obj/item/weapon/storage/firstaid/clotting, +/obj/item/weapon/storage/firstaid/bonemed, +/obj/item/weapon/storage/firstaid/combat, +/obj/item/weapon/storage/firstaid/combat, +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/weapon/storage/firstaid/toxin, +/obj/item/weapon/storage/firstaid/toxin, +/obj/item/weapon/storage/firstaid/toxin, +/obj/item/weapon/storage/firstaid/toxin, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/surgery, +/obj/item/weapon/storage/mre/menu11, +/obj/item/weapon/storage/mre/menu11, +/obj/item/weapon/storage/mre/menu11, +/obj/item/weapon/storage/mre/menu11, +/obj/item/weapon/storage/mre/menu11, +/obj/item/weapon/storage/mre/menu11, +/obj/item/weapon/storage/mre/menu13, +/obj/item/weapon/storage/mre/menu13, +/obj/item/weapon/storage/mre/menu13, +/obj/item/weapon/storage/mre/menu13, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/weapon/storage/mre/random, +/obj/item/device/defib_kit/compact/combat/loaded, +/obj/item/device/defib_kit/compact/combat/loaded, +/obj/item/weapon/storage/box/masks, +/obj/item/weapon/storage/box/gloves, +/obj/item/weapon/storage/box/freezer, +/obj/item/weapon/storage/box/bodybags, +/obj/item/weapon/storage/box/beakers, +/obj/item/weapon/storage/box/PDAs, +/obj/item/weapon/storage/box/ids, +/obj/item/weapon/storage/box/pillbottles, +/obj/item/weapon/storage/box/pillbottles, +/obj/item/weapon/storage/box/syringes, +/obj/item/weapon/storage/box/syringes, +/obj/item/weapon/storage/quickdraw/syringe_case, +/obj/item/weapon/storage/quickdraw/syringe_case, +/obj/item/weapon/storage/quickdraw/syringe_case, +/obj/item/weapon/storage/quickdraw/syringe_case, +/obj/item/weapon/reagent_containers/hypospray, +/obj/item/weapon/reagent_containers/hypospray, +/obj/item/weapon/reagent_containers/hypospray, +/obj/item/weapon/reagent_containers/hypospray, +/obj/item/stack/nanopaste/advanced, +/obj/item/stack/nanopaste/advanced, +/obj/item/stack/nanopaste/advanced, +/obj/item/stack/nanopaste/advanced, +/obj/item/stack/nanopaste/advanced, +/obj/item/stack/nanopaste/advanced, +/obj/item/stack/nanopaste/advanced, +/obj/item/stack/nanopaste/advanced, +/obj/item/stack/nanopaste/advanced, +/obj/item/stack/nanopaste/advanced, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/glucose, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/glucose, +/obj/item/device/healthanalyzer/advanced, +/obj/item/device/healthanalyzer/advanced, +/obj/item/device/healthanalyzer/advanced, +/obj/item/device/healthanalyzer/advanced, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/glass/beaker/noreact, +/obj/item/weapon/reagent_containers/glass/beaker/noreact, +/obj/item/weapon/reagent_containers/glass/beaker/bluespace, +/obj/item/weapon/reagent_containers/glass/beaker/bluespace, +/obj/item/weapon/reagent_containers/glass/beaker/bluespace, +/obj/item/weapon/reagent_containers/glass/beaker/bluespace, +/obj/item/weapon/reagent_containers/dropper, +/obj/item/weapon/reagent_containers/dropper, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"aT" = ( +/obj/machinery/shipsensors{ + dir = 1; + health = 1000; + heat_reduction = 4.5; + max_health = 1000; + name = "military sensors suite" + }, +/turf/simulated/floor/reinforced/airless{ + name = "outer hull" + }, +/area/shuttle/tabiranth) +"aU" = ( +/obj/machinery/chemical_dispenser/ert/specialops, +/obj/structure/table/survival_pod, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"aV" = ( +/obj/machinery/chem_master, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"aW" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"aX" = ( +/obj/machinery/power/apc{ + alarms_hidden = 1; + cell_type = /obj/item/weapon/cell/super; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"aY" = ( +/obj/machinery/ntnet_relay{ + density = 0; + layer = 2.45; + plane = -44 + }, +/obj/effect/catwalk_plated/white, +/turf/simulated/floor/bluegrid, +/area/shuttle/tabiranth) +"aZ" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"ba" = ( +/turf/template_noop, +/area/template_noop) +"bb" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"bc" = ( +/obj/machinery/sleep_console{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"bd" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/device/perfect_tele_beacon/stationary{ + tele_name = "Tabiranth"; + tele_network = "centcom" + }, +/obj/effect/floor_decal/industrial/hatch, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"be" = ( +/obj/machinery/body_scanconsole{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"bf" = ( +/obj/machinery/bodyscanner{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"bg" = ( +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"bh" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/door/airlock/alien/blue{ + req_one_access = list(101) + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/shuttle/tabiranth) +"bi" = ( +/obj/structure/handrail{ + dir = 4 + }, +/obj/machinery/recharge_station{ + density = 0; + layer = 2.45; + plane = -44 + }, +/obj/effect/catwalk_plated/white, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"bj" = ( +/obj/machinery/smartfridge/survival_pod, +/obj/item/clothing/suit/space/void/merc/fire, +/obj/item/clothing/head/helmet/space/void/merc/fire, +/obj/item/clothing/suit/space/void/merc, +/obj/item/clothing/suit/space/void/merc, +/obj/item/clothing/head/helmet/space/void/merc, +/obj/item/clothing/head/helmet/space/void/merc, +/obj/item/clothing/suit/space/void/merc/odst, +/obj/item/clothing/suit/space/void/merc/odst, +/obj/item/clothing/head/helmet/space/void/merc/odst, +/obj/item/clothing/head/helmet/space/void/merc/odst, +/obj/item/clothing/suit/space/void/security/fluff/hos, +/obj/item/clothing/head/helmet/space/void/security/fluff/hos, +/obj/item/clothing/head/helmet/space/void/captain, +/obj/item/clothing/suit/space/void/captain, +/obj/item/weapon/tank/oxygen/yellow, +/obj/item/weapon/tank/oxygen/yellow, +/obj/item/weapon/tank/oxygen/yellow, +/obj/item/weapon/tank/oxygen/yellow, +/obj/item/weapon/tank/vox, +/obj/item/weapon/tank/vox, +/obj/item/rig_module/chem_dispenser/injector/advanced, +/obj/item/rig_module/vision/multi, +/obj/item/weapon/rig/military/equipped, +/obj/item/weapon/rig/pmc/commander, +/obj/item/weapon/rig/pmc/medical, +/obj/item/weapon/rig/pmc/engineer, +/obj/item/weapon/rig/pmc/security, +/obj/item/weapon/rig/pmc/security, +/obj/item/weapon/rig/light/ninja, +/obj/item/weapon/gun/energy/modular/cannon, +/obj/item/weapon/gun/energy/modular/carbine, +/obj/item/weapon/gun/energy/modular/pistol, +/obj/item/weapon/gun/energy/medigun, +/obj/item/weapon/gun/energy/captain, +/obj/item/weapon/material/knife/machete/deluxe{ + default_material = "durasteel" + }, +/obj/item/clothing/accessory/holster/machete, +/obj/item/weapon/storage/firstaid/combat, +/obj/item/weapon/storage/firstaid/combat, +/obj/item/weapon/storage/toolbox/syndicate/powertools, +/obj/item/weapon/storage/box/syndie_kit/demolitions_super_heavy{ + name = "Super Heavy Demolitions kit" + }, +/obj/item/weapon/storage/box/syndie_kit/demolitions_heavy{ + name = "Heavy Demolitions kit" + }, +/obj/item/weapon/storage/box/syndie_kit/demolitions_heavy{ + name = "Heavy Demolitions kit" + }, +/obj/item/weapon/storage/box/syndie_kit/demolitions_heavy{ + name = "Heavy Demolitions kit" + }, +/obj/item/weapon/plastique, +/obj/item/weapon/plastique, +/obj/item/weapon/plastique, +/obj/item/weapon/plastique, +/obj/item/weapon/plastique, +/obj/item/weapon/plastique, +/obj/item/weapon/cell/device/weapon/recharge/alien, +/obj/item/weapon/cell/device/weapon/recharge/alien, +/obj/item/weapon/cell/device/weapon/recharge/alien, +/obj/item/weapon/cell/device/weapon/recharge/alien, +/obj/item/weapon/cell/device/weapon/recharge/alien, +/obj/item/weapon/cell/device/weapon/recharge/alien, +/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid_combat, +/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid, +/obj/item/ammo_casing/microbattery/medical/corpse_mend, +/obj/item/ammo_casing/microbattery/medical/corpse_mend, +/obj/item/weapon/cell/slime{ + description_info = "This 'cell' holds a max charge of 20k and self recharges over time."; + icon = 'icons/obj/power.dmi'; + icon_state = "icell"; + maxcharge = 20000; + name = "slime core cell" + }, +/obj/item/weapon/cell/slime{ + description_info = "This 'cell' holds a max charge of 20k and self recharges over time."; + icon = 'icons/obj/power.dmi'; + icon_state = "icell"; + maxcharge = 20000; + name = "slime core cell" + }, +/obj/item/weapon/cell/slime{ + description_info = "This 'cell' holds a max charge of 20k and self recharges over time."; + icon = 'icons/obj/power.dmi'; + icon_state = "icell"; + maxcharge = 20000; + name = "slime core cell" + }, +/obj/item/weapon/cell/slime{ + description_info = "This 'cell' holds a max charge of 20k and self recharges over time."; + icon = 'icons/obj/power.dmi'; + icon_state = "icell"; + maxcharge = 20000; + name = "slime core cell" + }, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/slime_extract/pink, +/obj/item/weapon/deadringer, +/obj/item/weapon/deadringer, +/obj/item/stack/telecrystal{ + amount = 240 + }, +/obj/item/stack/telecrystal{ + amount = 240 + }, +/obj/item/stack/telecrystal{ + amount = 240 + }, +/obj/item/stack/telecrystal{ + amount = 240 + }, +/obj/item/stack/telecrystal{ + amount = 240 + }, +/obj/item/stack/telecrystal{ + amount = 240 + }, +/obj/item/stack/telecrystal{ + amount = 240 + }, +/obj/item/stack/telecrystal{ + amount = 240 + }, +/obj/item/weapon/card/mining_point_card{ + mine_points = 50000 + }, +/obj/item/weapon/card/mining_point_card{ + mine_points = 50000 + }, +/obj/item/weapon/card/mining_point_card{ + mine_points = 50000 + }, +/obj/item/weapon/card/mining_point_card{ + mine_points = 50000 + }, +/obj/item/weapon/card/mining_point_card{ + mine_points = 50000 + }, +/obj/item/weapon/card/mining_point_card{ + mine_points = 50000 + }, +/obj/item/weapon/card/mining_point_card/survey{ + name = "survey point card"; + survey_points = 5000 + }, +/obj/item/weapon/card/mining_point_card/survey{ + name = "survey point card"; + survey_points = 5000 + }, +/obj/item/weapon/card/mining_point_card/survey{ + name = "survey point card"; + survey_points = 5000 + }, +/obj/item/weapon/card/mining_point_card/survey{ + name = "survey point card"; + survey_points = 5000 + }, +/obj/item/weapon/card/mining_point_card/survey{ + name = "survey point card"; + survey_points = 5000 + }, +/obj/item/weapon/card/mining_point_card/survey{ + name = "survey point card"; + survey_points = 5000 + }, +/obj/item/device/survivalcapsule/military, +/obj/item/device/survivalcapsule/military, +/obj/item/device/survivalcapsule/escapepod, +/obj/item/weapon/technomancer_catalog/universal, +/obj/item/weapon/technomancer_core/universal, +/obj/item/weapon/storage/secure/briefcase/money{ + desc = "An sleek tidy briefcase."; + name = "secure briefcase" + }, +/obj/item/weapon/storage/secure/briefcase/money{ + desc = "An sleek tidy briefcase."; + name = "secure briefcase" + }, +/obj/item/weapon/storage/secure/briefcase/money{ + desc = "An sleek tidy briefcase."; + name = "secure briefcase" + }, +/obj/item/weapon/storage/secure/briefcase/money{ + desc = "An sleek tidy briefcase."; + name = "secure briefcase" + }, +/obj/item/weapon/storage/secure/briefcase/money{ + desc = "An sleek tidy briefcase."; + name = "secure briefcase" + }, +/obj/item/weapon/storage/secure/briefcase/money{ + desc = "An sleek tidy briefcase."; + name = "secure briefcase" + }, +/obj/item/device/radio/uplink, +/obj/item/device/radio/uplink, +/obj/item/device/spaceflare, +/obj/item/device/spaceflare, +/obj/item/device/perfect_tele/frontier/unknown/four, +/obj/item/device/healthanalyzer/phasic, +/obj/item/device/bluespaceradio/tether_prelinked, +/obj/item/weapon/cat_box, +/obj/item/weapon/cat_box, +/obj/item/weapon/cat_box/black, +/obj/item/weapon/cat_box/black, +/obj/item/weapon/disposable_teleporter, +/obj/item/weapon/hand_tele, +/obj/item/weapon/storage/belt, +/obj/item/weapon/storage/belt/medical/alien, +/obj/item/weapon/storage/belt/utility/alien, +/obj/item/weapon/storage/belt/holding, +/obj/item/weapon/rig/ert/assetprotection, +/obj/item/weapon/rig/ert/assetprotection, +/obj/item/weapon/gun/energy/pulse_rifle, +/obj/item/weapon/gun/energy/pulse_rifle, +/obj/item/weapon/gun/energy/pulse_rifle, +/obj/item/weapon/gun/energy/pulse_rifle, +/obj/item/weapon/gun/projectile/automatic/l6_saw, +/obj/item/weapon/gun/projectile/automatic/l6_saw, +/obj/item/ammo_magazine/m545saw, +/obj/item/ammo_magazine/m545saw, +/obj/item/ammo_magazine/m545saw, +/obj/item/ammo_magazine/m545saw, +/obj/item/ammo_magazine/m545saw/ap, +/obj/item/ammo_magazine/m545saw/ap, +/obj/item/ammo_magazine/m545saw/ap, +/obj/item/ammo_magazine/m545saw/ap, +/obj/item/ammo_magazine/m545saw/ap, +/obj/item/ammo_magazine/m545saw/ap, +/obj/item/weapon/gun/projectile/automatic/z8, +/obj/item/weapon/gun/projectile/automatic/z8, +/obj/item/weapon/gun/projectile/heavysniper, +/obj/item/weapon/storage/box/sniperammo, +/obj/item/weapon/storage/box/sniperammo, +/obj/item/ammo_magazine/m762, +/obj/item/ammo_magazine/m762, +/obj/item/ammo_magazine/m762, +/obj/item/ammo_magazine/m762, +/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/m762/ap, +/obj/item/ammo_magazine/m762/ap, +/obj/item/weapon/storage/box/sniperammo, +/obj/item/weapon/storage/box/sniperammo, +/obj/item/modular_computer/laptop/preset/custom_loadout/hybrid, +/obj/item/modular_computer/tablet/preset/custom_loadout/hybrid, +/obj/item/device/perfect_tele/alien, +/obj/item/device/perfect_tele/frontier/staff, +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/obj/item/weapon/inducer/hybrid, +/obj/item/weapon/cell/device/weapon/recharge/alien/hybrid, +/obj/item/weapon/cell/device/weapon/recharge/alien/hybrid, +/obj/item/weapon/cell/device/weapon/recharge/alien/hybrid, +/obj/item/weapon/cell/device/weapon/recharge/alien/hybrid, +/obj/item/weapon/circuitboard/machine/abductor/core/hybrid, +/obj/item/weapon/circuitboard/machine/abductor/core/hybrid, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/tabiranth) +"bk" = ( +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/obj/structure/closet/secure_closet/wall{ + anchored = 1; + density = 0; + pixel_x = 32; + req_access = list(101) + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"bl" = ( +/obj/machinery/power/smes/buildable/hybrid{ + input_level = 200000; + output_level = 200000 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/tabiranth) +"bm" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/tabiranth) +"bn" = ( +/obj/machinery/pointdefense_control{ + id_tag = "tabiranth_pd" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/tabiranth) +"bo" = ( +/obj/structure/closet/medical_wall{ + pixel_x = -32 + }, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/storage/box/gloves, +/obj/item/weapon/storage/firstaid/surgery, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner"; + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner"; + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/device/mmi/digital/posibrain, +/obj/item/device/mmi, +/obj/item/weapon/book/manual/robotics_cyborgs, +/obj/item/device/robotanalyzer, +/obj/item/weapon/tank/anesthetic, +/obj/item/weapon/tank/anesthetic, +/obj/item/weapon/tank/anesthetic, +/obj/item/clothing/mask/breath/medical, +/obj/item/clothing/mask/breath/medical, +/obj/item/clothing/mask/breath/medical, +/obj/item/weapon/storage/belt/utility/chief/full, +/obj/item/stack/cable_coil/alien, +/obj/item/stack/nanopaste, +/obj/item/stack/nanopaste, +/obj/item/stack/nanopaste, +/obj/item/device/defib_kit/jumper_kit/loaded, +/obj/item/device/defib_kit/compact/loaded, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"bp" = ( +/obj/machinery/computer/operating{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"bq" = ( +/obj/machinery/mineral/equipment_vendor, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"br" = ( +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/machinery/atm, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"bs" = ( +/obj/structure/table/survival_pod, +/obj/machinery/turretid{ + control_area = /area/shuttle/tabiranth; + pixel_x = -32; + req_access = list(101) + }, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/obj/machinery/recharger, +/obj/item/modular_computer/laptop/preset/custom_loadout/elite, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/tabiranth) +"bt" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1380 + }, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + pixel_y = 25 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "tabiranth_docker"; + pixel_y = -32; + req_one_access = list(101) + }, +/obj/effect/shuttle_landmark/shuttle_initializer/tabiranth, +/obj/effect/overmap/visitable/ship/landable/tabiranth, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/structure/handrail{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"bu" = ( +/obj/machinery/computer/ship/engines{ + dir = 8; + icon_state = "computer" + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/tabiranth) +"bv" = ( +/obj/structure/medical_stand, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"bw" = ( +/obj/machinery/optable, +/obj/machinery/oxygen_pump/anesthetic{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"bx" = ( +/obj/machinery/mineral/equipment_vendor/survey, +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"by" = ( +/obj/machinery/syndicate_beacon/virgo{ + charges = 10; + density = 0 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 6 + }, +/obj/machinery/vending/nifsoft_shop{ + categories = 111; + emagged = 1; + name = "Hacked NIFSoft Shop"; + prices = list() + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"bz" = ( +/obj/machinery/computer/ship/sensors{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/tabiranth) +"bA" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/alien/blue{ + req_one_access = list(108) + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/shuttle/tabiranth) +"bB" = ( +/obj/machinery/computer/shuttle_control/explore/tabiranth{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/tabiranth) +"bC" = ( +/obj/machinery/organ_printer/flesh/full, +/obj/structure/sink/kitchen{ + icon_state = "sink_alt"; + dir = 4; + pixel_x = -13 + }, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"bD" = ( +/obj/item/weapon/storage/firstaid/surgery, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner"; + pixel_x = 2; + pixel_y = 2 + }, +/obj/structure/table/survival_pod, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"bE" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/phoronreinforced{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/shuttle/tabiranth) +"bF" = ( +/obj/machinery/computer/ship/helm{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/tabiranth) +"bG" = ( +/obj/machinery/ion_engine, +/turf/simulated/floor/reinforced/airless, +/area/shuttle/tabiranth) +"bH" = ( +/obj/structure/closet/hydrant{ + pixel_x = 32 + }, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/clothing/mask/gas, +/obj/item/device/flashlight, +/obj/item/weapon/tank/oxygen/red, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/item/weapon/extinguisher, +/obj/item/weapon/extinguisher, +/obj/item/weapon/extinguisher, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/weapon/storage/toolbox/emergency, +/turf/simulated/floor/tiled/white, +/area/shuttle/tabiranth) +"bI" = ( +/obj/structure/bed/chair/bay/shuttle, +/obj/machinery/button/remote/blast_door{ + id = "tabi-vault"; + name = "Vault Blast Door Controls"; + pixel_x = 26; + pixel_y = -26; + req_one_access = list(108) + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/tabiranth) +"bJ" = ( +/obj/structure/fans/hardlight, +/obj/machinery/door/airlock/alien/blue/locked{ + req_one_access = list(101) + }, +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "tabiranth_docker"; + name = "exterior access button"; + pixel_x = 5; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"bK" = ( +/obj/structure/handrail{ + dir = 8 + }, +/obj/machinery/recharge_station{ + density = 0; + layer = 2.45; + plane = -44 + }, +/obj/effect/catwalk_plated/white, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/tabiranth) +"bM" = ( +/obj/machinery/door/airlock/alien/blue{ + req_one_access = list(108) + }, +/obj/machinery/door/blast/regular{ + destroy_hits = 100; + dir = 4; + id = "tabi-vault"; + name = "Vault" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/shuttle/tabiranth) +"bN" = ( +/obj/machinery/door/airlock/alien/blue{ + req_one_access = list(101) + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/shuttle/tabiranth) +"bO" = ( +/obj/machinery/mech_recharger{ + icon = 'icons/turf/shuttle_alien_blue.dmi' + }, +/obj/mecha/combat/fighter/baron{ + ground_capable = 1; + health = 800; + internal_damage_threshold = 100; + maxhealth = 800; + name = "Panther" + }, +/turf/simulated/floor/reinforced, +/area/shuttle/tabiranth) +"wz" = ( +/obj/structure/fans/hardlight, +/obj/machinery/door/blast/regular{ + destroy_hits = 1000; + id = "tabi-hangar2" + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/shuttle/tabiranth) + +(1,1,1) = {" +ba +ba +ba +ba +aa +ac +aD +ac +aM +ab +aa +ac +ad +ad +ad +ad +ba +"} +(2,1,1) = {" +aa +ac +ah +ah +ad +ad +aE +ad +ad +ad +ad +ac +bj +bq +bx +ad +aa +"} +(3,1,1) = {" +ab +ad +ai +bO +au +ac +aK +ad +aN +aX +bi +bM +bk +br +by +ac +ab +"} +(4,1,1) = {" +ac +ac +aj +aq +av +aA +aF +ad +aO +aC +bb +ac +ad +ad +ac +bE +bG +"} +(5,1,1) = {" +ad +ae +ak +ar +aw +aw +aG +ad +aU +aZ +bc +ad +bl +bs +bz +ac +ac +"} +(6,1,1) = {" +ad +af +al +as +as +as +aR +bh +ap +aW +bd +bA +bm +aQ +bI +bF +ad +"} +(7,1,1) = {" +ad +ag +am +at +ax +ax +aI +ad +aV +bg +be +ad +bn +bu +bB +ac +ac +"} +(8,1,1) = {" +ac +ac +an +bO +aH +aB +aJ +ad +aS +aY +bf +ac +ad +ad +ac +bE +bG +"} +(9,1,1) = {" +ab +ad +ao +aq +aP +ac +aL +ad +aN +bH +bK +bN +bo +bv +bC +ac +ab +"} +(10,1,1) = {" +aa +ac +wz +wz +ad +ad +bt +ad +ad +ad +ad +ac +bp +bw +bD +ad +aa +"} +(11,1,1) = {" +ba +ba +ba +ba +aa +ac +bJ +ac +aT +ab +aa +ac +ad +ad +ad +ad +ba +"} diff --git a/maps/tether/submaps/om_ships/vespa.dm b/maps/tether/submaps/om_ships/vespa.dm index 8ff9577b2f..dab61f4d79 100644 --- a/maps/tether/submaps/om_ships/vespa.dm +++ b/maps/tether/submaps/om_ships/vespa.dm @@ -95,7 +95,9 @@ /area/ship/expe/bridge name = "\improper Exp Ship - Bridge" /area/ship/expe/engines - name = "\improper Exp Ship - Engines" + name = "\improper Exp Ship - Engines Port" +/area/ship/expe/engines2 + name = "\improper Exp Ship - Engines Starboard" /area/ship/expe/captqua name = "\improper Exp Ship - Captain's Quarters" /area/ship/expe/expedition @@ -112,42 +114,50 @@ name = "\improper Exp Ship - Maintenance" /area/ship/expe/maintenance2 name = "\improper Exp Ship - Maintenance" - +/area/ship/expe/shieldgen + name = "\improper Exp Ship - Shield Generator" // The 'ship' /obj/effect/overmap/visitable/ship/vespa - name = "HPV Vespa" - desc = "A Hephaestus Industries vessel." + desc = "A spacefaring vessel, of Hephaestus design." + scanner_name = "HPV Vespa" + scanner_desc = @{"[i]Registration[/i]: HPV Vespa +[i]Class[/i]: Cruiser +[i]Transponder[/i]: Transmitting (CIV), Hephaestus Industries +[b]Notice[/b]: Corporate vessel"} color = "#4cad73" //Green vessel_mass = 10000 vessel_size = SHIP_SIZE_LARGE - initial_generic_waypoints = list("hpv_port", "hpv_starboard", "omship_spawn_vespaboat") + initial_generic_waypoints = list("hpv_port", "hpv_starboard", "hpv_hangar") + fore_dir = 4 + +// Boat deprecated because hangar was converted into one for the expedition shuttle // The ship's boat -/area/shuttle/vespaboat - name = "\improper Vespa's Ship's Boat" - icon_state = "shuttle" +// /area/shuttle/vespaboat + //name = "\improper Vespa's Ship's Boat" + //icon_state = "shuttle" // The shuttle's 'shuttle' computer -/obj/machinery/computer/shuttle_control/multi/vespaboat - name = "Vespa's Shuttle control console" - shuttle_tag = "Vespa's Ship's Boat" - req_one_access = list(access_pilot) +// /obj/machinery/computer/shuttle_control/explore/vespaboat + //name = "Vespa's Shuttle control console" + //shuttle_tag = "Vespa's Ship's Boat" + //req_one_access = list(access_pilot) // A shuttle lateloader landmark -/obj/effect/shuttle_landmark/shuttle_initializer/vespaboat - name = "Vespa's Boat Bay" - base_area = /area/ship/expe/hangar - base_turf = /turf/simulated/floor/tiled/techfloor - landmark_tag = "omship_spawn_vespaboat" - docking_controller = "vespa_boatbay" - shuttle_type = /datum/shuttle/autodock/overmap/vespaboat +// /obj/effect/shuttle_landmark/shuttle_initializer/vespaboat + //name = "Vespa's Boat Bay" + //base_area = /area/ship/expe/hangar + //base_turf = /turf/simulated/floor/tiled/techfloor + //landmark_tag = "omship_spawn_vespaboat" + //docking_controller = "vespa_boatbay" + //shuttle_type = /datum/shuttle/autodock/overmap/vespaboat // The 'shuttle' -/datum/shuttle/autodock/overmap/vespaboat - name = "Vespa's Ship's Boat" - current_location = "omship_spawn_vespaboat" - docking_controller_tag = "vespaboat_docker" - shuttle_area = /area/shuttle/vespaboat - fuel_consumption = 0 - defer_initialisation = TRUE \ No newline at end of file +// /datum/shuttle/autodock/overmap/vespaboat + //name = "Vespa's Ship's Boat" + //current_location = "omship_spawn_vespaboat" + //docking_controller_tag = "vespaboat_docker" + //shuttle_area = /area/shuttle/vespaboat + //fuel_consumption = 0 + //defer_initialisation = TRUE \ No newline at end of file diff --git a/maps/tether/submaps/om_ships/vespa.dmm b/maps/tether/submaps/om_ships/vespa.dmm index ac2496224a..12be67f2a2 100644 --- a/maps/tether/submaps/om_ships/vespa.dmm +++ b/maps/tether/submaps/om_ships/vespa.dmm @@ -53,31 +53,36 @@ /area/ship/expe/atmospherics) "aj" = ( /obj/machinery/portable_atmospherics/powered/pump, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor, /area/ship/expe/atmospherics) "ak" = ( -/obj/item/latexballon, -/turf/simulated/floor/tiled/techfloor, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor, /area/ship/expe/atmospherics) "al" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/atmospherics) -"am" = ( -/obj/machinery/portable_atmospherics/powered/scrubber, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/atmospherics) -"an" = ( /obj/machinery/portable_atmospherics/canister/phoron, /obj/machinery/light{ icon_state = "tube1"; dir = 8 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor, /area/ship/expe/atmospherics) -"ao" = ( +"am" = ( /obj/machinery/portable_atmospherics/canister/phoron, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor, /area/ship/expe/atmospherics) +"an" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/turf/simulated/floor, +/area/ship/expe/engines) +"ao" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/machinery/meter, +/turf/simulated/floor, +/area/ship/expe/engines) "ap" = ( /obj/machinery/alarm{ frequency = 1441; @@ -180,30 +185,39 @@ /turf/simulated/floor, /area/ship/expe/atmospherics) "aG" = ( -/obj/machinery/atmospherics/unary/engine{ - icon_state = "nozzle"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engines) -"aH" = ( -/obj/structure/window/reinforced{ - icon_state = "rwindow"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/green{ - icon_state = "map"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"aI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; dir = 10 }, /turf/simulated/floor, -/area/ship/expe/engines) +/area/ship/expe/maintenancerim) +"aH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 5 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"aI" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 6 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) "aJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ icon_state = "intact"; @@ -224,20 +238,28 @@ /turf/simulated/floor, /area/ship/expe/atmospherics) "aM" = ( -/obj/structure/window/reinforced{ - icon_state = "rwindow"; - dir = 4 +/obj/machinery/door/airlock/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/hidden/green{ - icon_state = "map"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/engines) +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) "aN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/turf/simulated/floor, -/area/ship/expe/engines) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) "aO" = ( /obj/machinery/power/apc{ dir = 8; @@ -277,13 +299,12 @@ /turf/simulated/wall/rpshull, /area/ship/expe/maintenancerim) "aT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 1 }, /turf/simulated/floor, -/area/ship/expe/engines) +/area/ship/expe/engines2) "aU" = ( /obj/machinery/cablelayer, /turf/simulated/floor, @@ -316,14 +337,7 @@ /turf/simulated/floor, /area/space) "aZ" = ( -/obj/structure/window/reinforced{ - icon_state = "rwindow"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 9 - }, +/obj/machinery/atmospherics/binary/pump/fuel, /turf/simulated/floor, /area/ship/expe/engines) "ba" = ( @@ -359,11 +373,18 @@ /turf/space, /area/space) "bf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 4 + }, /obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) +/obj/machinery/door/airlock/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) "bg" = ( /obj/structure/closet/firecloset/full, /turf/simulated/floor, @@ -457,76 +478,112 @@ /turf/space, /area/space) "bu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 6 - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"bv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"bw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 4 - }, -/obj/machinery/light/small{ - icon_state = "bulb1"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"bx" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 9 - }, -/obj/machinery/meter, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"by" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; - dir = 6 + dir = 5 }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"bz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"bA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 9 + dir = 5 }, /obj/structure/cable{ d1 = 1; d2 = 4; icon_state = "1-4" }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, /turf/simulated/floor, /area/ship/expe/maintenancerim) +"bv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light/small, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"by" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"bz" = ( +/turf/simulated/wall/rpshull, +/area/ship/expe/hangar) +"bA" = ( +/obj/machinery/atmospherics/unary/vent_pump/aux{ + frequency = 1449; + id_tag = "northvent" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/northairlock) "bB" = ( /obj/structure/sign/department/conference_room, /turf/simulated/wall/rpshull, @@ -561,17 +618,13 @@ /turf/simulated/floor, /area/ship/expe/maintenancerim) "bF" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light/small, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" +/obj/machinery/atmospherics/portables_connector/aux{ + icon_state = "map_connector-aux"; + dir = 4 }, +/obj/machinery/portable_atmospherics/canister/air/airlock, /turf/simulated/floor, -/area/ship/expe/maintenancerim) +/area/ship/expe/northairlock) "bG" = ( /obj/structure/cable{ icon_state = "4-8" @@ -581,19 +634,44 @@ /turf/simulated/floor, /area/ship/expe/maintenancerim) "bH" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/air_sensor{ + frequency = 1449; + id_tag = "northsensor" + }, +/obj/machinery/airlock_sensor{ + frequency = 1449; + id_tag = "northsensor"; + master_tag = "northairlock"; + pixel_x = -1; + pixel_y = -21 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + icon_state = "map-aux"; + dir = 8 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenancerim) +/area/ship/expe/northairlock) "bI" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1449; + id_tag = "northairlock"; + pixel_x = 1; + pixel_y = -25; + tag_airpump = "northvent"; + tag_chamber_sensor = "northsensor"; + tag_exterior_door = "northext"; + tag_interior_door = "northint" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenancerim) +/area/ship/expe/northairlock) "bJ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -654,24 +732,29 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) "bQ" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - frequency = 1449; - id_tag = "northvent" - }, -/turf/simulated/floor/tiled/techfloor, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/wall/rpshull, /area/ship/expe/northairlock) "bR" = ( -/obj/machinery/atmospherics/portables_connector{ - icon_state = "map_connector"; - dir = 4 +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" }, -/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, /turf/simulated/floor, -/area/ship/expe/northairlock) +/area/ship/expe/maintenance1) "bS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 10 +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 }, /turf/simulated/floor, /area/ship/expe/maintenance1) @@ -680,17 +763,31 @@ /turf/simulated/wall/rpshull, /area/ship/expe/maintenance1) "bU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringstorage) "bV" = ( -/turf/simulated/wall/rpshull, -/area/ship/expe/hangar) +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringstorage) "bW" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 6 + }, /turf/simulated/floor, -/area/ship/expe/hangar) +/area/ship/expe/maintenance2) "bX" = ( /turf/simulated/wall/rpshull, /area/ship/expe/hangarcontrol) @@ -706,11 +803,22 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "cb" = ( -/obj/machinery/door/airlock/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) +/area/ship/expe/maintenancerim) "cc" = ( /turf/simulated/wall/rpshull, /area/ship/expe/cabin1) @@ -759,72 +867,89 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) "co" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/blue{ - icon_state = "map"; - dir = 8 - }, -/obj/machinery/air_sensor{ - frequency = 1449; - id_tag = "northsensor" - }, -/obj/machinery/airlock_sensor{ - frequency = 1449; - id_tag = "northsensor"; - master_tag = "northairlock"; - pixel_x = -1; - pixel_y = -21 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/northairlock) -"cp" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 9 - }, -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - frequency = 1449; - id_tag = "northairlock"; - pixel_x = 1; - pixel_y = -25; - tag_airpump = "northvent"; - tag_chamber_sensor = "northsensor"; - tag_exterior_door = "northext"; - tag_interior_door = "northint" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/northairlock) -"cq" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/blue, -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"cr" = ( -/turf/simulated/floor, -/area/ship/expe/maintenance1) -"cs" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"ct" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"cu" = ( /obj/machinery/alarm{ frequency = 1441; pixel_y = 22 }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"cp" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"cq" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 10 + }, +/turf/simulated/floor, +/area/ship/expe/maintenance2) +"cr" = ( +/turf/simulated/floor, +/area/ship/expe/maintenance1) +"cs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/wall/rpshull, +/area/ship/expe/maintenance2) +"ct" = ( +/obj/machinery/atmospherics/unary/vent_pump/aux{ + dir = 1; + frequency = 1459; + icon_state = "map_vent_aux"; + id_tag = "southvent" + }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) +/area/ship/expe/southairlock) +"cu" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor, +/area/ship/expe/maintenance2) "cv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/air_sensor{ + frequency = 1459; + id_tag = "southsensor" + }, +/obj/machinery/airlock_sensor{ + frequency = 1459; + id_tag = "southsensor"; + pixel_x = 0; + pixel_y = 21 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 6 + }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) +/area/ship/expe/southairlock) "cw" = ( /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangarcontrol) @@ -851,10 +976,22 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "cB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 10 + }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) +/area/ship/expe/maintenancerim) "cC" = ( /obj/machinery/alarm{ frequency = 1441; @@ -1157,17 +1294,38 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) "dg" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue, -/turf/simulated/wall/rpshull, -/area/ship/expe/northairlock) +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1459; + id_tag = "southairlock"; + pixel_x = 0; + pixel_y = 21; + tag_airpump = "southvent"; + tag_chamber_sensor = "southsensor"; + tag_exterior_door = "southext"; + tag_interior_door = "southint" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + icon_state = "map-aux"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/southairlock) "dh" = ( /obj/structure/closet/firecloset/full, /turf/simulated/floor, /area/ship/expe/maintenance1) "di" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue, +/obj/machinery/atmospherics/portables_connector/aux{ + icon_state = "map_connector-aux"; + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, /turf/simulated/floor, -/area/ship/expe/maintenance1) +/area/ship/expe/maintenance2) "dj" = ( /obj/machinery/power/apc{ dir = 1; @@ -1200,46 +1358,28 @@ /turf/simulated/floor, /area/ship/expe/maintenance1) "dm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + icon_state = "map-aux"; + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) +/turf/simulated/floor, +/area/ship/expe/maintenance2) "dn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/item/weapon/handcuffs/fuzzy, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) +/turf/simulated/floor, +/area/ship/expe/maintenance2) "do" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; +/obj/machinery/atmospherics/unary/engine{ + icon_state = "nozzle"; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) +/turf/space, +/area/space) "dp" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) "dq" = ( @@ -1280,11 +1420,10 @@ /turf/simulated/wall/rpshull, /area/ship/expe/corridor1) "dw" = ( -/obj/machinery/light{ - dir = 4 - }, +/obj/machinery/door/airlock/glass, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "dx" = ( @@ -1571,37 +1710,14 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) "ea" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 5 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance1) +/turf/simulated/floor/reinforced, +/area/ship/expe/hangar) "eb" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance1) +/turf/simulated/wall/rpshull, +/area/ship/expe/engines2) "ec" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 9 - }, /turf/simulated/floor, -/area/ship/expe/maintenance1) +/area/ship/expe/engines2) "ed" = ( /obj/structure/cable{ icon_state = "4-8" @@ -1621,13 +1737,18 @@ /turf/simulated/floor/airless, /area/ship/expe/bridge) "eg" = ( -/turf/simulated/wall/rpshull, -/area/shuttle/vespaboat) -"eh" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/corridor1) +"eh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 5 + }, +/turf/simulated/floor, +/area/ship/expe/engines) "ei" = ( /obj/structure/sign/poster/nanotrasen, /turf/simulated/wall/rpshull, @@ -1899,36 +2020,48 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) "eW" = ( -/obj/machinery/light/small{ - icon_state = "bulb1"; - dir = 8 +/obj/machinery/atmospherics/binary/pump/fuel{ + icon_state = "map_off-fuel"; + dir = 4 }, /turf/simulated/floor, -/area/ship/expe/maintenancerim) +/area/ship/expe/engines) "eX" = ( -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/engines) "eY" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/engines) "eZ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/structure/table/steel_reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 9 + }, +/turf/simulated/floor, +/area/ship/expe/engines) "fa" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/closet/crate, -/obj/fiftyspawner/phoron, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor, +/area/ship/expe/engines) "fb" = ( -/obj/structure/closet/crate, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/floor, +/area/ship/expe/engines2) "fc" = ( /obj/machinery/door/airlock/glass_science{ req_one_access = newlist() @@ -1974,10 +2107,12 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "fh" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ +/obj/machinery/light{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "fi" = ( @@ -2357,93 +2492,95 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) "fO" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) +/turf/simulated/floor, +/area/ship/expe/engines2) "fP" = ( -/obj/structure/bed/chair{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/turf/simulated/floor, +/area/ship/expe/maintenancerim) "fQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/bed/chair{ +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"fR" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; dir = 1 }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"fR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" }, -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/turf/simulated/floor, +/area/ship/expe/maintenancerim) "fS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/computer/shuttle_control/multi/vespaboat{ - icon_state = "computer"; - dir = 8 - }, -/obj/machinery/light{ +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/turf/simulated/floor, +/area/ship/expe/engines2) "fT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/turf/simulated/floor, +/area/ship/expe/engines) "fU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/turf/simulated/floor, +/area/ship/expe/engines) "fV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/turf/simulated/wall/rpshull, +/area/ship/expe/engines2) "fW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; dir = 9 }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/turf/simulated/floor, +/area/ship/expe/engines2) "fX" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) "fY" = ( /obj/structure/table/rack, /obj/item/clothing/suit/space/void/pilot, @@ -2493,12 +2630,11 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangarcontrol) "gc" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 + dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "gd" = ( @@ -3004,22 +3140,34 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) "gK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) "gL" = ( -/obj/machinery/status_display, -/turf/simulated/wall/rpshull, -/area/shuttle/vespaboat) -"gM" = ( -/obj/machinery/door/airlock/hatch, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/corridor1) +"gM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) "gN" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -3054,11 +3202,12 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "gR" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "gS" = ( @@ -3135,11 +3284,6 @@ icon_state = "techfloor_edges"; dir = 8 }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) "hc" = ( @@ -3265,101 +3409,156 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) "hp" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 9 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) "hq" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) +/obj/machinery/door/airlock/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) "hr" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 5 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 5 - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ icon_state = "map-supply"; - dir = 1 + dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 + icon_state = "map-scrubbers"; + dir = 4 }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) "hs" = ( -/obj/machinery/door/airlock/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/corridor1) "ht" = ( -/obj/structure/closet/walllocker/emerglocker/north, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/corridor1) "hu" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/corridor1) "hv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/corridor1) "hw" = ( -/obj/machinery/sleep_console{ - icon_state = "sleeperconsole"; +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/corridor1) "hx" = ( -/obj/machinery/sleeper{ - icon_state = "sleeper_0"; +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 4 }, -/obj/machinery/light{ - dir = 4 +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/corridor1) "hy" = ( /obj/structure/table/steel_reinforced, /turf/simulated/floor/tiled/techfloor, @@ -3403,8 +3602,19 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; dir = 4 }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "hE" = ( @@ -3435,35 +3645,10 @@ /turf/simulated/wall/rpshull, /area/ship/expe/corridor3) "hK" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass/hidden{ - icon_state = "door_open"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/wall/rpshull, /area/ship/expe/corridor4) "hL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 10 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/machinery/door/firedoor/glass/hidden, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor, /area/ship/expe/corridor4) "hM" = ( /obj/machinery/power/apc{ @@ -4110,74 +4295,94 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) "iw" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"ix" = ( -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"iy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"iz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"iA" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/bed/chair, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"iB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/bed/chair, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"iC" = ( -/obj/structure/bed/chair, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"iD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) +"ix" = ( +/obj/effect/floor_decal/techfloor{ + icon_state = "techfloor_edges"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/corridor1) +"iy" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/ship/expe/maintenancerim) +"iz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"iA" = ( +/obj/machinery/atmospherics/pipe/cap/visible/scrubbers{ + icon_state = "cap-scrubbers"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/cap/visible/supply{ + icon_state = "cap-supply"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/maintenancerim) +"iB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 + }, +/turf/simulated/wall/rpshull, +/area/ship/expe/engines) +"iC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 10 + }, +/turf/simulated/floor, +/area/ship/expe/engines) +"iD" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel, +/turf/simulated/floor, +/area/ship/expe/engines) "iE" = ( /obj/structure/closet/secure_closet/guncabinet{ name = "taser cabinet" @@ -4625,53 +4830,58 @@ /turf/simulated/floor/tiled/white, /area/ship/expe/medicaleq) "ji" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, /obj/effect/floor_decal/techfloor{ icon_state = "techfloor_edges"; dir = 8 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) "jj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner_techfloor_grid{ + icon_state = "corner_techfloor_grid"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; - dir = 10 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; dir = 4 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) "jk" = ( -/obj/machinery/shield_gen/advanced, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 10 +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 4 }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringstorage) +/turf/simulated/floor, +/area/ship/expe/engines) "jl" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 +/obj/effect/shuttle_landmark{ + landmark_tag = "hpv_hangar"; + name = "Vespa's Hangar" }, -/obj/machinery/shield_capacitor/advanced, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringstorage) +/turf/simulated/floor/reinforced, +/area/ship/expe/hangar) "jm" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -5014,17 +5224,18 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) "jT" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, +/obj/effect/floor_decal/borderfloorblack/corner, +/obj/effect/floor_decal/industrial/danger/corner, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/hangar) "jU" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/hangar) "jV" = ( /obj/machinery/suit_cycler/exploration, /turf/simulated/floor/tiled/techfloor, @@ -5351,14 +5562,34 @@ /turf/simulated/floor/tiled/white, /area/ship/expe/medicaleq) "kE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) +/area/ship/expe/engineeringequipment) "kF" = ( /turf/simulated/wall/rpshull, /area/ship/expe/engineeringequipment) @@ -5460,7 +5691,6 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) "kM" = ( -/obj/machinery/power/port_gen/pacman/mrs, /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 1 @@ -5682,27 +5912,18 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) "li" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"lj" = ( -/obj/structure/bed/chair{ +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/light{ - dir = 4 - }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/hangar) +"lj" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) "lk" = ( /obj/structure/sign/department/eva, /turf/simulated/wall/rpshull, @@ -5727,12 +5948,16 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "ln" = ( -/obj/machinery/door/airlock/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + icon_state = "dangercorner"; + dir = 1 + }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) +/area/ship/expe/hangar) "lo" = ( /obj/structure/table/rack/shelf, /obj/item/weapon/storage/box/holobadge, @@ -5954,6 +6179,7 @@ dir = 1 }, /obj/structure/closet/walllocker/emerglocker/north, +/obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) "lK" = ( @@ -5968,7 +6194,7 @@ icon_state = "bordercolor"; dir = 1 }, -/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/closet/secure_closet/engineering_welding, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) "lL" = ( @@ -5984,6 +6210,7 @@ icon_state = "bordercolor"; dir = 1 }, +/obj/structure/closet/secure_closet/engineering_electrical, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) "lM" = ( @@ -6160,24 +6387,32 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) "me" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 4 }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; +/obj/effect/floor_decal/industrial/danger{ + icon_state = "danger"; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) "mf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"mg" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; dir = 8 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -6186,15 +6421,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) -"mg" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) "mh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; @@ -6292,20 +6518,19 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "mn" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 5 +/obj/effect/floor_decal/industrial/danger{ + icon_state = "danger"; + dir = 8 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) +/area/ship/expe/hangar) "mo" = ( /obj/structure/table/rack/shelf, /obj/effect/floor_decal/borderfloorblack{ @@ -6627,21 +6852,16 @@ /turf/simulated/wall/rpshull, /area/ship/expe/medicaleq) "mL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/firealarm{ + pixel_x = 0; + pixel_y = -27 }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/corridor4) +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) "mM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/closet/secure_closet/engineering_electrical, /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 8 @@ -6650,6 +6870,10 @@ icon_state = "bordercolor"; dir = 8 }, +/obj/machinery/firealarm{ + pixel_x = -28; + pixel_y = 0 + }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) "mN" = ( @@ -6682,28 +6906,14 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) "mQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/engineering{ + req_one_access = newlist() }, /obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" + icon_state = "4-8" }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor, /area/ship/expe/engineeringequipment) "mR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -6990,27 +7200,19 @@ /turf/simulated/wall/rpshull, /area/ship/expe/bridge) "no" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 4 }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; +/obj/effect/floor_decal/industrial/danger{ + icon_state = "danger"; dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) "np" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -7019,75 +7221,59 @@ icon_state = "intact-scrubbers"; dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/glass, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/hangar) "nq" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"nr" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"ns" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 10 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; dir = 10 }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"nr" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"ns" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 0 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/hangar) "nt" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"nu" = ( -/obj/machinery/portable_atmospherics/canister/empty, -/obj/machinery/atmospherics/portables_connector, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"nv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"nu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) +"nv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) "nw" = ( /obj/structure/cable{ icon_state = "4-8" @@ -7155,27 +7341,12 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "nD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 24 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) +/area/ship/expe/hangar) "nE" = ( /obj/structure/table/rack/shelf, /obj/effect/floor_decal/borderfloorblack{ @@ -7456,38 +7627,13 @@ /turf/simulated/floor/tiled/white, /area/ship/expe/medicaleq) "oc" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ship/expe/corridor4) "od" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, +/obj/machinery/telecomms/allinone, +/turf/simulated/floor/bluegrid, /area/ship/expe/corridor4) "oe" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/obj/structure/closet/secure_closet/engineering_welding, /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 8 @@ -7496,6 +7642,10 @@ icon_state = "bordercolor"; dir = 8 }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) "of" = ( @@ -7503,10 +7653,16 @@ icon_state = "intact-supply"; dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) "og" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) "oh" = ( @@ -7514,7 +7670,12 @@ icon_state = "intact-supply"; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) "oi" = ( @@ -7531,6 +7692,9 @@ dir = 4 }, /obj/machinery/suit_cycler/engineering, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) "oj" = ( @@ -7857,98 +8021,75 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) "oH" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"oI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"oJ" = ( -/obj/machinery/power/terminal, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"oI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; - dir = 5 + dir = 6 }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"oJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; - dir = 5 + dir = 6 }, -/obj/structure/cable, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/hangar) "oK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + icon_state = "intact-supply"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"oL" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"oL" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, +/area/ship/expe/hangar) +"oM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"oN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 }, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"oM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal{ - icon_state = "map_universal"; +/area/ship/expe/hangar) +"oO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 8 }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"oN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 9 - }, -/obj/structure/closet/crate/freezer/rations, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"oO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/effect/floor_decal/industrial/danger{ + icon_state = "danger"; + dir = 8 }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) @@ -7971,22 +8112,16 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "oR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; dir = 4 }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; +/obj/effect/floor_decal/industrial/danger{ + icon_state = "danger"; dir = 4 }, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) +/area/ship/expe/hangar) "oS" = ( /turf/simulated/wall/rpshull, /area/ship/expe/seccells) @@ -8220,16 +8355,8 @@ /turf/simulated/floor/tiled/white, /area/ship/expe/medicaleq) "pl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, +/obj/machinery/power/shield_generator/upgraded, +/turf/simulated/floor/bluegrid, /area/ship/expe/corridor4) "pm" = ( /obj/structure/table/steel_reinforced, @@ -8377,100 +8504,99 @@ /turf/simulated/floor, /area/ship/expe/sm) "pB" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; dir = 8 }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; +/obj/effect/floor_decal/industrial/danger{ + icon_state = "danger"; dir = 8 }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) "pC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; dir = 4 }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) +/obj/effect/floor_decal/industrial/danger/corner{ + icon_state = "dangercorner"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) "pD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + icon_state = "danger"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"pE" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + icon_state = "danger"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"pF" = ( +/obj/effect/floor_decal/borderfloorblack{ + icon_state = "borderfloor_black"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + icon_state = "danger"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"pG" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + icon_state = "dangercorner"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"pH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/hangar) +"pI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"pE" = ( -/obj/machinery/power/smes/buildable, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, /turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"pF" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"pG" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"pH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal{ - icon_state = "map_universal"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"pI" = ( -/obj/machinery/atmospherics/pipe/tank/air{ - icon_state = "air_map"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/area/ship/expe/hangar) "pJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 24 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + icon_state = "map-supply"; dir = 4 }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -8622,22 +8748,22 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "pT" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; +/obj/machinery/power/terminal{ + icon_state = "term"; dir = 4 }, +/obj/structure/cable, /turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) +/area/ship/expe/hangar) "pU" = ( /obj/machinery/alarm{ frequency = 1441; @@ -9177,61 +9303,33 @@ /turf/simulated/wall/rpshull, /area/ship/expe/captqua) "qP" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 10 }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) +/turf/simulated/floor, +/area/ship/expe/maintenance1) "qQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + icon_state = "map-aux"; dir = 4 }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) +/turf/simulated/floor, +/area/ship/expe/maintenance1) "qR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor, +/area/ship/expe/maintenance1) +"qS" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + icon_state = "4-8" }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; dir = 9 }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"qS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/embedded_controller/radio/simple_docking_controller{ - frequency = 1500; - id_tag = "vespaboat_docker"; - pixel_x = 22; - pixel_y = -2; - tag = "vespaboat_docker" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) +/turf/simulated/floor, +/area/ship/expe/maintenance1) "qT" = ( /obj/machinery/light{ icon_state = "tube1"; @@ -9299,22 +9397,9 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) "ra" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) +/obj/structure/catwalk, +/turf/simulated/floor, +/area/space) "rb" = ( /obj/structure/cable{ d1 = 2; @@ -9591,11 +9676,6 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) "rF" = ( -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) -"rG" = ( /obj/structure/cable{ icon_state = "0-4"; d2 = 4 @@ -9603,6 +9683,17 @@ /obj/machinery/light, /obj/effect/floor_decal/borderfloorblack, /obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/power/rtg/advanced, +/turf/simulated/floor/tiled/techfloor, +/area/ship/expe/engineeringpower) +"rG" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/power/rtg/advanced, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) "rH" = ( @@ -9614,14 +9705,20 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) "rI" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -32 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, /obj/structure/cable{ icon_state = "0-4"; d2 = 4 }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engineeringpower) +/turf/simulated/floor, +/area/ship/expe/corridor4) "rJ" = ( /obj/structure/cable{ icon_state = "1-8" @@ -9825,92 +9922,18 @@ /area/ship/expe/captqua) "sb" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + icon_state = "1-8" }, -/obj/effect/floor_decal/borderfloorblack/corner{ - icon_state = "borderfloorcorner_black"; - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner{ - icon_state = "bordercolorcorner"; - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) +/turf/simulated/floor, +/area/ship/expe/corridor4) "sc" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 1 +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/obj/structure/closet/walllocker/emerglocker/north, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"sd" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 5 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/obj/machinery/airlock_sensor/airlock_interior{ - frequency = 1500; - id_tag = "vespashuttleintsens"; - master_tag = "vespaboat"; - name = "interior sensor"; - pixel_y = 25 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"se" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/black{ - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"sf" = ( -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - frequency = 1500; - id_tag = "vespaboat"; - pixel_x = 0; - pixel_y = 18; - tag_airpump = "vespavent"; - tag_chamber_sensor = "vespasensor"; - tag_exterior_door = "vespaext"; - tag_exterior_sensor = "vespashuttleextsens"; - tag_interior_door = "vespaint"; - tag_interior_sensor = "vespashuttleintsens" - }, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 8; - frequency = 1500; - icon_state = "map_vent_out"; - id_tag = "vespavent"; - use_power = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"sg" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/airlock_sensor{ - frequency = 1500; - master_tag = "vespasensor"; - pixel_y = 19 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) +/turf/simulated/floor, +/area/ship/expe/corridor4) "sh" = ( /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; @@ -10053,26 +10076,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"sr" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) "ss" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -10443,50 +10446,6 @@ "sP" = ( /turf/simulated/wall/rpshull, /area/ship/expe/medical1) -"sQ" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 6 - }, -/obj/machinery/door/firedoor/glass/hidden{ - icon_state = "door_open"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"sR" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - icon_state = "map-supply"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 - }, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/machinery/door/firedoor/glass/hidden, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) "sS" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -10579,151 +10538,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/captqua) -"tc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"td" = ( -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 10 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"te" = ( -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/mauve/border, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"tf" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/mauve/border, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"tg" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/corner/mauve/border, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"th" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorblack{ - icon_state = "borderfloor_black"; - dir = 6 - }, -/obj/effect/floor_decal/corner/mauve/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled/steel, -/area/shuttle/vespaboat) -"ti" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/glass_external{ - frequency = 1500; - id_tag = "vespaint" - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"tj" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/black{ - icon_state = "map"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"tk" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 8; - frequency = 1500; - icon_state = "map_vent_out"; - id_tag = "vespavent"; - use_power = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"tl" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/shuttle_landmark/shuttle_initializer/vespaboat, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"tm" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/glass_external{ - frequency = 1500; - id_tag = "vespaext"; - locked = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"tn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) "to" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; @@ -10804,28 +10618,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"tw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) "tx" = ( /turf/simulated/floor/tiled/techfloor, /area/ship/expe/seccells) @@ -10871,10 +10663,6 @@ "tC" = ( /turf/simulated/floor/tiled/techfloor, /area/ship/expe/seclobby) -"tD" = ( -/obj/machinery/recharge_station, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) "tE" = ( /obj/structure/cable{ d1 = 2; @@ -11009,43 +10797,6 @@ }, /turf/simulated/floor/tiled/white, /area/ship/expe/medical1) -"tQ" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) -"tR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - icon_state = "corner_techfloor_grid"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor4) "tS" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ icon_state = "map-supply"; @@ -11409,61 +11160,6 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/captqua) -"uo" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"up" = ( -/obj/machinery/power/port_gen/pacman, -/obj/structure/cable, -/turf/simulated/floor, -/area/shuttle/vespaboat) -"uq" = ( -/turf/simulated/floor, -/area/shuttle/vespaboat) -"ur" = ( -/obj/machinery/door/window{ - icon_state = "left"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/black{ - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"us" = ( -/obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/black{ - dir = 4 - }, -/obj/machinery/meter, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"ut" = ( -/obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; - dir = 1 - }, -/obj/machinery/atmospherics/portables_connector{ - icon_state = "map_connector"; - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/air, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) -"uu" = ( -/obj/machinery/airlock_sensor/airlock_exterior/shuttle{ - frequency = 1500; - id_tag = "vespashuttleextsens"; - master_tag = "vespaboat" - }, -/turf/simulated/wall/rpshull, -/area/shuttle/vespaboat) "uv" = ( /obj/structure/sign/poster/nanotrasen, /turf/simulated/wall/rpshull, @@ -11507,24 +11203,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"uD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) "uE" = ( /obj/structure/closet/secure_closet, /turf/simulated/floor/tiled/techfloor, @@ -11991,20 +11669,6 @@ /obj/structure/closet/emcloset, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/expedition) -"vB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) "vC" = ( /turf/simulated/wall/rpshull, /area/ship/expe/corridor2) @@ -12125,31 +11789,6 @@ /obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor, /area/ship/expe/captqua) -"vU" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/simulated/floor/plating/external, -/area/shuttle/vespaboat) -"vV" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"vW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 9 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) "vX" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -12185,22 +11824,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"wa" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) "wb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; @@ -12470,67 +12093,6 @@ "ws" = ( /turf/simulated/floor, /area/ship/expe/maintenance2) -"wt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 6 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"wu" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"wv" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"ww" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"wx" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 10 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) "wy" = ( /obj/structure/cable{ icon_state = "4-8" @@ -12543,18 +12105,6 @@ }, /turf/simulated/floor, /area/ship/expe/maintenance2) -"wA" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) -"wB" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/hangar) "wC" = ( /obj/effect/floor_decal/borderfloorblack{ icon_state = "borderfloor_black"; @@ -12634,20 +12184,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor1) -"wL" = ( -/obj/effect/floor_decal/techfloor{ - icon_state = "techfloor_edges"; - dir = 6 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/corridor1) "wM" = ( /obj/structure/cable{ icon_state = "4-8" @@ -12827,10 +12363,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/southairlock) -"xd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue, -/turf/simulated/wall/rpshull, -/area/ship/expe/maintenance2) "xe" = ( /obj/structure/cable{ d1 = 1; @@ -12840,10 +12372,6 @@ /obj/structure/closet/firecloset/full, /turf/simulated/floor, /area/ship/expe/maintenance2) -"xf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue, -/turf/simulated/floor, -/area/ship/expe/maintenance2) "xg" = ( /obj/machinery/light{ dir = 4 @@ -12863,26 +12391,10 @@ /obj/structure/closet/emcloset, /turf/simulated/floor, /area/ship/expe/maintenance2) -"xk" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor, -/area/ship/expe/hangar) "xl" = ( /obj/machinery/door/airlock/glass, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/maintenancerim) -"xm" = ( -/obj/machinery/door/airlock/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenancerim) "xn" = ( /obj/structure/sign/poster/nanotrasen, /turf/simulated/wall/rpshull, @@ -12918,124 +12430,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/southairlock) -"xt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 6 - }, -/obj/machinery/air_sensor{ - frequency = 1459; - id_tag = "southsensor" - }, -/obj/machinery/airlock_sensor{ - frequency = 1459; - id_tag = "southsensor"; - pixel_x = 0; - pixel_y = 21 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"xu" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/blue{ - icon_state = "map"; - dir = 4 - }, -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - frequency = 1459; - id_tag = "southairlock"; - pixel_x = 0; - pixel_y = 21; - tag_airpump = "southvent"; - tag_chamber_sensor = "southsensor"; - tag_exterior_door = "southext"; - tag_interior_door = "southint" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"xv" = ( -/obj/machinery/atmospherics/portables_connector{ - icon_state = "map_connector"; - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister/air/airlock, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"xw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"xx" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/blue{ - icon_state = "intact"; - dir = 9 - }, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"xy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 5 - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"xz" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/green{ - icon_state = "map"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"xA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"xB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"xC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/closet/firecloset/full, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"xD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/closet/emcloset, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) "xE" = ( /obj/machinery/light/small{ icon_state = "bulb1"; @@ -13044,11 +12438,6 @@ /obj/structure/closet/firecloset/full, /turf/simulated/floor, /area/ship/expe/maintenancerim) -"xF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenancerim) "xG" = ( /obj/machinery/light/small{ icon_state = "bulb1"; @@ -13073,51 +12462,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/southairlock) -"xJ" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 1; - external_pressure_bound = 140; - external_pressure_bound_default = 140; - frequency = 1459; - icon_state = "map_vent_out"; - id_tag = "southvent"; - pressure_checks = 0; - pressure_checks_default = 0; - use_power = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/southairlock) -"xK" = ( -/obj/item/weapon/handcuffs/fuzzy, -/turf/simulated/floor, -/area/ship/expe/maintenance2) -"xL" = ( -/obj/machinery/light/small, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"xM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor, -/area/ship/expe/maintenancerim) -"xN" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenancerim) -"xO" = ( -/obj/machinery/atmospherics/pipe/cap/visible/scrubbers{ - icon_state = "cap-scrubbers"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/cap/visible/supply{ - icon_state = "cap-supply"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/maintenancerim) "xP" = ( /obj/structure/fans/tiny, /obj/structure/fans/tiny, @@ -13135,25 +12479,6 @@ /obj/structure/fans/tiny, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/southairlock) -"xR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 9 - }, -/obj/machinery/meter, -/turf/simulated/floor, -/area/ship/expe/engines) -"xS" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor, -/area/ship/expe/engines) "xT" = ( /obj/structure/sign/poster, /turf/simulated/wall/rpshull, @@ -13169,13 +12494,6 @@ }, /turf/space, /area/space) -"xW" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/turf/simulated/floor, -/area/ship/expe/engines) "xX" = ( /obj/machinery/atmospherics/pipe/tank/phoron, /turf/simulated/floor, @@ -13204,22 +12522,9 @@ }, /turf/simulated/floor, /area/ship/expe/engines) -"ya" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor, -/area/ship/expe/engines) "yb" = ( /turf/simulated/floor, /area/ship/expe/engines) -"yc" = ( -/obj/machinery/atmospherics/binary/pump, -/turf/simulated/floor, -/area/ship/expe/engines) "yd" = ( /obj/structure/cable{ d1 = 1; @@ -13234,98 +12539,6 @@ }, /turf/simulated/floor, /area/ship/expe/engines) -"yf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"yg" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/machinery/meter, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"yh" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/machinery/meter, -/turf/simulated/floor, -/area/ship/expe/engines) -"yi" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"yj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 5 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"yk" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/green, -/turf/simulated/floor, -/area/ship/expe/engines) -"yl" = ( -/obj/machinery/atmospherics/valve{ - icon_state = "map_valve0"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"ym" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/green{ - icon_state = "map"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"yn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - icon_state = "intact"; - dir = 9 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"yo" = ( -/obj/machinery/atmospherics/pipe/cap/visible{ - icon_state = "cap"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"yp" = ( -/obj/machinery/atmospherics/portables_connector{ - icon_state = "map_connector"; - dir = 1 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"yq" = ( -/obj/machinery/atmospherics/portables_connector{ - icon_state = "map_connector"; - dir = 4 - }, -/turf/simulated/floor, -/area/ship/expe/engines) -"yr" = ( -/obj/item/inflatable/torn, -/turf/simulated/floor, -/area/ship/expe/engines) -"ys" = ( -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engines) -"yt" = ( -/obj/item/inflatable/torn, -/turf/simulated/floor/tiled/techfloor, -/area/ship/expe/engines) "yu" = ( /obj/effect/overmap/visitable/ship/vespa{ fore_dir = 4 @@ -13483,11 +12696,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor2) -"yO" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/machinery/recharge_station, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/vespaboat) "yP" = ( /obj/structure/cable{ d1 = 1; @@ -14313,31 +13521,31 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz aa aa aa @@ -14455,31 +13663,31 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz +bz aa aa aa @@ -14597,31 +13805,31 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +bz +bz +mf +nt +nu +nD +dp +dp +dp +dp +dp +dp +dp +dp +dp +dp +dp +dp +dp +oI +oJ +nt +oK +bz +bz aa aa aa @@ -14737,35 +13945,35 @@ aa aa aa aa -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS +aa +aa +bz +bz +np +jT +me +no +oR +oR +oR +oR +oR +oR +oR +oR +oR +oR +oR +oR +oR +no +me +pC +np +bz +bz +aa +aa aa aa aa @@ -14879,35 +14087,35 @@ aa aa aa aa -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS -aS +aa +aa +bz +bz +nq +jU +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pD +oL +bz +bz +aa +aa aa aa aa @@ -15021,35 +14229,35 @@ aa aa aa aa -aS -aS -bg -bh -bi -bi -bi -eW -bi -bi -bi -bi -bi -bi -bi -bi -bi -bi -bi -eW -bi -bi -bi -bi -bi -bh -bg -aS -aS +aa +aa +bz +bz +nr +li +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pE +oM +bz +bz +aa +aa aa aa aa @@ -15163,35 +14371,35 @@ aa aa aa aa -aS -aS -bu -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -bU -xy -aS -aS +aa +aa +bz +bz +np +lj +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pF +np +bz +bz +aa +aa aa aa aa @@ -15305,35 +14513,35 @@ aa aa aa aa -aS -aS -bv -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bw -aS -aS +aa +aa +bz +bz +np +lj +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pF +np +bz +bz +aa +aa aa aa aa @@ -15447,35 +14655,35 @@ aa aa aa aa -aS -aS -bv -bV -cs -cs -cs -cs -fO -cs -cs -cs -cs -cs -cs -cs -cs -cs -cs -cs -cs -fO -cs -cs -cs -bV -bv -aS -aS +aa +aa +bz +bz +np +lj +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pF +np +bz +bz +aa +aa aa aa aa @@ -15589,35 +14797,35 @@ aa aa aa aa -aS -aS -bv -bV -cs -dm -cv -cv -cv -cv -cv -cv -cv -cv -cv -cv -cv -cv -cv -cv -tc -uo -cs -cs -cs -bV -bv -aS -aS +aa +aa +bz +bz +np +lj +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pF +np +bz +bz +aa +aa aa aa aa @@ -15731,35 +14939,35 @@ aa aa aa aa -aS -aS -bv -bV -cs -dn -eg -eg -eg -eg -eg -eg -eg -eh -eh -eh -eg -eg -eg -eg -eg -eg -eg -cs -cs -bV -bv -aS -aS +aa +aa +bz +bz +np +lj +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pF +np +bz +bz +aa +aa aa aa aa @@ -15873,35 +15081,35 @@ aa aa aa aa -aS -aS -bv -bV -cs -do -eh -eX -fP -eg -hp -iw -iw -iw -iw -iw -oH -pB -qP -iw -td -up -eg -eg -cs -bV -bv -aS -aS +aa +aa +bz +bz +np +lj +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pF +np +bz +bz +aa +aa aa aa aa @@ -16012,41 +15220,41 @@ aa aa aa aa -aa -aa -aa -aS -aS -bw -bV -cs do -eh -eY -fQ -gK -hq -ix -ix -ix -ix -ix -ix -pC -qQ -ix -te -uq -eg -vU -cs -bV -bv -aS -aS -aa -aa -aa +do +do +do +do +bz +bz +np +lj +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pF +np +bz +bz +do +do +do +do +do aa aa aa @@ -16152,45 +15360,45 @@ aa aa aa aa -aa -aa -aa -aa -aa -aS -aS -bv -bV -cs -do -eh -eX -fR -eg -hr -iy -iy -li -me -no -oI -pD -qR -sb -tf -up -eg -vU -cs -bV -bv -aS -aS -aa -aa -aa -aa -aa +ax +ax +iB +iB +iB +iB +iB +ax +bz +np +lj +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pF +np +bz +eb +fV +fV +fV +fV +fV +eb +eb aa aa aa @@ -16294,45 +15502,45 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aS -bv -bV -cs -do -eh -eZ -fS -eg -hs -eg -eg -eg -eg +ax +ax +iC +eY +eY +eY +iD +ax +bz np -eg -gL -eg -sc -tg -uq -eg -eg -cs -bV -bv -aS -aa -aa -aa -aa -aa -aa +lj +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pF +np +bz +eb +aT +fS +fS +fS +fW +eb +eb aa aa aa @@ -16438,43 +15646,43 @@ aa aa ax ax -aG -aG -aG -aG -aS -bv -bV -ct -do -eg -eg -eg -eg -ht -iz -hu -fP -eg -nq -oJ -pE -eg -sd -th -uq -eg -eg -wA -bV -bv -aS -aG -aG -aG -aG -ax +yb +yb +yb +yb +eX ax +bz +np +lj +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pF +np +bz +eb +fb +ec +ec +ec +ec +eb +eb aa aa aa @@ -16580,43 +15788,43 @@ aa aa ax ax -aH -aM -aM -aZ -aS -bv -bV -cs -do -eg -fa -fT -gL -hu -iA -jT -fP -eg -nr -oK +yb +yb +yb +yb +eX +ax +bz +np +lj +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +jl +ea +ea +ea +ea pF -eg -eh -ti -eg -eg -eg -cs -bV -bv -aS -aH -aM -aM -aZ -ax -ax +np +bz +eb +fb +ec +ec +ec +ec +eb +eb aa aa aa @@ -16718,49 +15926,49 @@ aa aa aa aa -af -af ax ax -aI -aN -aT -aN -bf -bx -bV -cs -do -eg +ax +ax +ax +ax +ax +ax +eX +ax +bz +np +lj +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pF +np +bz +eb fb -fU -gM -hv -iB -jU -fP -eg -ns -oL -pG -eg -se -tj -ur -eg -vU -cs -bV -xz -bf -xR -xW -yb -yb -ax -ax -ax -ax +eb +eb +eb +eb +eb +eb +eb +eb aa aa aa @@ -16868,33 +16076,33 @@ af af af af -aS -bi -bV -cs -do -eg -tD -fV -eg -hw -iC -hu -fP -eg -nt +jk +ax +bz +nr +li +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pE oM -pH -eg -sf -tk -us -eg -vU -cs -bV -bv -aS +bz +eb +fO ax ax ax @@ -17010,40 +16218,40 @@ aJ aO aU af +aG +aH +bz +nq +jU +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +ea +pD +oL +bz bg -bi -bV -cs -do -eg -yO -fW -eg -hx -iC -hu -lj -eg -nu -oN -pI -eg -sg -tl -ut -eg -eg -cs -bV -bv -bi +fP ax xX -yc -yg -yj -yb -yp +an +aZ +an +an +eh ax ax ax @@ -17153,41 +16361,41 @@ aP aq af bh -bi -bV -cu -do -eg -eh -eh -eg -eg -eh -eh -eg -eg -eg -eh -eg -eg -eh -tm -uu -eg -vV -cs -bV -bv -bi +fP +bz +np +ln +mn +oO +pB +pB +pB +pB +pB +pB +pB +pB +pB +pB +pB +pB +pB +oO +mn +pG +np +bz +bh +fP ax xX -yc -yh -yk +an +aZ +an +eh +eW +yb yb -yp -yq -yq ax ax ax @@ -17283,8 +16491,8 @@ af af af af -an -ao +al +am aq aq aq @@ -17294,40 +16502,40 @@ aK aP aq af -bi -by -bW -cv -dp -cv -cv -fX -cv -cv -cv -fX -cv -mf +bg +fP +bz +ns +nt nv -oO +oH +nt +nt +nt +nt +nt +nt +mg +pH +pI +pI +pI +pI +pI pJ -qS -oO -tn -oO -oO -vW -wB -xk -xA -xL +pT +nt +oN +bz +bi +fQ ax xX -yc -yh -yk -yb -yb +an +aZ +eh +eW +eX yb yb yb @@ -17423,10 +16631,10 @@ af af af af -am -am -am -am +ak +ak +ak +ak aq aq aq @@ -17437,7 +16645,7 @@ aP aq af bi -bz +fP bX bX bX @@ -17449,7 +16657,7 @@ bX bX bX bX -mg +bf nw oP oP @@ -17461,21 +16669,21 @@ oP oP oP oP -xB bi +fP ax xY yd yb -yl +eW +eX +eX +yb yb yb yb yb yb -yr -ys -ys ax ax ax @@ -17565,10 +16773,10 @@ af af aj aj -al -al -al -al +aq +aq +aq +aq aq as aw @@ -17579,7 +16787,7 @@ aQ aV af bi -bz +fP bX cw dq @@ -17603,23 +16811,23 @@ sh qT wC oP -xC bi +fP ax xZ ye yb -ym -yo +fa +fa +fa +yb +yb +yb yb yb yb yb yb -yt -ys -ys -ys ax ax aa @@ -17705,12 +16913,12 @@ aa aa af af -ak -al -al -al -al -al +aq +aq +aq +aq +aq +aq aq at aq @@ -17721,7 +16929,7 @@ aR aW ba bj -bA +bu bX cw dq @@ -17745,23 +16953,23 @@ qU qU wD oP -xD -xM -xS -ya -yf -yi -yn +bi +fR +fT +fU +ao +an +eY +eY +eZ +yb +yb yb yb yb yb yb yb -yt -ys -ys -ys ax ax aa @@ -17863,7 +17071,7 @@ af af af aS -bK +bv bX cx dr @@ -17888,7 +17096,7 @@ vX wE oP aS -bk +fX ax ax ax @@ -18005,7 +17213,7 @@ af aS aS bg -bE +bw bX cy ds @@ -18030,7 +17238,7 @@ qU wF oP bC -bi +gK aS aS ax @@ -18143,11 +17351,11 @@ aa aa aa aa -aa +ra aS aS bh -bE +bw bY cw dt @@ -18172,10 +17380,10 @@ qU wG oP bC -bi +gK aS aS -aa +ra aa aa aa @@ -18285,11 +17493,11 @@ aa aa aa aa -aa +ra aS aS bl -bE +bw bX cz dr @@ -18314,10 +17522,10 @@ qU wH oP bC -xL +iy aS aS -aa +ra aa aa aa @@ -18427,11 +17635,11 @@ aa aa aa aa -aa +ra aS aS bi -bE +bw bX cw du @@ -18456,10 +17664,10 @@ qV wI oP xE -bi +gK aS aS -aa +ra aa aa aa @@ -18568,12 +17776,12 @@ aa aa aa aa -aa -aa +ra +ra aS aS bm -bF +bx bX cw du @@ -18598,11 +17806,11 @@ vY wJ oP bh -bi +gK aS aS -aa -aa +ra +ra aa aa aa @@ -18710,12 +17918,12 @@ aa aa aa aa -aa +ra aS aS aS aS -bG +by bZ bZ dv @@ -18740,11 +17948,11 @@ oP oP oP aS -bk +fX aS aS aS -aa +ra aa aa aa @@ -18852,12 +18060,12 @@ aa aa aa aa -aa +ra aS aS bb bn -bH +cb ca cA cA @@ -18882,11 +18090,11 @@ vZ wK xl bn -xN +iz bb aS aS -aa +ra aa aa aa @@ -18994,41 +18202,41 @@ aa aa aa aa -aa +ra aS aS bb bo -bI -cb cB dw -cB +eg fh +eg gc +gL +gM gR +hp +hp +hq +hr +hs +ht +hu +hv +hw +hx hD -iD -iD -ln -mn -nD -oR -pT -ra -sr -tw -uD -vB -wa -wL -xm -xF -xO +iw +ix +aI +aM +aN +iA bb aS aS -aa +ra aa aa aa @@ -19136,7 +18344,7 @@ aa aa aa aa -aa +ra aS aS aS @@ -19170,7 +18378,7 @@ bk aS aS aS -aa +ra aa aa aa @@ -19278,8 +18486,8 @@ aa aa aa aa -aa -aa +ra +ra aS aS bi @@ -19311,8 +18519,8 @@ bh bi aS aS -aa -aa +ra +ra aa aa aa @@ -19421,7 +18629,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -19453,7 +18661,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -19563,7 +18771,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -19595,7 +18803,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -19705,7 +18913,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -19737,7 +18945,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -19847,7 +19055,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -19879,7 +19087,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -19989,7 +19197,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -20021,7 +19229,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -20131,7 +19339,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -20163,7 +19371,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -20273,7 +19481,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -20305,7 +19513,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -20415,7 +19623,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -20447,7 +19655,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -20557,7 +19765,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -20589,7 +19797,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -20699,7 +19907,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -20731,7 +19939,7 @@ xG bi aS aS -aa +ra aa aa aa @@ -20841,7 +20049,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -20873,7 +20081,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -20983,7 +20191,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -21015,7 +20223,7 @@ bi bi xT aS -aa +ra aa aa aa @@ -21125,7 +20333,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -21157,7 +20365,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -21267,7 +20475,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -21299,7 +20507,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -21409,7 +20617,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -21441,7 +20649,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -21551,7 +20759,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -21583,7 +20791,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -21693,7 +20901,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -21725,7 +20933,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -21835,7 +21043,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -21867,7 +21075,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -21977,7 +21185,7 @@ aa aa aa aa -aa +ra aS aS aS @@ -22009,7 +21217,7 @@ bk aS aS aS -aa +ra aa aa aa @@ -22119,7 +21327,7 @@ aa aa aa aa -aa +ra aS aS bg @@ -22151,7 +21359,7 @@ bi bg aS aS -aa +ra aa aa aa @@ -22261,7 +21469,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -22293,7 +21501,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -22403,7 +21611,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -22435,7 +21643,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -22545,7 +21753,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -22577,7 +21785,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -22687,7 +21895,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -22719,7 +21927,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -22829,7 +22037,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -22861,7 +22069,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -22971,7 +22179,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -23003,7 +22211,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -23113,7 +22321,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -23145,7 +22353,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -23255,7 +22463,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -23287,7 +22495,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -23397,7 +22605,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -23429,7 +22637,7 @@ xG bi aS aS -aa +ra aa aa aa @@ -23539,7 +22747,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -23571,7 +22779,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -23681,7 +22889,7 @@ aa aa aa aa -aa +ra aS aS bi @@ -23713,7 +22921,7 @@ bi bi aS aS -aa +ra aa aa aa @@ -23823,7 +23031,7 @@ ah aa aa aa -aa +ra aS aS bi @@ -23855,7 +23063,7 @@ bi bi xT aS -aa +ra aa aa aa @@ -24404,16 +23612,16 @@ fr gp hb hK -ji -hb -hb -hb oc +hL +hL +pl +oc +rI +hL +oc +hK ji -hb -hb -sQ -tQ va vL wo @@ -24545,17 +23753,17 @@ bc fs gq hc -hL -jj -kE -kE -mL +hK od -pl -kE -kE -sR -tR +hL +hL +hL +sc +sb +hL +oc +hK +jj vb vM wp @@ -24692,7 +23900,7 @@ hd kF kF kF -kF +mQ kF kF kF @@ -24830,7 +24038,7 @@ fu gs hd hM -jk +bU kF lI mM @@ -24972,7 +24180,7 @@ fv gt hd hN -jl +bV kF lJ mN @@ -25105,10 +24313,10 @@ aa aa aa bp +bA +bH bQ -co -dg -ea +bR eQ fw gu @@ -25128,8 +24336,8 @@ gB vQ ws vP -xt -xJ +cv +ct xP aa aa @@ -25247,10 +24455,10 @@ aa aa aa bq -bQ -cp +bA +bI bc -eb +bS bs fx gv @@ -25268,10 +24476,10 @@ kF tV gB vP -wt -xd -xu -xJ +bW +cs +dg +ct xQ aa aa @@ -25392,7 +24600,7 @@ bc bc bc bc -eb +bS bs fy gw @@ -25401,7 +24609,7 @@ hQ jo kF lM -mQ +kE oi pp pp @@ -25410,7 +24618,7 @@ kF tW ve vP -wu +co vP vM vM @@ -25531,10 +24739,10 @@ aa aa aa br -bR -bR +bF +bF dh -eb +bS bs fz gx @@ -25552,10 +24760,10 @@ kF tX vf vP -wv +cp xe -xv -ws +di +di xh aa aa @@ -25673,10 +24881,10 @@ aa aa aa br -bS -cq -cr -eb +qP +qQ +qR +qS bs fA gw @@ -25694,10 +24902,10 @@ sS tY vg vP -ww -wz -xw -xK +cq +cu +dm +dn xh aa aa @@ -25816,9 +25024,9 @@ aa aa bs bs -bS -di -ec +cr +cr +ed eR fA gw @@ -25836,9 +25044,9 @@ sS tY vh vR -wx -xf -xx +wy +ws +ws vP vP aa @@ -26257,7 +25465,7 @@ mV om lO lO -rF +mL jr tY vh @@ -26399,7 +25607,7 @@ mW on ps qx -rG +rF jr tY vh @@ -26683,7 +25891,7 @@ lO op pu qx -rI +rG jr tY vh @@ -26967,7 +26175,7 @@ lO or pu qx -rI +rG jr tY vh diff --git a/maps/tether/submaps/rogue_mines/rogue_mine1.dmm b/maps/tether/submaps/rogue_mines/rogue_mine1.dmm index 9df2ffbf5c..e817167b29 100644 --- a/maps/tether/submaps/rogue_mines/rogue_mine1.dmm +++ b/maps/tether/submaps/rogue_mines/rogue_mine1.dmm @@ -10193,7 +10193,7 @@ a a a a -a +c a a a @@ -10755,7 +10755,7 @@ a a a a -c +a a a a diff --git a/maps/tether/submaps/rogue_mines/rogue_mine2.dmm b/maps/tether/submaps/rogue_mines/rogue_mine2.dmm index 31092f3633..f084d959fc 100644 --- a/maps/tether/submaps/rogue_mines/rogue_mine2.dmm +++ b/maps/tether/submaps/rogue_mines/rogue_mine2.dmm @@ -10193,7 +10193,7 @@ a a a a -a +c a a a @@ -10755,7 +10755,7 @@ a a a a -c +a a a a diff --git a/maps/tether/submaps/rogue_mines/rogue_mine3.dmm b/maps/tether/submaps/rogue_mines/rogue_mine3.dmm index 6bbb7bdd58..633b3ec470 100644 --- a/maps/tether/submaps/rogue_mines/rogue_mine3.dmm +++ b/maps/tether/submaps/rogue_mines/rogue_mine3.dmm @@ -10193,7 +10193,7 @@ a a a a -a +c a a a @@ -10755,7 +10755,7 @@ a a a a -c +a a a a diff --git a/maps/tether/submaps/rogue_mines/rogue_mine4.dmm b/maps/tether/submaps/rogue_mines/rogue_mine4.dmm index 1c9cf37ade..760dddde16 100644 --- a/maps/tether/submaps/rogue_mines/rogue_mine4.dmm +++ b/maps/tether/submaps/rogue_mines/rogue_mine4.dmm @@ -10193,7 +10193,7 @@ a a a a -a +c a a a @@ -10755,7 +10755,7 @@ a a a a -c +a a a a diff --git a/maps/tether/submaps/space/_debrisfield.dm b/maps/tether/submaps/space/_debrisfield.dm index 28b6ca0bc4..7b06a3bfcc 100644 --- a/maps/tether/submaps/space/_debrisfield.dm +++ b/maps/tether/submaps/space/_debrisfield.dm @@ -3,6 +3,8 @@ /obj/effect/overmap/visitable/sector/debrisfield name = "Debris Field" desc = "Space junk galore." + scanner_desc = @{"[i]Transponder[/i]: Various faint signals +[b]Notice[/b]: Warning! Significant field of space debris detected. May be salvagable."} icon_state = "dust1" known = FALSE color = "#ee3333" //Redish, so it stands out against the other debris-like icons diff --git a/maps/tether/submaps/space/_fueldepot.dm b/maps/tether/submaps/space/_fueldepot.dm index dfa11a5319..4ec3236dd0 100644 --- a/maps/tether/submaps/space/_fueldepot.dm +++ b/maps/tether/submaps/space/_fueldepot.dm @@ -1,6 +1,10 @@ /obj/effect/overmap/visitable/sector/fueldepot name = "Fuel Depot" desc = "Self-service refueling depot." + scanner_desc = @{"[i]Registration[/i]: Virgo-Erigonne System Authority +[i]Class[/i]: Installation (Space) +[i]Transponder[/i]: Transmitting (CIV), V-E.S.A. +[b]Notice[/b]: This facility classified for public use for the purpose of refueling and recharging starships"} icon = 'icons/obj/overmap_vr.dmi' icon_state = "fueldepot" color = "#33FF33" diff --git a/maps/tether/submaps/space/pois/derelict.dmm b/maps/tether/submaps/space/pois/derelict.dmm index 800bef624f..afc4719860 100644 --- a/maps/tether/submaps/space/pois/derelict.dmm +++ b/maps/tether/submaps/space/pois/derelict.dmm @@ -143,7 +143,6 @@ /turf/simulated/floor/bluegrid, /area/tether_away/debrisfield/derelict/interior) "ay" = ( -/obj/structure/prop/alien/power, /obj/structure/cable, /obj/structure/cable{ icon_state = "1-8" @@ -158,6 +157,7 @@ alpha = 0; invisibility = 101 }, +/obj/machinery/power/rtg/abductor/built, /turf/simulated/floor/bluegrid, /area/tether_away/debrisfield/derelict/interior) "az" = ( @@ -234,6 +234,30 @@ "aK" = ( /turf/space, /area/tether_away/debrisfield/derelict) +"aL" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/power/fractal_reactor{ + alpha = 0; + invisibility = 101 + }, +/obj/machinery/power/rtg/abductor/built, +/turf/simulated/floor/reinforced, +/area/tether_away/debrisfield/derelict/interior) +"aM" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/fractal_reactor{ + alpha = 0; + invisibility = 101 + }, +/obj/machinery/power/rtg/abductor/built, +/turf/simulated/floor/reinforced, +/area/tether_away/debrisfield/derelict/interior) "aN" = ( /obj/random/humanoidremains, /obj/structure/cable{ @@ -328,30 +352,6 @@ /obj/structure/prop/alien/computer/camera, /turf/simulated/floor/reinforced, /area/tether_away/debrisfield/derelict/interior) -"bf" = ( -/obj/structure/prop/alien/power, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 0 - }, -/obj/machinery/power/fractal_reactor{ - alpha = 0; - invisibility = 101 - }, -/turf/simulated/floor/reinforced, -/area/tether_away/debrisfield/derelict/interior) -"bg" = ( -/obj/structure/prop/alien/power, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/fractal_reactor{ - alpha = 0; - invisibility = 101 - }, -/turf/simulated/floor/reinforced, -/area/tether_away/debrisfield/derelict/interior) "bh" = ( /obj/structure/prop/alien/computer/camera/flipped, /obj/structure/cable{ @@ -1484,7 +1484,7 @@ aa ao ao ao -bf +aL bj bj bs @@ -4222,7 +4222,7 @@ aa ao ao ao -bg +aM bi bp bi diff --git a/maps/tether/submaps/space/pois/ship_med_crashed.dmm b/maps/tether/submaps/space/pois/ship_med_crashed.dmm index 203f3b63e5..b0ae668a84 100644 --- a/maps/tether/submaps/space/pois/ship_med_crashed.dmm +++ b/maps/tether/submaps/space/pois/ship_med_crashed.dmm @@ -47,6 +47,9 @@ /area/tether_away/debrisfield/explored) "l" = ( /obj/effect/decal/cleanable/dirt, +/mob/living/bot/medbot{ + name = "Dr. Crusty" + }, /turf/simulated/shuttle/plating/airless, /area/tether_away/debrisfield/explored) "m" = ( @@ -124,12 +127,6 @@ /obj/machinery/suit_cycler/medical, /turf/simulated/shuttle/floor/airless, /area/tether_away/debrisfield/explored) -"B" = ( -/mob/living/bot/medbot{ - name = "Dr. Crusty" - }, -/turf/simulated/shuttle/floor/airless, -/area/tether_away/debrisfield/explored) "C" = ( /obj/effect/decal/cleanable/dirt, /obj/random/firstaid, @@ -178,6 +175,10 @@ "M" = ( /turf/simulated/shuttle/wall/hard_corner, /area/tether_away/debrisfield/explored) +"Q" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/shuttle/wall, +/area/tether_away/debrisfield/explored) (1,1,1) = {" a @@ -496,7 +497,7 @@ c h l C -H +Q s n I @@ -581,7 +582,7 @@ a a a e -B +f f f c diff --git a/maps/tether/submaps/tether_misc.dmm b/maps/tether/submaps/tether_misc.dmm index 7176f98c98..e4aaa7a057 100644 --- a/maps/tether/submaps/tether_misc.dmm +++ b/maps/tether/submaps/tether_misc.dmm @@ -729,19 +729,28 @@ }, /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_courtroom) -"cd" = ( -/obj/effect/step_trigger/teleporter/random{ +"ce" = ( +/obj/effect/step_trigger/teleporter/planetary_fall/virgo3b, +/turf/space/transit/south, +/area/space) +"cf" = ( +/turf/space/transit/south, +/area/space) +"cg" = ( +/obj/effect/step_trigger/thrower{ affect_ghosts = 1; - name = "escapeshuttle_leave"; - teleport_x = 25; - teleport_x_offset = 245; - teleport_y = 25; - teleport_y_offset = 245; - teleport_z = 4; - teleport_z_offset = 4 + name = "thrower_leftnostop" }, -/turf/space, -/turf/space/transit/north, +/turf/space/transit/south, +/area/space) +"ch" = ( +/obj/effect/shuttle_landmark/transit{ + base_area = /area/space; + base_turf = /turf/space/transit/east; + landmark_tag = "belter_transit"; + name = "Belter Transit" + }, +/turf/space/transit/south, /area/space) "cj" = ( /obj/effect/floor_decal/industrial/warning{ @@ -2078,15 +2087,6 @@ icon_state = "sandwater" }, /area/beach) -"xc" = ( -/obj/effect/shuttle_landmark/transit{ - base_area = /area/space; - base_turf = /turf/space/transit/east; - landmark_tag = "belter_transit"; - name = "Belter Transit" - }, -/turf/space/transit/east, -/area/space) "xe" = ( /obj/machinery/account_database{ dir = 1; @@ -2191,6 +2191,20 @@ "Az" = ( /turf/unsimulated/beach/coastline, /area/beach) +"Bd" = ( +/obj/effect/step_trigger/teleporter/random{ + affect_ghosts = 1; + name = "escapeshuttle_leave"; + teleport_x = 25; + teleport_x_offset = 245; + teleport_y = 25; + teleport_y_offset = 245; + teleport_z = 4; + teleport_z_offset = 4 + }, +/turf/space, +/turf/space/transit/north, +/area/space) "Bw" = ( /turf/unsimulated/beach/water, /area/beach) @@ -2947,12 +2961,12 @@ /turf/simulated/shuttle/floor/alienplating, /area/unknown/dorm4) "SD" = ( -/obj/item/weapon/bedsheet/rddouble, /obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/hopdouble, /turf/simulated/shuttle/floor/alien, /area/unknown/dorm4) "SE" = ( -/obj/structure/prop/alien/computer{ +/obj/structure/prop/alien/computer/hybrid{ dir = 8 }, /turf/simulated/shuttle/floor/alien, @@ -2988,7 +3002,7 @@ /turf/simulated/shuttle/floor/alien, /area/unknown/dorm4) "SP" = ( -/obj/structure/table/alien, +/obj/structure/table/alien/blue, /turf/simulated/shuttle/floor/alien, /area/unknown/dorm4) "SQ" = ( @@ -3148,12 +3162,12 @@ /turf/unsimulated/beach/sand, /area/beach) "Tt" = ( -/obj/item/weapon/bedsheet/rddouble, /obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/hopdouble, /turf/simulated/shuttle/floor/alien, /area/unknown/dorm3) "Tu" = ( -/obj/structure/prop/alien/computer{ +/obj/structure/prop/alien/computer/hybrid{ dir = 8 }, /turf/simulated/shuttle/floor/alien, @@ -3177,7 +3191,7 @@ /turf/simulated/shuttle/floor/alien, /area/unknown/dorm3) "TB" = ( -/obj/structure/table/alien, +/obj/structure/table/alien/blue, /turf/simulated/shuttle/floor/alien, /area/unknown/dorm3) "TC" = ( @@ -5000,47 +5014,47 @@ Gq Gq Gq Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap ap @@ -5142,47 +5156,47 @@ Ax JW JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap Xl @@ -5284,47 +5298,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap Xl @@ -5426,47 +5440,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap Xl @@ -5568,47 +5582,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap Xl @@ -5710,47 +5724,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +Uw +Ux +Uw +Ux +Ux +Ux +Ux +Ux +Ux +Uw +Ux +Ux +Uw +ae +ae +ae +ae +ae +SX +SY +SX +SY +SY +SY +SY +SY +SY +SX +SY +SY +SX +ae +ae +ae +ae +ae ap ap Xl @@ -5852,47 +5866,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +Ux +Uz +Uw +UK +UM +UG +UQ +US +US +Uw +UH +UW +Ux +ae +ae +ae +ae +ae +SY +SZ +SX +Tp +Tq +Tk +Tu +Ty +Ty +SX +Tl +TC +SY +ae +ae +ae +ae +ae ap ap Xl @@ -5994,47 +6008,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +Ux +UA +UF +UH +UA +UN +UA +UA +UH +UF +UH +UX +Ux +ae +ae +ae +ae +ae +SY +Ta +Td +Tl +Ta +Tr +Ta +Ta +Tl +Td +Tl +TD +SY +ae +ae +ae +ae +ae ap ap Xl @@ -6136,47 +6150,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +Ux +UC +Uw +UI +UA +UA +UA +UA +UU +Uw +UH +UY +Ux +ae +ae +ae +ae +ae +SY +Tb +SX +Tm +Ta +Ta +Ta +Ta +TA +SX +Tl +TE +SY +ae +ae +ae +ae +ae ap ap Xl @@ -6278,47 +6292,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +Ux +UD +Ux +UJ +UH +UP +UR +UT +UV +Ux +UH +UZ +Ux +ae +ae +ae +ae +ae +SY +Tc +SY +To +Tl +Tt +Tx +Tz +TB +SY +Tl +TH +SY +ae +ae +ae +ae +ae ap ap Xl @@ -6420,47 +6434,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +Uw +Ux +Uw +Ux +Ux +Ux +Ux +Ux +Ux +Uw +Ux +Ux +Uw +ae +ae +ae +ae +ae +SX +SY +SX +SY +SY +SY +SY +SY +SY +SX +SY +SY +SX +ae +ae +ae +ae +ae ap ap Xl @@ -6562,47 +6576,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap Xl @@ -6704,47 +6718,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap ap @@ -6846,47 +6860,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap ap @@ -6988,47 +7002,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap Xl @@ -7130,47 +7144,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap Xl @@ -7272,47 +7286,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap Xl @@ -7414,47 +7428,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +TK +TM +TK +TM +TM +TM +TM +TM +TM +TK +TM +TM +TK +ae +ae +ae +ae +ae +Sm +Sn +Sm +Sn +Sn +Sn +Sn +Sn +Sn +Sm +Sn +Sn +Sm +ae +ae +ae +ae +ae ap ap Xl @@ -7556,47 +7570,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +TM +TN +TK +TX +Ua +TT +Ud +Ug +Ug +TK +TU +Uk +TM +ae +ae +ae +ae +ae +Sn +So +Sm +SA +SB +Su +SE +SK +SK +Sm +Sw +SQ +Sn +ae +ae +ae +ae +ae ap ap Xl @@ -7698,47 +7712,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +TM +TP +TS +TU +TP +Ub +TP +TP +TU +TS +TU +Ul +TM +ae +ae +ae +ae +ae +Sn +Sp +Ss +Sw +Sp +SC +Sp +Sp +Sw +Ss +Sw +SR +Sn +ae +ae +ae +ae +ae ap ap Xl @@ -7840,47 +7854,47 @@ Az Bw JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +TM +TQ +TK +TV +TP +TP +TP +TP +Ui +TK +TU +Um +TM +ae +ae +ae +ae +ae +Sn +Sq +Sm +Sx +Sp +Sp +Sp +Sp +SO +Sm +Sw +SS +Sn +ae +ae +ae +ae +ae ap ap Xl @@ -7982,47 +7996,47 @@ Ax JW JW Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +TM +TR +TM +TW +TU +Uc +Uf +Uh +Uj +TM +TU +Uo +TM +ae +ae +ae +ae +ae +Sn +Sr +Sn +Sz +Sw +SD +SF +SN +SP +Sn +Sw +ST +Sn +ae +ae +ae +ae +ae ap ap Xl @@ -8124,47 +8138,47 @@ Gq Gq Gq Gq -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +TK +TM +TK +TM +TM +TM +TM +TM +TM +TK +TM +TM +TK +ae +ae +ae +ae +ae +Sm +Sn +Sm +Sn +Sn +Sn +Sn +Sn +Sn +Sm +Sn +Sn +Sm +ae +ae +ae +ae +ae ap ap Xl @@ -8266,47 +8280,47 @@ ap ap ap ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap Xl @@ -8408,47 +8422,47 @@ ap ap ap ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap Xl @@ -8550,47 +8564,47 @@ ap ap ap ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap ap @@ -8692,47 +8706,47 @@ ap ap ap ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap ap @@ -8834,47 +8848,47 @@ ap ap ap ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ap ap ap @@ -9291,30 +9305,30 @@ ap ap ap ap -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -cd -cd -cd -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap Xl OY @@ -9433,30 +9447,30 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap Xl OY @@ -9575,30 +9589,30 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap Xl OY @@ -9717,30 +9731,30 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap Xl Xl @@ -9828,19 +9842,6 @@ ap ap ap ap -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Vu ap ap ap @@ -9859,30 +9860,43 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -jf -jf -JL -JL -JL -JL -JL -JL -jf -jf -jf -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -9970,19 +9984,6 @@ ap ap ap ap -Vu -Ru -Ru -xM -Ru -Ru -Ru -Ru -xM -Ru -Ru -Ru -Vu ap ap ap @@ -10001,30 +10002,43 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -jf -JL -JL -jf -jf -jf -jf -JL -JL -jf -jf -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -10112,19 +10126,6 @@ ap ap ap ap -Vu -Ru -Ru -Ru -Ru -Ru -Ru -Ru -Ru -Ru -Ru -Ru -Vu ap ap ap @@ -10143,30 +10144,43 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -jf -JL -jf -jf -Hf -jf -jf -jf -JL -JL -jf -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -10254,19 +10268,6 @@ ap ap ap ap -Vu -YE -Ru -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Ru -Zi -Vu ap ap ap @@ -10285,30 +10286,43 @@ ap ap ap ap -Jz -jf -jf -JL -JL -JL -JL -JL -jf -jf -jf -jf -jf -jf -jf -JL -JL -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -10396,19 +10410,6 @@ ap ap ap ap -Vu -Ru -Ru -Vu -VW -wj -wj -wj -BK -Vu -Ru -Ru -Vu ap ap ap @@ -10427,30 +10428,43 @@ ap ap ap ap -Jz -jf -jf -JL -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -JL -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -10538,19 +10552,6 @@ ap ap ap ap -Vu -Ru -Ru -Vu -sl -cj -Dk -Dk -Dk -yK -Ru -Ru -Vu ap ap ap @@ -10569,30 +10570,43 @@ ap ap ap ap -Jz -jf -jf -JL -JL -JL -JL -jf -jf -jf -jf -jf -jf -jf -jf -jf -JL -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -10680,19 +10694,6 @@ ap ap ap ap -Vu -Ru -Ru -Vu -sl -Lg -tC -tC -tC -ym -Ru -Ru -Vu ap ap ap @@ -10711,30 +10712,43 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -JL -jf -jf -jf -jf -jf -jf -jf -jf -jf -JL -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -10822,19 +10836,6 @@ ap ap ap ap -Vu -Ru -Ru -Vu -DF -JZ -JZ -JZ -qz -Vu -Ru -Ru -Vu ap ap ap @@ -10853,30 +10854,43 @@ ap ap ap ap -Jz -jf -jf -JL -JL -JL -JL -jf -jf -jf -jf -jf -jf -jf -jf -jf -JL -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -10964,19 +10978,6 @@ ap ap ap ap -Vu -YE -Ru -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Ru -Zi -Vu ap ap ap @@ -10995,30 +10996,43 @@ ap ap ap ap -Jz -jf -jf -JL -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -JL -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -11106,19 +11120,6 @@ ap ap ap ap -Vu -Ru -Ru -Ru -Ru -Ru -Ru -Ru -Ru -Ru -Ru -Ru -Vu ap ap ap @@ -11137,30 +11138,43 @@ ap ap ap ap -Jz -jf -jf -JL -JL -JL -JL -JL -jf -jf -jf -jf -jf -jf -jf -JL -JL -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -11248,19 +11262,6 @@ ap ap ap ap -Vu -Ru -Ru -MK -Ru -Ru -Ru -Ru -MK -Ru -Ru -Ru -Vu ap ap ap @@ -11279,30 +11280,43 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -jf -JL -jf -jf -jf -jf -jf -jf -JL -JL -jf -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -11390,19 +11404,6 @@ ap ap ap ap -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Vu -Vu ap ap ap @@ -11421,30 +11422,43 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -jf -JL -JL -jf -jf -jf -jf -JL -JL -jf -jf -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -11563,30 +11577,30 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -jf -jf -JL -JL -JL -JL -JL -JL -jf -jf -jf -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -11705,30 +11719,30 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -11847,30 +11861,30 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -11989,30 +12003,30 @@ ap ap ap ap -Jz -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -jf -Gs -Gs -Gs -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -12131,30 +12145,30 @@ ap ap ap ap -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd -cd +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap ap ap @@ -12415,29 +12429,29 @@ ap ap ap ap -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO iO @@ -12557,29 +12571,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -12699,29 +12713,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -12841,29 +12855,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -12983,29 +12997,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -13125,29 +13139,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -13267,29 +13281,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -13409,29 +13423,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -ML -ML -ML -ML -ML -ML -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -13551,29 +13565,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -13693,29 +13707,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -13788,44 +13802,6 @@ ap ap ap ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae ap ap ap @@ -13835,29 +13811,67 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -13930,44 +13944,6 @@ ap ap ap ap -ae -Vu -Vu -Vu -Vu -Vu -Vu -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae ap ap ap @@ -13977,29 +13953,67 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -14072,44 +14086,6 @@ ap ap ap ap -ae -Vu -Ru -wn -Cy -eS -Vu -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae ap ap ap @@ -14119,29 +14095,67 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -14214,44 +14228,6 @@ ap ap ap ap -ae -Vu -Vu -Vu -Cy -gU -Vu -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae ap ap ap @@ -14261,29 +14237,67 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -14356,44 +14370,6 @@ ap ap ap ap -ae -Vu -Vu -Vu -Cy -eS -Vu -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae ap ap ap @@ -14403,30 +14379,68 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Bd +Bd +Bd +Bd iO El El @@ -14498,44 +14512,6 @@ ap ap ap ap -ae -Vu -kn -Ru -Cy -eS -Vu -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae ap ap ap @@ -14545,30 +14521,68 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +Jz +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -14640,44 +14654,6 @@ ap ap ap ap -ae -Vu -Vu -Vu -Vu -Vu -Vu -ae -ae -ae -ae -af -dZ -dZ -dZ -dZ -dZ -Rh -dZ -dZ -dZ -dZ -dZ -dZ -Rh -dZ -dZ -dZ -dZ -dZ -af -ae -ae -ae -ae -ae -ae -ae ap ap ap @@ -14687,30 +14663,68 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +Jz +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -14782,44 +14796,6 @@ ap ap ap ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ai -Al -Al -XE -Sl -Al -Al -XE -Al -Al -Al -Al -XE -Al -Al -Sl -XE -Al -Al -SG -ae -ae -ae -ae -ae -ae -ae ap ap ap @@ -14829,30 +14805,68 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -zb -qn -xc -qn -tD -ML -qn -qn -qn -qn -qn -qn -qn -oI ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +Jz +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -14924,44 +14938,6 @@ ap ap ap ap -ae -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ai -ET -ET -OR -Pe -Pe -Ri -OR -Pe -Rs -Rt -Pe -OR -Ri -RA -RA -OR -ET -ET -SG -ae -ae -ae -ae -ae -ae -ae ap ap ap @@ -14971,30 +14947,68 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -ML -zb -zb -tD -tD -qn -qn -qn -qn -qn -qn -qn -qn -oI ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +Jz +jf +jf +jf +jf +jf +jf +jf +JL +JL +JL +JL +JL +JL +jf +jf +jf +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -15066,44 +15080,6 @@ ap ap ap ap -ae -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -zK -Fp -OR -Pg -Rd -Rg -QW -Rk -Re -Rg -QX -Rw -Ry -QW -Rg -RD -Pg -OR -Fp -zK -ae -ae -ae -ae -ae -ae -ae ap ap ap @@ -15113,30 +15089,68 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +Jz +jf +jf +jf +jf +jf +jf +JL +JL +jf +jf +jf +jf +JL +JL +jf +jf +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -15208,44 +15222,6 @@ ap ap ap ap -ae -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ai -ET -Pe -Qa -Re -Rg -QW -QX -Rm -Rg -QX -Re -Rg -QW -QW -QW -RF -Pe -ET -SG -ae -ae -ae -ae -ae -ae -ae ap ap ap @@ -15255,30 +15231,68 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +Jz +jf +jf +jf +jf +jf +jf +JL +jf +jf +Hf +jf +jf +jf +JL +JL +jf +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -15350,44 +15364,6 @@ ap ap ap ap -ae -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ai -ET -Pe -QW -QW -QW -QW -QW -QW -QW -QW -QW -QW -QW -QX -QX -Rg -Pe -ET -SG -ae -ae -ae -ae -ae -ae -ae ap ap ap @@ -15397,30 +15373,68 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +Jz +jf +jf +JL +JL +JL +JL +JL +jf +jf +jf +jf +jf +jf +jf +JL +JL +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -15482,47 +15496,47 @@ dG eT dG fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ai -ET -Pe -QW -QW -QW -QW -QW -QW -QW -QW -QW -QW -QW -QX -QX -RG -Pe -ET -SG +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ae ae ae @@ -15539,30 +15553,30 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI -ap +Jz +jf +jf +JL +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +JL +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -15624,47 +15638,47 @@ dG dG dG fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ai -ET -Pe -QX -Re -Rg -QW -QX -Re -Rg -QX -Re -Rg -QW -QW -QW -QW -Pe -ET -SG +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ae ae ae @@ -15681,30 +15695,30 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI -ap +Jz +jf +jf +JL +JL +JL +JL +jf +jf +jf +jf +jf +jf +jf +jf +jf +JL +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -15766,16 +15780,6 @@ dG eJ dG fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap ae ae ae @@ -15787,26 +15791,36 @@ ae ae ae ae -zK -Fp -OR -Pg -Rf -Rg -QW -Rl -Ro -Rg -QX -Rx -Rz -QW -RC -RE -Pg -OR -Fp -zK +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ae ae ae @@ -15823,30 +15837,30 @@ ap ap ap ap -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -ap +Jz +jf +jf +jf +jf +jf +JL +jf +jf +jf +jf +jf +jf +jf +jf +jf +JL +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -15908,16 +15922,36 @@ dG dG fG fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +Vu +Vu +Vu +Vu +Vu +Vu +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ae ae ae @@ -15929,26 +15963,6 @@ ae ae ae ae -ai -ET -ET -OR -Pe -Pe -Rj -OR -Pe -Rt -Rt -Pe -OR -Rj -RA -RA -OR -ET -ET -SG ae ae ae @@ -15965,30 +15979,30 @@ ap ap ap ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +Jz +jf +jf +JL +JL +JL +JL +jf +jf +jf +jf +jf +jf +jf +jf +jf +JL +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -16050,16 +16064,36 @@ fG dG dG fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +Vu +Ru +wn +Cy +eS +Vu +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ae ae ae @@ -16071,26 +16105,6 @@ ae ae ae ae -ai -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -Rc -SG ae ae ae @@ -16107,30 +16121,30 @@ ap ap ap ap -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -ap +Jz +jf +jf +JL +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +JL +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -16192,16 +16206,39 @@ dG eT dG fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +Vu +Vu +Vu +Cy +gU +Vu +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ae ae ae @@ -16210,29 +16247,6 @@ ae ae ae ae -Vg -Vg -Vg -Vl -Vh -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Jx -Zt -aj ae ae ae @@ -16249,30 +16263,30 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI -ap +Jz +jf +jf +JL +JL +JL +JL +JL +jf +jf +jf +jf +jf +jf +jf +JL +JL +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -16334,16 +16348,13 @@ dG dG dG fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +Vu +Vu +Vu +Cy +eS +Vu ae ae ae @@ -16352,29 +16363,32 @@ ae ae ae ae -Vg -Nr -Th -JR -Nq -Nq -Nq -Nq -Nq -Nq -Yx -Nq -Nq -Nq -Nq -Yx -Nq -Nq -Nq -Nq -Nq -Nq +ae +ae +ae +ae +ae +ae +af dZ +dZ +dZ +dZ +dZ +Rh +dZ +dZ +dZ +dZ +dZ +dZ +Rh +dZ +dZ +dZ +dZ +dZ +af ae ae ae @@ -16391,30 +16405,30 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI -ap +Jz +jf +jf +jf +jf +jf +jf +JL +jf +jf +jf +jf +jf +jf +JL +JL +jf +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -16476,16 +16490,13 @@ dG eJ dG fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +Vu +kn +Ru +Cy +eS +Vu ae ae ae @@ -16494,29 +16505,32 @@ ae ae ae ae -Vg -SW -Ti -Rq -Nq -Nq -Nq -Nq -Nq -Nq -wd -dZ -TY -Vv -dZ -dZ -Nq -Nq -Nq -Nq -Nq -Nq -dZ +ae +ae +ae +ae +ae +ae +ai +Al +Al +XE +Sl +Al +Al +XE +Al +Al +Al +Al +XE +Al +Al +Sl +XE +Al +Al +SG ae ae ae @@ -16533,30 +16547,30 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI -ap +Jz +jf +jf +jf +jf +jf +jf +JL +JL +jf +jf +jf +jf +JL +JL +jf +jf +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -16618,16 +16632,13 @@ dG dG fG fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ae +Vu +Vu +Vu +Vu +Vu +Vu ae ae ae @@ -16636,29 +16647,32 @@ ae ae ae ae -Vg -Tf -Tj -Rv -QY -Pf -XH -SH -SH -QY -TI -Rr -SV -SV -Rr -TI -QY -SH -SH -XH -Pf -QY -dZ +ae +ae +ae +ae +ae +ae +ai +ET +ET +OR +Pe +Pe +Ri +OR +Pe +Rs +Rt +Pe +OR +Ri +RA +RA +OR +ET +ET +SG ae ae ae @@ -16675,30 +16689,30 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI -ap +Jz +jf +jf +jf +jf +jf +jf +jf +JL +JL +JL +JL +JL +JL +jf +jf +jf +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -16760,48 +16774,48 @@ aL aL aL ar -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap ae ae ae ae ae ae -wy -wy -Vg -Vg -Vg -Vg -TI -TI -TI -TI -TI -TI -dZ -Ru -Ru -Ru -Ru -dZ -dZ -dZ -dZ -dZ -dZ -dZ -dZ -VI +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +zK +Fp +OR +Pg +Rd +Rg +QW +Rk +Re +Rg +QX +Rw +Ry +QW +Rg +RD +Pg +OR +Fp +zK +ae ae ae ae @@ -16817,30 +16831,30 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -ML -ML -ML -ML -ML -ML -qn -qn -qn -qn -qn -qn -qn -oI -ap +Jz +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -16902,10 +16916,7 @@ eL eL eL fZ -ap -ap -ap -ap +ae ap ap ap @@ -16918,32 +16929,35 @@ ae ae ae ae -wy -yA -Ga -xe -wl -TZ -Vi -Vi -Vi -VJ -Vi -VS -Vu -YE -Ru -Ru -Wt -WE -Xs -XC -Zp -VI -Yr -Zw -YI -VI +ae +ae +ae +ae +ae +ae +ae +ae +ai +ET +Pe +Qa +Re +Rg +QW +QX +Rm +Rg +QX +Re +Rg +QW +QW +QW +RF +Pe +ET +SG +ae ae ae ae @@ -16959,30 +16973,30 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI -ap +Jz +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -17044,10 +17058,7 @@ eK eK eK fZ -ap -ap -ap -ap +ae ap ap ap @@ -17060,32 +17071,35 @@ ae ae ae ae -wy -rE -Ga -Iq -wl -Up -Vj -Vj -Vj -Vj -Vj -VU -Vu -Ru -Ru -Ru -Wv -WJ -Xv -XD -XD -VI -Ys -XD -YJ -VI +ae +ae +ae +ae +ae +ae +ae +ae +ai +ET +Pe +QW +QW +QW +QW +QW +QW +QW +QW +QW +QW +QW +QX +QX +Rg +Pe +ET +SG +ae ae ae ae @@ -17101,30 +17115,30 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI -ap +Jz +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +jf +Gs +Gs +Gs +Bd iO El El @@ -17186,10 +17200,7 @@ fn fO eK fZ -ap -ap -ap -ap +ae ap ap ap @@ -17202,32 +17213,35 @@ ae ae ae ae -wy -HQ -Ga -Ga -wl -Up -Vj -Vj -Vj -Vj -Vj -VU -Vu -Ru -Ru -Ru -Wv -WK -Xw -XD -XD -VI -Yu -XD -YJ -VI +ae +ae +ae +ae +ae +ae +ae +ae +ai +ET +Pe +QW +QW +QW +QW +QW +QW +QW +QW +QW +QW +QW +QX +QX +RG +Pe +ET +SG +ae ae ae ae @@ -17243,30 +17257,30 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI -ap +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd +Bd iO El El @@ -17328,10 +17342,7 @@ fo fP eK fZ -ap -ap -ap -ap +ae ap ap ap @@ -17344,32 +17355,35 @@ ae ae ae ae -wy -pb -Ga -ME -wl -Uu -Vj -Vj -Vm -Vj -Vj -XU -Vu -Ru -Ru -Ru -Wt -WE -Xx -Zk -XV -Yl -Zs -Yy -XD -VI +ae +ae +ae +ae +ae +ae +ae +ae +ai +ET +Pe +QX +Re +Rg +QW +QX +Re +Rg +QX +Re +Rg +QW +QW +QW +QW +Pe +ET +SG +ae ae ae ae @@ -17385,29 +17399,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap ap iO El @@ -17470,10 +17484,7 @@ fo fP eK fZ -ap -ap -ap -ap +ae ap ap ap @@ -17486,33 +17497,36 @@ ae ae ae ae -wy -kr -Ga -Cw -wl -Up -Vj -Vj -Vm -Vj -Vj -VU -Vu -Ru -Ru -Zi -VI -VI -VI -VI -VI -VI -VI -VI -Yl -VI -Xi +ae +ae +ae +ae +ae +ae +ae +ae +zK +Fp +OR +Pg +Rf +Rg +QW +Rl +Ro +Rg +QX +Rx +Rz +QW +RC +RE +Pg +OR +Fp +zK +ae +ae ae ae ae @@ -17527,29 +17541,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce ap iO El @@ -17612,10 +17626,7 @@ fo fP eK fZ -ap -ap -ap -ap +ae ap ap ap @@ -17628,33 +17639,36 @@ ae ae ae ae -wy -Ct -Ga -kh -wl -Ur -Vm -Vj -Vj -Vj -Vj -VU -Vu -Ru -Ru -Ru -VM -VQ -WN -VZ -VQ -VQ -WH -ZD -WW -Xe -Xi +ae +ae +ae +ae +ae +ae +ae +ae +ai +ET +ET +OR +Pe +Pe +Rj +OR +Pe +Rt +Rt +Pe +OR +Rj +RA +RA +OR +ET +ET +SG +ae +ae ae ae ae @@ -17669,29 +17683,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap iO El @@ -17754,49 +17768,49 @@ fo fP eK fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap ae ae ae ae ae ae -wy -wy -wy -wy -wl -Up -Vj -Vj -Vj -Vj -Vj -VU -TJ -Ru -Ru -Ru -WB -VR -Wb -Wl -Wz -VQ -WH -WO -WW -Xf -Xi +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ai +Rc +Rc +Rc +Rc +Rc +Rc +Rc +Rc +Rc +Rc +Rc +Rc +Rc +Rc +Rc +Rc +Rc +Rc +SG +ae +ae ae ae ae @@ -17811,29 +17825,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap iO El @@ -17896,16 +17910,47 @@ fo fP eK fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +Vu +Vu +Vu +Vu +Vu +Vu +Vu +Vu +Vu +Vu +Vu +Vu +Vu +ae +ae +ae +ae +ae +Vg +Vg +Vg +Vl +Vh +Jx +Jx +Jx +Jx +Jx +Jx +Jx +Jx +Jx +Jx +Jx +Jx +Jx +Jx +Jx +Jx +Zt +aj ae ae ae @@ -17913,37 +17958,6 @@ ae ae ae ae -ae -ae -ae -wl -Up -Vj -Vj -Vj -Vj -Vj -VU -Vw -Ru -Ru -Ru -VK -VR -Wc -Wm -Wz -VQ -WH -WP -WW -Xg -Xi -ae -ae -ae -ae -ae ap ap ap @@ -17953,29 +17967,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap iO El @@ -18038,49 +18052,49 @@ fH fQ eK fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Up -Vj -Vj -Vj -Vj -Vj -VU Vu -YE Ru Ru -VL -VQ -Wd -Wd -VQ -VQ -WH -WQ -WW -Xh -Xi +xM +Ru +Ru +Ru +Ru +xM +Ru +Ru +Ru +Vu +ae +ae +ae +ae +ae +Vg +Nr +Th +JR +Nq +Nq +Nq +Nq +Nq +Nq +Yx +Nq +Nq +Nq +Nq +Yx +Nq +Nq +Nq +Nq +Nq +Nq +dZ +ae +ae ae ae ae @@ -18095,29 +18109,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap iO El @@ -18180,49 +18194,49 @@ eK eK eK fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Up -Vj -Vm -Vj -VN -Vj -VU Vu Ru Ru Ru -WB -VQ -VQ -VQ -VQ -VQ -WH -WR -WW -Zh -Xi +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Vu +ae +ae +ae +ae +ae +Vg +SW +Ti +Rq +Nq +Nq +Nq +Nq +Nq +Nq +wd +dZ +TY +Vv +dZ +dZ +Nq +Nq +Nq +Nq +Nq +Nq +dZ +ae +ae ae ae ae @@ -18237,29 +18251,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap iO El @@ -18322,49 +18336,49 @@ aL aL aL ar -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Uu -Vj -Vj -Vj -Vj -Vj -Yt +Vu +YE +Ru +Vu +Vu +Vu +Vu +Vu +Vu Vu Ru -Ru -Ru -WB -VQ -VZ -VZ -VQ -VQ -WH -WV -WW -WW -Xi +Zi +Vu +ae +ae +ae +ae +ae +Vg +Tf +Tj +Rv +QY +Pf +XH +SH +SH +QY +TI +Rr +SV +SV +Rr +TI +QY +SH +SH +XH +Pf +QY +dZ +ae +ae ae ae ae @@ -18379,29 +18393,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -ML -qn -qn -qn -qn -qn -qn -qn -oI +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap iO El @@ -18464,49 +18478,49 @@ fz fz fS fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Up -Vj -Vj -Vj -Vm -Vj -VU Vu Ru Ru +Vu +VW +wj +wj +wj +BK +Vu Ru -WB -VR -We -Wo -Wz -VQ -VQ -VQ -ZE -VM -Xi +Ru +Vu +ae +ae +ae +wy +wy +Vg +Vg +Vg +Vg +TI +TI +TI +TI +TI +TI +dZ +Ru +Ru +Ru +Ru +dZ +dZ +dZ +dZ +dZ +dZ +dZ +dZ +VI +ae ae ae ae @@ -18521,29 +18535,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -ML -zb -qn -pF -qn -tD -ML -qn -qn -qn -qn -qn -qn -qn -oI +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap iO El @@ -18606,48 +18620,48 @@ ei ei fJ fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Us -Vn -Vj -Vj -Vm -VO -VP Vu Ru Ru -Zi -WB -VR -Wk -Wu -Wz -VQ -VQ -VQ -WZ -VM +Vu +sl +cj +Dk +Dk +Dk +yK +Ru +Ru +Vu +ae +ae +ae +wy +yA +Ga +xe +wl +TZ +Vi +Vi +Vi +VJ +Vi +VS +Vu +YE +Ru +Ru +Wt +WE +Xs +XC +Zp +VI +Yr +Zw +YI +VI ae ae ae @@ -18663,29 +18677,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -ML -zb -zb -tD -tD -qn -qn -qn -qn -qn -qn -qn -qn -oI +ce +cf +cf +cf +cf +cf +cf +cg +cg +cg +cg +cg +cg +cg +cg +cg +cg +cg +cf +cf +cf +cf +ce ap iO El @@ -18748,48 +18762,48 @@ fJ fz fS fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae +Vu +Ru +Ru +Vu +sl +Lg +tC +tC +tC +ym +Ru +Ru +Vu ae ae ae +wy +rE +Ga +Iq wl -Ut -Us -Vs -VB -Vs -VP -Ut +Up +Vj +Vj +Vj +Vj +Vj +VU Vu Ru Ru Ru -VK -VQ -Wd -Wd -VQ -VZ -VZ -VQ -Xa -VM +Wv +WJ +Xv +XD +XD +VI +Ys +XD +YJ +VI ae ae ae @@ -18805,29 +18819,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI +ce +cf +cf +cf +cf +cf +cf +cg +cf +cf +cf +cf +cf +cf +cf +cf +cf +cg +cg +cf +cf +cf +ce ap iO El @@ -18890,48 +18904,48 @@ fJ ei fT fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae +Vu +Ru +Ru +Vu +DF +JZ +JZ +JZ +qz +Vu +Ru +Ru +Vu ae ae ae +wy +HQ +Ga +Ga wl -wl -Vo -Vo -Vo -Vo -Vo -wl +Up +Vj +Vj +Vj +Vj +Vj +VU Vu Ru Ru Ru -VL -VQ -VQ -VQ -VR -WA -WI -Wz -Xb -VM +Wv +WK +Xw +XD +XD +VI +Yu +XD +YJ +VI ae ae ae @@ -18947,29 +18961,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI +ce +cf +cf +cf +cf +cf +cf +cg +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cg +cf +cf +cf +ce ap iO iO @@ -19032,48 +19046,48 @@ fJ fA fU fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae +Vu +YE +Ru +Vu +Vu +Vu +Vu +Vu +Vu +Vu +Ru +Zi +Vu ae ae ae +wy +pb +Ga +ME wl -TZ -Vi -Vi -Vi -Vi -Vi -VX +Uu +Vj +Vj +Vm +Vj +Vj +XU Vu Ru Ru Ru -WB -VQ -VQ -VQ -VR -WF -WL -Wz -Xc -VM +Wt +WE +Xx +Zk +XV +Yl +Zs +Yy +XD +VI ae ae ae @@ -19089,29 +19103,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI +ce +cf +cf +cf +cf +cf +cf +cg +cf +cf +cf +cf +cf +cf +cf +cf +cf +ch +cg +cf +cf +cf +ce ap ap ap @@ -19174,49 +19188,49 @@ ei ei fJ fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae +Vu +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Vu ae ae ae +wy +kr +Ga +Cw wl -Va -Vp -Ut -Ut -Ut -Ut +Up +Vj +Vj +Vm +Vj +Vj VU Vu -YE Ru Ru -VM -VY -ZC -VQ -VQ -Wd -Wd -ZC -Xd -VM -ae +Zi +VI +VI +VI +VI +VI +VI +VI +VI +Yl +VI +Xi ae ae ae @@ -19231,29 +19245,29 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI +ce +cf +cf +cf +cf +cf +cf +cg +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cg +cf +cf +cf +ce ap Jz Jz @@ -19316,53 +19330,49 @@ fA fA fU fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae +Vu +Ru +Ru +MK +Ru +Ru +Ru +Ru +MK +Ru +Ru +Ru +Vu ae ae ae +wy +Ct +Ga +kh wl -Up -Vq -Ut -Vr -Vr -Ut +Ur +Vm +Vj +Vj +Vj +Vj VU Vu Ru Ru Ru VM -VM -VM -VM -VM -VM -VM -VM -VM -VM -VM -ae -ae -ae -ae +VQ +WN +VZ +VQ +VQ +WH +ZD +WW +Xe +Xi ae ae ae @@ -19373,29 +19383,33 @@ ap ap ap ap -oI -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -qn -oI +ap +ap +ap +ap +ce +cf +cf +cf +cf +cf +cf +cg +cf +cf +cf +cf +cf +cf +cf +cf +cf +cg +cg +cf +cf +cf +ce ap Jz jf @@ -19458,53 +19472,49 @@ bh aG aG fZ -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -wl -Uu -Ut -Vt -Ut -Ut -Ut -XU Vu +Vu +Vu +Vu +Vu +Vu +Vu +Vu +Vu +Vu +Vu +Vu +Vu +ae +ae +ae +wy +wy +wy +wy +wl +Up +Vj +Vj +Vj +Vj +Vj +VU +TJ Ru Ru Ru -Vd -WS -WS -Zl -XX -Ym -Vd -YB -YK -YP -Vd -ae -ae -ae -ae +WB +VR +Wb +Wl +Wz +VQ +WH +WO +WW +Xf +Xi ae ae ae @@ -19515,29 +19525,33 @@ ap ap ap ap -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI -oI +ap +ap +ap +ap +ce +cf +cf +cf +cf +cf +cf +cg +cg +cg +cg +cg +cg +cg +cg +cg +cg +cg +cf +cf +cf +cf +ce ap Jz jf @@ -19622,31 +19636,27 @@ ae ae wl Up -Ut -Ut -Ut -Ut -VD +Vj +Vj +Vj +Vj +Vj VU -Vu +Vw Ru Ru Ru -WC -WT -WS -XJ -XZ -WS -Vd -YC -YL -YP -Vd -ae -ae -ae -ae +VK +VR +Wc +Wm +Wz +VQ +WH +WP +WW +Xg +Xi ae ae ae @@ -19661,25 +19671,29 @@ ap ap ap ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap Jz jf @@ -19764,31 +19778,27 @@ ae ae wl Up -Ut -Vr -Ut -Ut -Ut -Wh +Vj +Vj +Vj +Vj +Vj +VU Vu +YE Ru Ru -Zi -Ve -WS -WS -XK -Ya -WS -Vd -YD -YM -XN -Vd -ae -ae -ae -ae +VL +VQ +Wd +Wd +VQ +VQ +WH +WQ +WW +Xh +Xi ae ae ae @@ -19803,25 +19813,29 @@ ap ap ap ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap Jz jf @@ -19906,31 +19920,27 @@ ae ae wl Up -Ut -Ut -Ut -Ut -Ut +Vj +Vm +Vj +VN +Vj VU -TJ +Vu Ru Ru Ru -Xk -WS -WS -XM -XZ -WS -Vd -YC -YN -YQ -Vd -ae -ae -ae -ae +WB +VQ +VQ +VQ +VQ +VQ +WH +WR +WW +Zh +Xi ae ae ae @@ -19945,25 +19955,29 @@ ap ap ap ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap Jz jf @@ -20047,32 +20061,28 @@ ae ae ae wl -Up -Vr -Ut -Ut -Ut -Ut -VU -Vw +Uu +Vj +Vj +Vj +Vj +Vj +Yt +Vu Ru Ru Ru -Xm -WS -WS -XN -Yb -Zq -Vd -Zx -XZ -YT -Vd -ae -ae -ae -ae +WB +VQ +VZ +VZ +VQ +VQ +WH +WV +WW +WW +Xi ae ae ae @@ -20087,25 +20097,29 @@ ap ap ap ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap Jz jf @@ -20190,47 +20204,27 @@ ae ae wl Up -Ut -Ut -VD -Ut -Vr -VV +Vj +Vj +Vj +Vm +Vj +VU Vu Ru Ru Ru -Xn -WS -WS -WS -WS -WS -Vd -XN -WS -YU -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +WB +VR +We +Wo +Wz +VQ +VQ +VQ +ZE +VM +Xi ae ae ae @@ -20245,9 +20239,29 @@ ap ap ap ap -ap -ap -ap +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap Jz jf @@ -20331,47 +20345,27 @@ ae ae ae wl -Up -Ut -Ut -Ut -Ut -Ut -VU +Us +Vn +Vj +Vj +Vm +VO +VP Vu -YE Ru Ru -WC -WT -WS -WS -WS -WS -Vd -Vd -Yw -Vd -Vd -Vd -Vd -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +Zi +WB +VR +Wk +Wu +Wz +VQ +VQ +VQ +WZ +VM ae ae ae @@ -20387,9 +20381,29 @@ ap ap ap ap -ap -ap -ap +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap Jz jf @@ -20473,47 +20487,27 @@ ae ae ae wl -Uu Ut -Vr +Us +Vs +VB +Vs +VP Ut -Ut -Ut -XU Vu Ru Ru Ru -WC -WT -WS -WS -WS -WS -Vd -Ym -WS -WS -WS -WS -Zf -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +VK +VQ +Wd +Wd +VQ +VZ +VZ +VQ +Xa +VM ae ae ae @@ -20529,9 +20523,29 @@ ap ap ap ap -ap -ap -ap +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap Jz jf @@ -20615,47 +20629,27 @@ ae ae ae wl -Up -Ut -Ut -Ut -Ut -VD -VU +wl +Vo +Vo +Vo +Vo +Vo +wl Vu Ru Ru Ru -WC -WT -WS -WS -WS -WS -Yv -WS -WS -WS -YY -WS -WS -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +VL +VQ +VQ +VQ +VR +WA +WI +Wz +Xb +VM ae ae ae @@ -20671,9 +20665,29 @@ ap ap ap ap -ap -ap -ap +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap Jz jf @@ -20757,47 +20771,27 @@ ae ae ae wl -Us -Vn -Ut -VE -Ut -VO -VP +TZ +Vi +Vi +Vi +Vi +Vi +VX Vu Ru Ru Ru -Vd -WS -WS -Zn -WS -WS -WS -WS -WS -WS -YZ -WS -Zq -Vd -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +WB +VQ +VQ +VQ +VR +WF +WL +Wz +Xc +VM ae ae ae @@ -20813,9 +20807,29 @@ ap ap ap ap -ap -ap -ap +ce +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +cf +ce ap Jz jf @@ -20899,56 +20913,33 @@ ae ae ae wl +Va +Vp Ut -Us -Vs -VF -Vs -VP Ut +Ut +Ut +VU Vu +YE Ru Ru -Zi -Vd -Vd -Vd -Vd -Vd -Vd -Vd -YF -WS -WS -WS -WS -WS -Vd +VM +VY +ZC +VQ +VQ +Wd +Wd +ZC +Xd +VM ae ae ae ae ae ae -TK -TM -TK -TM -TM -TM -TM -TM -TM -TK -TM -TM -TK -ae -ae -ae -ap -ap -ap ap ap ap @@ -20958,6 +20949,29 @@ ap ap ap ap +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce ap Jz jf @@ -21041,52 +21055,34 @@ ae ae ae wl -wl -Vo -Vo -Vo -Vo -Vo -wl +Up +Vq +Ut +Vr +Vr +Ut +VU Vu Ru Ru Ru -Vd -WU -Xy -XP -Yc -Yc -Vd -Zy -WS -WS -WS -WS -WS -Vd +VM +VM +VM +VM +VM +VM +VM +VM +VM +VM +VM ae ae ae ae ae ae -TM -TN -TK -TT -TX -Ua -Ud -Ug -Ug -TK -TU -Uk -TM -ae -ae ae ap ap @@ -21101,6 +21097,24 @@ ap ap ap ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap +ap Jz jf jf @@ -21182,31 +21196,28 @@ ae ae ae ae -Vk -Vk -Vk -Vk -Vk -Vk -Vk -Vk -Uv +wl +Uu +Ut +Vt +Ut +Ut +Ut +XU +Vu Ru Ru Ru Vd -Xj -Xz -XQ -Yh -Yc +WS +WS +Zl +XX +Ym Vd -YH -WS -WS -Zb -WS -WS +YB +YK +YP Vd ae ae @@ -21214,21 +21225,6 @@ ae ae ae ae -TM -TP -TS -TU -TP -Ub -TP -TP -TU -TS -TU -Ul -TM -ae -ae ae ap ap @@ -21237,11 +21233,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI ap Jz jf @@ -21324,31 +21338,28 @@ ae ae ae ae -Vk -Vc -Vz -Vc -Vc -Vz -Vc -Wi -YR +wl +Up +Ut +Ut +Ut +Ut +VD +VU +Vu Ru Ru Ru +WC +WT +WS +XJ +XZ +WS Vd -Zj -XA -XR -Yj -Zr -Yg -WS -WS -WS -Zc -WS -WS +YC +YL +YP Vd ae ae @@ -21356,21 +21367,6 @@ ae ae ae ae -TM -TQ -TK -TV -TP -TP -TP -TP -Ui -TK -TU -Um -TM -ae -ae ae ap ap @@ -21379,11 +21375,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -21466,31 +21480,28 @@ ae ae ae ae -Vk -Vc -Vc -Vc -Vc -Vc -Vc -Vk -UE -Ru +wl +Up +Ut +Vr +Ut +Ut +Ut +Wh +Vu Ru Ru +Zi +Ve +WS +WS +XK +Ya +WS Vd -Xr -XB -YW -YW -YW -Yw -WS -WS -WS -WS -WS -Zq +YD +YM +XN Vd ae ae @@ -21498,21 +21509,6 @@ ae ae ae ae -TM -TR -TM -TW -TU -Uc -Uf -Uh -Uj -TM -TU -Uo -TM -ae -ae ae ap ap @@ -21521,11 +21517,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -21608,31 +21622,28 @@ ae ae ae ae -Vk -Vf -Vk -Vy -Vk -Vy -Vg -Vg -Vg -Wq -Ws -Ws -Vg -Vg -Vg +wl +Up +Ut +Ut +Ut +Ut +Ut +VU +TJ +Ru +Ru +Ru +Xk WS WS +XM +XZ WS Vd -WS -WS -WS -WS -WS -WS +YC +YN +YQ Vd ae ae @@ -21640,21 +21651,6 @@ ae ae ae ae -TK -TM -TK -TM -TM -TM -TM -TM -TM -TK -TM -TM -TK -ae -ae ae ap ap @@ -21663,11 +21659,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -21750,31 +21764,28 @@ ae ae ae ae -Vk -Vb -Vk -Xp -Vk -Xp -Vg -Wj -Wp -Ti -YG -Ti -Wp -Wj -Vg -XS -Yk -Yo +wl +Up +Vr +Ut +Ut +Ut +Ut +VU +Vw +Ru +Ru +Ru +Xm +WS +WS +XN +Yb +Zq Vd -Zz -YO -YV -Zd -Ze -Zg +Zx +XZ +YT Vd ae ae @@ -21783,26 +21794,6 @@ ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap ap ap ap @@ -21810,6 +21801,29 @@ ap ap ap ap +oI +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -21892,31 +21906,28 @@ ae ae ae ae -Vk -Vk -Vk -Vk -Vk -Vk -Vg -Vg -Vg -Wp -Vg -Wp -Vg -Vg -Vg -Vd -Vd -Vd -Vd -Vd -Vd -Vd -Vd -Vd +wl +Up +Ut +Ut +VD +Ut +Vr +VV +Vu +Ru +Ru +Ru +Xn +WS +WS +WS +WS +WS Vd +XN +WS +YU Vd ae ae @@ -21925,26 +21936,6 @@ ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ap -ap -ap -ap -ap ap ap ap @@ -21952,6 +21943,29 @@ ap ap ap ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +ML +ML +ML +ML +ML +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -22034,50 +22048,32 @@ ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -Vg -Wj -Vg -Wj -Vg -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +wl +Up +Ut +Ut +Ut +Ut +Ut +VU +Vu +YE +Ru +Ru +WC +WT +WS +WS +WS +WS +Vd +Vd +Yw +Vd +Vd +Vd +Vd +Vd ae ae ae @@ -22089,11 +22085,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -22168,58 +22182,40 @@ hz hK hP fZ +ap +ap ae ae ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -Vg -Vg -Vg -Vg -Vg -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +wl +Uu +Ut +Vr +Ut +Ut +Ut +XU +Vu +Ru +Ru +Ru +WC +WT +WS +WS +WS +WS +Vd +Ym +WS +WS +WS +WS +Zf +Vd ae ae ae @@ -22231,11 +22227,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -22310,58 +22324,40 @@ hA hL hQ fZ +ap +ap ae ae ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +wl +Up +Ut +Ut +Ut +Ut +VD +VU +Vu +Ru +Ru +Ru +WC +WT +WS +WS +WS +WS +Yv +WS +WS +WS +YY +WS +WS +Vd ae ae ae @@ -22373,11 +22369,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -22452,58 +22466,40 @@ hx hx hx fZ +ap +ap ae ae ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +wl +Us +Vn +Ut +VE +Ut +VO +VP +Vu +Ru +Ru +Ru +Vd +WS +WS +Zn +WS +WS +WS +WS +WS +WS +YZ +WS +Zq +Vd ae ae ae @@ -22515,11 +22511,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -22594,58 +22608,40 @@ aL aL aL ar +ap +ap ae ae ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +wl +Ut +Us +Vs +VF +Vs +VP +Ut +Vu +Ru +Ru +Zi +Vd +Vd +Vd +Vd +Vd +Vd +Vd +YF +WS +WS +WS +WS +WS +Vd ae ae ae @@ -22657,11 +22653,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -22736,58 +22750,40 @@ hB hD hD fZ +ap +ap ae ae ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +wl +wl +Vo +Vo +Vo +Vo +Vo +wl +Vu +Ru +Ru +Ru +Vd +WU +Xy +XP +Yc +Yc +Vd +Zy +WS +WS +WS +WS +WS +Vd ae ae ae @@ -22799,11 +22795,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -22878,58 +22892,40 @@ hC hC hC fZ +ap +ap ae ae ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +Vk +Vk +Vk +Vk +Vk +Vk +Vk +Vk +Uv +Ru +Ru +Ru +Vd +Xj +Xz +XQ +Yh +Yc +Vd +YH +WS +WS +Zb +WS +WS +Vd ae ae ae @@ -22941,11 +22937,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -23020,58 +23034,40 @@ hD hD hD fZ +ap +ap ae ae ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +Vk +Vc +Vz +Vc +Vc +Vz +Vc +Wi +YR +Ru +Ru +Ru +Vd +Zj +XA +XR +Yj +Zr +Yg +WS +WS +WS +Zc +WS +WS +Vd ae ae ae @@ -23083,11 +23079,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -23162,59 +23176,41 @@ hD hD hD fZ -ae -ae -ae -Uw -Ux -Uw -Ux -Ux -Ux -Ux -Ux -Ux -Uw -Ux -Ux -Uw -ae -ae -ae -ae -ae -Sm -Sn -Sm -Sn -Sn -Sn -Sn -Sn -Sn -Sm -Sn -Sn -Sm +ap +ap ae ae ae ae ae ae -SX -SY -SX -SY -SY -SY -SY -SY -SY -SX -SY -SY -SX +Vk +Vc +Vc +Vc +Vc +Vc +Vc +Vk +UE +Ru +Ru +Ru +Vd +Xr +XB +YW +YW +YW +Yw +WS +WS +WS +WS +WS +Zq +Vd +ae ae ae ae @@ -23225,11 +23221,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -23304,59 +23318,41 @@ hE hE hE fZ -ae -ae -ae -Ux -Uz -Uw -UG -UK -UM -UQ -US -US -Uw -UH -UW -Ux -ae -ae -ae -ae -ae -Sn -So -Sm -Su -SA -SB -SE -SK -SK -Sm -Sw -SQ -Sn +ap +ap ae ae ae ae ae ae -SY -SZ -SX -Tk -Tp -Tq -Tu -Ty -Ty -SX -Tl -TC -SY +Vk +Vf +Vk +Vy +Vk +Vy +Vg +Vg +Vg +Wq +Ws +Ws +Vg +Vg +Vg +WS +WS +WS +Vd +WS +WS +WS +WS +WS +WS +Vd +ae ae ae ae @@ -23367,11 +23363,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -23446,59 +23460,41 @@ hD hD hR fZ -ae -ae -ae -Ux -UA -UF -UH -UA -UN -UA -UA -UH -UF -UH -UX -Ux -ae -ae -ae -ae -ae -Sn -Sp -Ss -Sw -Sp -SC -Sp -Sp -Sw -Ss -Sw -SR -Sn +ap +ap ae ae ae ae ae ae -SY -Ta -Td -Tl -Ta -Tr -Ta -Ta -Tl -Td -Tl -TD -SY +Vk +Vb +Vk +Xp +Vk +Xp +Vg +Wj +Wp +Ti +YG +Ti +Wp +Wj +Vg +XS +Yk +Yo +Vd +Zz +YO +YV +Zd +Ze +Zg +Vd +ae ae ae ae @@ -23509,11 +23505,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -23588,59 +23602,41 @@ aL aL aL ar -ae -ae -ae -Ux -UC -Uw -UI -UA -UA -UA -UA -UU -Uw -UH -UY -Ux -ae -ae -ae -ae -ae -Sn -Sq -Sm -Sx -Sp -Sp -Sp -Sp -SO -Sm -Sw -SS -Sn +ap +ap ae ae ae ae ae ae -SY -Tb -SX -Tm -Ta -Ta -Ta -Ta -TA -SX -Tl -TE -SY +Vk +Vk +Vk +Vk +Vk +Vk +Vg +Vg +Vg +Wp +Vg +Wp +Vg +Vg +Vg +Vd +Vd +Vd +Vd +Vd +Vd +Vd +Vd +Vd +Vd +Vd +ae ae ae ae @@ -23651,11 +23647,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +ML +zb +qn +pF +qn +tD +ML +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -23730,59 +23744,41 @@ hF hF hF fZ -ae -ae -ae -Ux -UD -Ux -UJ -UH -UP -UR -UT -UV -Ux -UH -UZ -Ux -ae -ae -ae -ae -ae -Sn -Sr -Sn -Sz -Sw -SD -SF -SN -SP -Sn -Sw -ST -Sn +ap +ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +Vg +Wj +Vg +Wj +Vg +ae +ae +ae +ae +ae +ae +ae +ae ae ae ae ae ae ae -SY -Tc -SY -To -Tl -Tt -Tx -Tz -TB -SY -Tl -TH -SY ae ae ae @@ -23793,11 +23789,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +qn +ML +zb +zb +tD +tD +qn +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -23872,59 +23886,41 @@ hF hF hF fZ -ae -ae -ae -Uw -Ux -Uw -Ux -Ux -Ux -Ux -Ux -Ux -Uw -Ux -Ux -Uw -ae -ae -ae -ae -ae -Sm -Sn -Sm -Sn -Sn -Sn -Sn -Sn -Sn -Sm -Sn -Sn -Sm +ap +ap +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +Vg +Vg +Vg +Vg +Vg +ae +ae +ae +ae +ae +ae +ae +ae ae ae ae ae ae ae -SX -SY -SX -SY -SY -SY -SY -SY -SY -SX -SY -SY -SX ae ae ae @@ -23935,11 +23931,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -24014,26 +24028,8 @@ hF hF hF fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +ap +ap ae ae ae @@ -24077,11 +24073,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -24156,26 +24170,8 @@ hF hF hF fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +ap +ap ae ae ae @@ -24219,11 +24215,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -24298,26 +24312,8 @@ hF hF hF fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +ap +ap ae ae ae @@ -24361,11 +24357,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -24440,26 +24454,8 @@ hF hF hF fZ -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +ap +ap ae ae ae @@ -24503,11 +24499,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +oI ap Jz jf @@ -24582,26 +24596,8 @@ bb bb bb ar -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +ap +ap ae ae ae @@ -24645,11 +24641,29 @@ ap ap ap ap -ap -ap -ap -ap -ap +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI +oI ap Jz Jz diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index 5809fdb897..ba1c1625ce 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -29,10 +29,9 @@ /turf/simulated/mineral, /area/tether/surfacebase/outside/outside1) "aai" = ( -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" +/obj/machinery/camera/network/outside{ + icon_state = "camera"; + dir = 1 }, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/mining_main/external) @@ -49,37 +48,33 @@ /turf/simulated/floor/virgo3b, /area/tether/surfacebase/outside/outside1) "aak" = ( -/obj/machinery/light, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -28 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/mining_main/external) "aal" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/effect/floor_decal/industrial/loading{ - dir = 1 +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" }, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/mining_main/external) "aam" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/effect/floor_decal/industrial/loading, +/obj/machinery/light, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/mining_main/external) "aan" = ( -/obj/machinery/camera/network/cargo{ - dir = 1; - name = "security camera" - }, -/obj/machinery/conveyor_switch/oneway{ - convdir = -1; - id = "mining_inbound"; - name = "inbound conveyor" - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/tether/surfacebase/mining_main/external) -"aao" = ( /turf/simulated/wall, -/area/tether/surfacebase/mining_main/airlock) -"aap" = ( +/area/tether/surfacebase/cargo/mining/airlock) +"aao" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -93,8 +88,8 @@ }, /obj/effect/map_helper/airlock/door/ext_door, /turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/airlock) -"aaq" = ( +/area/tether/surfacebase/cargo/mining/airlock) +"aap" = ( /obj/machinery/door/airlock/glass_external{ frequency = 1379; icon_state = "door_locked"; @@ -108,32 +103,18 @@ }, /obj/effect/map_helper/airlock/door/ext_door, /turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/airlock) -"aar" = ( -/turf/simulated/wall, -/area/tether/surfacebase/mining_main/refinery) -"aas" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "mining_inbound" - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/tether/surfacebase/mining_main/refinery) -"aat" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "mining_outbound" - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/tether/surfacebase/mining_main/refinery) -"aau" = ( +/area/tether/surfacebase/cargo/mining/airlock) +"aaq" = ( /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/phoronlock{ frequency = 1379; scrub_id = "mining_airlock_scrubber" }, /turf/simulated/floor/tiled/techmaint, -/area/tether/surfacebase/mining_main/airlock) -"aav" = ( +/area/tether/surfacebase/cargo/mining/airlock) +"aar" = ( +/turf/simulated/wall, +/area/tether/surfacebase/cargo/mining) +"aas" = ( /obj/structure/grille, /obj/structure/railing{ dir = 4 @@ -145,8 +126,8 @@ }, /obj/effect/map_helper/airlock/atmos/chamber_pump, /turf/simulated/floor/tiled/techmaint, -/area/tether/surfacebase/mining_main/airlock) -"aaw" = ( +/area/tether/surfacebase/cargo/mining/airlock) +"aat" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 }, @@ -178,8 +159,8 @@ icon_state = "2-4" }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/airlock) -"aax" = ( +/area/tether/surfacebase/cargo/mining/airlock) +"aau" = ( /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 9 }, @@ -204,24 +185,8 @@ icon_state = "0-8" }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/airlock) -"aay" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "mining_outbound" - }, -/obj/structure/plasticflaps, -/turf/simulated/floor/virgo3b, -/area/tether/surfacebase/mining_main/refinery) -"aaz" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "mining_inbound" - }, -/obj/structure/plasticflaps, -/turf/simulated/floor/virgo3b, -/area/tether/surfacebase/mining_main/refinery) -"aaA" = ( +/area/tether/surfacebase/cargo/mining/airlock) +"aav" = ( /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/phoronlock{ frequency = 1379; scrub_id = "mining_airlock_scrubber" @@ -230,8 +195,8 @@ pixel_x = -32 }, /turf/simulated/floor/tiled/techmaint, -/area/tether/surfacebase/mining_main/airlock) -"aaB" = ( +/area/tether/surfacebase/cargo/mining/airlock) +"aaw" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 }, @@ -250,92 +215,8 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/airlock) -"aaC" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"aaD" = ( -/obj/structure/disposaloutlet{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/conveyor{ - dir = 1; - id = "mining_outbound" - }, -/turf/simulated/floor/virgo3b, -/area/tether/surfacebase/mining_main/refinery) -"aaE" = ( -/obj/machinery/disposal/deliveryChute{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk, -/turf/simulated/floor/virgo3b, -/area/tether/surfacebase/mining_main/refinery) -"aaF" = ( -/obj/random/maintenance/cargo, -/obj/random/junk, -/obj/random/junk, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"aaG" = ( -/obj/random/contraband, -/obj/random/maintenance/cargo, -/obj/random/junk, -/obj/random/junk, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"aaH" = ( -/obj/machinery/mineral/output, -/obj/machinery/conveyor{ - dir = 10; - id = "mining_interior" - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"aaI" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "mining_interior" - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"aaJ" = ( -/obj/machinery/mineral/input, -/obj/machinery/conveyor{ - dir = 4; - id = "mining_interior" - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"aaK" = ( -/obj/machinery/mineral/processing_unit, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/mining_main/refinery) -"aaL" = ( -/obj/machinery/mineral/output, -/obj/machinery/conveyor{ - dir = 4; - id = "mining_interior" - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"aaM" = ( -/obj/machinery/mineral/stacking_machine, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/mining_main/refinery) -"aaN" = ( -/obj/machinery/mineral/output, -/obj/machinery/conveyor{ - dir = 9; - id = "mining_interior" - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"aaO" = ( +/area/tether/surfacebase/cargo/mining/airlock) +"aax" = ( /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 6 }, @@ -349,8 +230,8 @@ dir = 9 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/airlock) -"aaP" = ( +/area/tether/surfacebase/cargo/mining/airlock) +"aay" = ( /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/phoronlock{ frequency = 1379; scrub_id = "mining_airlock_scrubber" @@ -359,32 +240,8 @@ pixel_x = -32 }, /turf/simulated/floor/tiled/techmaint, -/area/tether/surfacebase/mining_main/airlock) -"aaQ" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/north_stairs_one) -"aaR" = ( -/obj/machinery/mineral/unloading_machine, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/mining_main/refinery) -"aaS" = ( +/area/tether/surfacebase/cargo/mining/airlock) +"aaz" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 }, @@ -406,7 +263,304 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/airlock) +/area/tether/surfacebase/cargo/mining/airlock) +"aaA" = ( +/obj/machinery/embedded_controller/radio/airlock/phoron{ + dir = 8; + id_tag = "mining_airlock"; + pixel_x = 25 + }, +/obj/machinery/airlock_sensor/phoron{ + id_tag = "mining_airlock_sensor"; + pixel_x = 25; + pixel_y = 11 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining/airlock) +"aaB" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "mining_airlock_inner"; + locked = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/effect/map_helper/airlock/door/int_door, +/turf/simulated/floor/tiled/steel_grid, +/area/tether/surfacebase/cargo/mining/airlock) +"aaC" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "mining_airlock_inner"; + locked = 1 + }, +/obj/effect/map_helper/airlock/door/int_door, +/turf/simulated/floor/tiled/steel_grid, +/area/tether/surfacebase/cargo/mining/airlock) +"aaD" = ( +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/obj/structure/closet, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/clean, +/obj/random/tool, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"aaE" = ( +/turf/simulated/wall, +/area/construction/vacant_mining_ops) +"aaF" = ( +/obj/machinery/washing_machine, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/cargo/mining) +"aaG" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"aaH" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 6 + }, +/obj/machinery/access_button/airlock_interior{ + master_tag = "mining_airlock"; + pixel_x = 25; + pixel_y = -8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"aaI" = ( +/obj/machinery/door/airlock/maintenance/common{ + name = "Trash Pit Access"; + req_one_access = list(48) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/steel_grid, +/area/maintenance/lower/trash_pit) +"aaJ" = ( +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"aaK" = ( +/obj/structure/sign/nosmoking_2{ + pixel_x = -32 + }, +/obj/machinery/washing_machine, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/cargo/mining) +"aaL" = ( +/turf/simulated/floor/plating, +/area/construction/vacant_mining_ops) +"aaM" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"aaN" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/machinery/camera/network/cargo{ + icon_state = "camera"; + dir = 8 + }, +/obj/structure/closet/hydrant{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"aaO" = ( +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"aaP" = ( +/obj/machinery/door/airlock/glass_mining{ + name = "Warehouse" + }, +/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/steel_grid, +/area/tether/surfacebase/cargo/warehouse) +"aaQ" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/north_stairs_one) +"aaR" = ( +/obj/effect/floor_decal/techfloor, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"aaS" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) "aaT" = ( /obj/structure/cable{ d1 = 4; @@ -444,107 +598,53 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/vacant_site) "aaX" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor{ - dir = 2; - id = "mining_interior" +/obj/effect/floor_decal/borderfloor{ + dir = 1 }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"aaY" = ( -/obj/machinery/embedded_controller/radio/airlock/phoron{ - dir = 8; - id_tag = "mining_airlock"; - pixel_x = 25 +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 }, -/obj/machinery/airlock_sensor/phoron{ - id_tag = "mining_airlock_sensor"; - pixel_x = 25; - pixel_y = 11 +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"abd" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"abe" = ( +/obj/effect/floor_decal/borderfloor{ dir = 8 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/map_helper/airlock/sensor/chamber_sensor, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/airlock) -"aaZ" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_external{ - frequency = 1379; - icon_state = "door_locked"; - id_tag = "mining_airlock_inner"; - locked = 1 +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/map_helper/airlock/door/int_door, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/airlock) -"aba" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"abb" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_external{ - frequency = 1379; - icon_state = "door_locked"; - id_tag = "mining_airlock_inner"; - locked = 1 - }, -/obj/effect/map_helper/airlock/door/int_door, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/airlock) -"abc" = ( -/obj/machinery/camera/network/cargo, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/vending/wallmed_airlock{ + pixel_x = -32 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) -"abd" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "mining_inbound" - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"abe" = ( -/obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/refinery) +/area/tether/surfacebase/cargo/mining) "abf" = ( -/obj/machinery/door/airlock/maintenance/common{ - name = "Trash Pit Access"; - req_one_access = list(26,48,12) - }, /obj/structure/catwalk, -/obj/machinery/door/firedoor/glass, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, /turf/simulated/floor/plating, /area/maintenance/lower/trash_pit) "abg" = ( @@ -570,163 +670,82 @@ /turf/simulated/floor/tiled, /area/rnd/hallway) "abh" = ( -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) -"abi" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) -"abj" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "mining_inbound" - }, -/obj/structure/plasticflaps, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"abk" = ( -/obj/effect/floor_decal/industrial/loading, -/obj/machinery/light_switch{ - pixel_x = 25 - }, -/obj/structure/closet/crate, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) -"abl" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) -"abm" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 8 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"abi" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"abj" = ( +/obj/effect/floor_decal/borderfloor{ dir = 5 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 +/obj/effect/floor_decal/corner/brown/border{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"abl" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"abm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"abn" = ( -/turf/simulated/wall, -/area/tether/surfacebase/mining_main/storage) -"abo" = ( -/obj/structure/closet/firecloset, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/mining_main/storage) -"abp" = ( -/obj/machinery/mineral/input, -/obj/machinery/conveyor{ - dir = 5; - id = "mining_inbound" - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"abq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/mineral/processing_unit_console{ - density = 0; - layer = 3.3; - pixel_y = 30 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/refinery) -"abr" = ( -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 - }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) -"abs" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "mining_interior"; - layer = 3.3; - name = "refining conveyor"; - pixel_y = 14 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) -"abt" = ( -/obj/machinery/mineral/stacking_unit_console{ - density = 0; - layer = 3.3; - pixel_y = 30 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/refinery) -"abu" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/refinery) -"abv" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 }, /obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/camera/network/cargo{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/sign/nosmoking_2{ - pixel_x = -32 + d1 = 2; + d2 = 8; + icon_state = "2-8" }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"abw" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, +/area/tether/surfacebase/cargo/mining) +"abn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"abo" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -734,27 +753,117 @@ dir = 4 }, /obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 + dir = 5 }, /obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 6 - }, -/obj/machinery/access_button/airlock_interior{ - master_tag = "mining_airlock"; - pixel_x = 25; - pixel_y = -8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 + dir = 5 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo/mining) +"abp" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance/common{ + name = "Trash Pit Access"; + req_one_access = list(48,12) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"abq" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"abr" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/random/maintenance/cargo, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"abs" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/random/cigarettes, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"abt" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/random/junk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"abu" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/random/junk, +/obj/random/maintenance/clean, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"abv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/cargo{ + name = "Mining Maintenance Access"; + req_one_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/structure/catwalk, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/cargo/mining) +"abw" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 10 + }, +/obj/machinery/power/apc{ + name = "south bump"; + pixel_x = 0; + pixel_y = -32 + }, +/obj/structure/cable/green, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -13; + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) "abx" = ( /obj/effect/floor_decal/industrial/loading{ dir = 8 @@ -771,12 +880,17 @@ }, /area/security/checkpoint) "aby" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "mining_outbound" +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/random/junk, +/obj/random/junk, +/obj/random/maintenance/clean, +/obj/random/tool, +/obj/structure/cable{ + icon_state = "1-2" }, /turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) +/area/maintenance/lower/trash_pit) "abz" = ( /obj/structure/table/woodentable, /obj/machinery/light_construct{ @@ -807,13 +921,15 @@ /turf/simulated/floor/plating, /area/maintenance/lower/solars) "abC" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "mining_outbound" +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/obj/random/junk, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/plasticflaps, /turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) +/area/maintenance/lower/trash_pit) "abD" = ( /obj/structure/table/glass, /obj/effect/floor_decal/borderfloor, @@ -828,228 +944,244 @@ /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora/lab_atmos) "abE" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/obj/random/junk, +/obj/random/junk, +/obj/random/maintenance/cargo, +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/machinery/conveyor_switch/oneway{ - id = "mining_outbound"; - layer = 3.3; - name = "outbound conveyor"; - pixel_y = 14 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/refinery) +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "abF" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer{ + pixel_y = 13 + }, +/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer{ + pixel_x = 9 + }, +/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer{ + pixel_x = -7; + pixel_y = -7 + }, +/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer{ + pixel_x = -10; + pixel_y = 5 + }, +/obj/item/trash/raisins{ + desc = "This trash looks like it's had one too many."; + name = "Wasted waste" + }, +/obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - dir = 2; - pixel_y = -24 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "abG" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "south bump"; - pixel_y = -28 +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/random/cigarettes, +/obj/random/junk, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" }, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) "abH" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/lower/trash_pit) "abI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"abJ" = ( +/obj/structure/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"abK" = ( +/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/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"abL" = ( +/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/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/structure/extinguisher_cabinet{ + dir = 1; + icon_state = "extinguisher_closed"; + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"abM" = ( +/obj/structure/catwalk, +/obj/random/junk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"abN" = ( +/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, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 9 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"abO" = ( +/obj/machinery/door/airlock/maintenance/common{ + name = "Trash Pit Access"; + req_one_access = list(26,48,12) + }, +/obj/structure/catwalk, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"abP" = ( +/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/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/mining) +"abQ" = ( +/obj/structure/catwalk, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/vacant_site) +"abR" = ( +/obj/structure/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/vacant_site) +"abS" = ( +/obj/structure/catwalk, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/vacant_site) +"abT" = ( +/turf/simulated/wall, +/area/maintenance/lower/mining_eva) +"abU" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 }, /obj/structure/cable/green{ d1 = 2; d2 = 8; icon_state = "2-8" }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable/green{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) -"abJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) -"abK" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"abL" = ( -/turf/simulated/wall, -/area/tether/surfacebase/mining_main/eva) -"abM" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/eva) -"abN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) -"abO" = ( -/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, -/area/tether/surfacebase/mining_main/refinery) -"abP" = ( -/turf/simulated/wall, -/area/tether/surfacebase/mining_main/uxstorage) -"abQ" = ( -/obj/machinery/light, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9; - pixel_y = 0 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) -"abR" = ( -/obj/machinery/newscaster{ - pixel_x = 0; - pixel_y = -30 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/refinery) -"abS" = ( -/obj/machinery/camera/network/cargo{ - dir = 1; - name = "security camera" - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) -"abT" = ( -/turf/simulated/wall, -/area/maintenance/lower/mining_eva) -"abU" = ( -/obj/machinery/door/airlock/maintenance/common{ - name = "Trash Pit Access"; - req_one_access = list(48) - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/refinery) +/area/tether/surfacebase/cargo/mining) "abV" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/bordercorner{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"abW" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 8 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/vending/wallmed_airlock{ - pixel_x = -32 +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo/mining) "abX" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, @@ -1057,38 +1189,21 @@ /turf/simulated/floor/plating, /area/maintenance/lower/trash_pit) "abY" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 +/obj/machinery/door/airlock/glass_mining{ + name = "Warehouse" }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/machinery/light_switch{ - pixel_y = 25 - }, -/obj/machinery/washing_machine, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/turf/simulated/floor/tiled/steel_grid, +/area/tether/surfacebase/cargo/warehouse) "abZ" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/structure/closet/secure_closet/miner, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/obj/structure/closet/crate, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "aca" = ( -/obj/effect/floor_decal/borderfloor{ +/obj/machinery/light{ dir = 1 }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/machinery/washing_machine, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "acb" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -1102,105 +1217,76 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/xenoflora) "acc" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/structure/closet/secure_closet/miner, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/turf/simulated/wall, +/area/tether/surfacebase/cargo/warehouse) "acd" = ( -/obj/machinery/light{ - dir = 1 +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - dir = 1; - pixel_y = 24; - req_access = list() - }, -/obj/structure/closet/secure_closet/miner, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"ace" = ( -/obj/effect/floor_decal/techfloor{ +/obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 4 }, -/obj/structure/railing{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) +"ace" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 }, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "acf" = ( -/obj/machinery/recharge_station, -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 9 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 10 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"acg" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 +/obj/machinery/light_switch{ + pixel_x = 25 }, /obj/machinery/camera/network/cargo, -/obj/structure/sign/nosmoking_2{ - pixel_y = 30 +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 }, -/obj/structure/closet/secure_closet/miner, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/obj/machinery/conveyor_switch/oneway{ + convdir = 1; + id = "gloriouscargopipeline"; + name = "Mining Ops conveyor switch"; + pixel_x = 10; + pixel_y = 5; + req_access = list(48); + req_one_access = list(48) + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) +"acg" = ( +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/lower/mining_eva) "ach" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 5 +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 5 +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 5 - }, -/obj/machinery/status_display{ - pixel_x = 32; - pixel_y = 0 - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "aci" = ( /turf/simulated/mineral, /area/storage/surface_eva/external) @@ -1221,55 +1307,34 @@ /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) "ack" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "acl" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 5 +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 4 - }, -/obj/machinery/light_switch{ - pixel_x = 25 - }, -/obj/machinery/camera/network/cargo, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "acm" = ( -/obj/structure/ore_box, -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/uxstorage) +/obj/structure/window/reinforced, +/obj/structure/closet/crate, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "acn" = ( -/obj/structure/ore_box, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 5 - }, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/uxstorage) +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "aco" = ( /obj/structure/railing, /obj/structure/railing{ @@ -1380,12 +1445,17 @@ /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) "acx" = ( -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"acy" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "acz" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -1399,114 +1469,24 @@ /obj/machinery/vending/loadout, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) -"acA" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/structure/table/rack, -/obj/item/clothing/suit/space/void/mining, -/obj/item/clothing/mask/breath, -/obj/item/clothing/head/helmet/space/void/mining, -/obj/item/weapon/mining_scanner, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"acB" = ( -/obj/structure/table/rack, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 5 - }, -/obj/item/weapon/pickaxe, -/obj/item/weapon/tool/wrench, -/obj/item/weapon/tool/crowbar, -/obj/item/weapon/shovel, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"acC" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/glass_mining{ - name = "Mining Operations" - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/eva) -"acD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) "acE" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" }, -/obj/effect/landmark/start{ - name = "Shaft Miner" +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 28 }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"acF" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Shaft Miner" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"acG" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/bordercorner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "acH" = ( -/obj/machinery/light{ - dir = 1 +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"acI" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/bordercorner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "acJ" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, @@ -1516,41 +1496,55 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "acK" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 10 + }, +/obj/machinery/status_display{ + pixel_y = 30 + }, +/obj/machinery/button/remote/blast_door{ + id = "mine_warehouse"; + name = "Warehouse Door Control"; + pixel_x = -26; + pixel_y = 0; + req_access = list(31) + }, +/obj/structure/closet/firecloset, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) +/area/tether/surfacebase/cargo) "acL" = ( /obj/effect/floor_decal/borderfloor{ - dir = 4 + dir = 1 }, /obj/effect/floor_decal/corner/brown/border{ - dir = 4 + dir = 1 }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 5 +/obj/machinery/light{ + dir = 1 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) +/area/tether/surfacebase/cargo) "acM" = ( -/obj/structure/ore_box, -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/effect/floor_decal/borderfloor{ - dir = 8 +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 10 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/uxstorage) +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/tether/surfacebase/cargo) "acN" = ( /obj/structure/cable/ender{ icon_state = "1-2"; @@ -1565,29 +1559,43 @@ /turf/simulated/floor/virgo3b, /area/tether/surfacebase/outside/outside1) "acO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/alarm{ + alarm_id = "anomaly_testing"; + breach_detection = 0; + dir = 8; + frequency = 1439; + pixel_x = 22; + pixel_y = 0; + report_danger_level = 0 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/glass_mining{ - name = "Production Area"; - req_access = list(48) - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/eva) +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "acP" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_mining{ - name = "Production Area"; - req_access = list(48) +/obj/effect/floor_decal/borderfloor{ + dir = 1 }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/eva) +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) "acQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 10; @@ -1617,11 +1625,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo/mining) "acS" = ( /obj/machinery/atmospherics/pipe/tank/air{ dir = 4 @@ -1650,18 +1658,13 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "acU" = ( -/obj/machinery/light{ - dir = 8 +/obj/structure/railing, +/obj/machinery/conveyor{ + dir = 8; + id = "surfacecargo" }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 8 - }, -/obj/vehicle/train/engine, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo) "acV" = ( /obj/structure/cable/green{ d1 = 4; @@ -1692,20 +1695,8 @@ /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) "acY" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 - }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo) "acZ" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -1713,18 +1704,18 @@ /obj/effect/floor_decal/corner/brown/border{ dir = 1 }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 }, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 4 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 2 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo) "ada" = ( /obj/structure/cable/green{ d1 = 4; @@ -1739,24 +1730,29 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "adb" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloor{ + dir = 1 }, -/obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo) "adc" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/brown/bordercorner2, -/obj/structure/reagent_dispensers/watertank, +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/obj/machinery/camera/network/cargo, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo) "add" = ( /obj/structure/cable/green{ d1 = 4; @@ -1767,51 +1763,21 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "ade" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"adf" = ( /obj/effect/floor_decal/borderfloor{ - dir = 9 + dir = 5 }, /obj/effect/floor_decal/corner/brown/border{ - dir = 9 + dir = 5 }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 1 +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 1 - }, -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22 - }, -/obj/machinery/mineral/equipment_vendor, +/obj/structure/flora/pottedplant/stoutbush, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"adg" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) +/area/tether/surfacebase/cargo) +"adf" = ( +/turf/simulated/wall, +/area/tether/surfacebase/cargo) "adh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -1884,23 +1850,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) -"adm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/maintenance/cargo{ - name = "Mining Maintenance Access"; - req_one_access = list(48) - }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/mining_main/storage) "adn" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; @@ -1925,11 +1874,42 @@ /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) "adq" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 8 +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/obj/effect/floor_decal/corner/brown/bordercorner{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) +"adr" = ( +/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, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) +"ads" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/shutters{ + dir = 8; + id = "mine_warehouse"; + name = "Warehouse Shutters" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -1937,30 +1917,22 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/warehouse) +"adt" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"adr" = ( -/obj/effect/landmark/start{ - name = "Shaft Miner" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"ads" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"adt" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo) "adu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -1982,105 +1954,134 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "adv" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"adw" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"adx" = ( -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"ady" = ( -/obj/effect/floor_decal/borderfloor/corner, -/obj/effect/floor_decal/corner/brown/bordercorner, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"adz" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/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" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"adA" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/bordercorner{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"adB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"adC" = ( -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"adD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, /obj/structure/cable/green{ d1 = 2; d2 = 8; icon_state = "2-8" }, +/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/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"adw" = ( +/obj/machinery/atmospherics/pipe/cap/visible/scrubbers, +/turf/simulated/floor/plating, +/area/construction/vacant_mining_ops) +"adx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/cap/visible/supply, +/turf/simulated/floor/plating, +/area/construction/vacant_mining_ops) +"ady" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/construction/vacant_mining_ops) +"adz" = ( +/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/construction/vacant_mining_ops) +"adA" = ( +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/railing, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"adB" = ( +/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 = 2; + icon_state = "pipe-c" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"adC" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; icon_state = "1-8" }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"adE" = ( -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/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, -/area/tether/surfacebase/mining_main/uxstorage) +/area/tether/surfacebase/cargo) +"adD" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"adE" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/window/northright{ + dir = 2; + name = "Mailing Room"; + req_access = list(50) + }, +/obj/structure/noticeboard{ + pixel_x = 32 + }, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "surfcargooffice"; + layer = 3.3; + name = "Cargo Office Shutters" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/office) "adF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -2101,18 +2102,9 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "adG" = ( -/obj/machinery/light, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 9 - }, -/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo) "adH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -2234,73 +2226,48 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "adP" = ( -/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/junction, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"adQ" = ( -/obj/machinery/cell_charger, -/obj/structure/table/steel, +/obj/structure/table/glass, /obj/effect/floor_decal/borderfloor{ - dir = 10 + dir = 4 }, /obj/effect/floor_decal/corner/brown/border{ - dir = 10 + dir = 4 + }, +/obj/machinery/computer/guestpass{ + dir = 8; + pixel_x = 25 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"adR" = ( -/obj/structure/table/steel, -/obj/item/device/suit_cooling_unit, -/obj/item/device/suit_cooling_unit, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo) "adS" = ( -/obj/structure/table/steel, -/obj/item/weapon/storage/toolbox/mechanical, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "adT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/shutters{ + dir = 8; + id = "mine_warehouse"; + name = "Warehouse Shutters" }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo/warehouse) "adU" = ( -/obj/structure/table/rack, -/obj/effect/floor_decal/borderfloor{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 6 +/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 }, -/obj/item/weapon/pickaxe, -/obj/item/weapon/tool/wrench, -/obj/item/weapon/tool/crowbar, -/obj/item/weapon/shovel, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) +/area/tether/surfacebase/cargo) "adV" = ( /obj/structure/table/glass, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -2344,130 +2311,156 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "adX" = ( -/obj/item/weapon/pickaxe, -/obj/structure/table/steel, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/brown/bordercorner2, -/obj/item/device/destTagger{ +/obj/structure/table/standard, +/obj/item/weapon/stamp/cargo, +/obj/item/weapon/stamp/denied{ pixel_x = 4; - pixel_y = 3 + pixel_y = -2 }, -/obj/item/weapon/packageWrap, -/obj/item/weapon/paper{ - desc = ""; - info = "There is a pipe you can send stuff through in the warehouse. This is primarily a direct pipeline between mining and cargo. However, it can mail things to the 'Research' tag. If you tag anything else, it will just go to cargo! Keep it in mind."; - name = "note to mining staff" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"adY" = ( -/obj/structure/ore_box, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/machinery/alarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/effect/floor_decal/borderfloor{ +/obj/item/weapon/clipboard, +/obj/item/weapon/folder/yellow, +/obj/effect/floor_decal/borderfloor/corner2{ dir = 4 }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/uxstorage) -"adZ" = ( -/obj/machinery/suit_cycler/mining, -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"aea" = ( -/obj/structure/table/rack, -/obj/item/clothing/suit/space/void/mining, -/obj/item/clothing/mask/breath, -/obj/item/clothing/head/helmet/space/void/mining, -/obj/item/weapon/mining_scanner, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"aeb" = ( -/obj/effect/landmark/start{ - name = "Shaft Miner" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"aec" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 10 - }, /obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 + dir = 1 }, /obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 9 + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 1 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"aed" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, +/area/tether/surfacebase/cargo/office) +"adY" = ( +/obj/machinery/button/remote/blast_door{ + id = "mine_warehouse"; + name = "Warehouse Door Control"; + pixel_x = -26; + pixel_y = 24; + req_access = list(31) + }, +/obj/machinery/button/remote/blast_door{ + id = "surfcargooffice"; + name = "Office Shutters"; + pixel_x = -34; + pixel_y = 24; + req_access = list(31) + }, +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/office) +"adZ" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 8 }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 1 + }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"aee" = ( -/obj/effect/floor_decal/steeldecal/steel_decals6, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"aef" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, +/area/tether/surfacebase/cargo) +"aea" = ( +/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 = 2; - icon_state = "1-2" + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"aeb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"aec" = ( +/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/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"aed" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/office) +"aee" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"aef" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) "aeg" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 10 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 8 +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/uxstorage) +/area/tether/surfacebase/cargo/office) "aeh" = ( -/obj/structure/dispenser/oxygen, -/obj/effect/floor_decal/borderfloor{ - dir = 6 +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 6 +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/uxstorage) +/area/tether/surfacebase/cargo/office) "aei" = ( /obj/effect/floor_decal/techfloor{ dir = 10 @@ -2574,17 +2567,35 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "aer" = ( -/turf/simulated/wall, -/area/tether/surfacebase/mining_main/ore) -"aes" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_mining{ - name = "Warehouse" +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/ore) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"aes" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) "aet" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -2608,22 +2619,22 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "aeu" = ( -/obj/machinery/door/airlock/glass_mining{ - name = "Mining Operations" +/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/door/firedoor/glass, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/eva) +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) "aev" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_mining{ - name = "Mining Operations" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/eva) +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) "aew" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -2715,38 +2726,43 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) "aeC" = ( -/obj/structure/sign/department/miner_dock{ - name = "MINING" - }, -/turf/simulated/wall, -/area/tether/surfacebase/mining_main/eva) -"aeD" = ( -/obj/effect/floor_decal/rust, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"aeE" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"aeD" = ( +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloor{ dir = 4 }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 }, -/obj/vehicle/train/trolley, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"aeE" = ( +/obj/structure/railing, +/obj/machinery/conveyor{ + dir = 8; + id = "surfacecargo" + }, +/obj/structure/plasticflaps, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) "aeF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) +/area/tether/surfacebase/cargo/warehouse) "aeG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -2786,16 +2802,13 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/north_stairs_one) -"aeI" = ( -/obj/machinery/light_switch{ - pixel_x = 25 - }, -/obj/machinery/camera/network/cargo, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) "aeJ" = ( -/turf/simulated/wall, -/area/tether/surfacebase/mining_main/lobby) +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "aeK" = ( /obj/machinery/light/small, /obj/effect/floor_decal/industrial/warning/corner{ @@ -2820,24 +2833,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/north_stairs_one) -"aeL" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 - }, -/obj/structure/cable/green{ - icon_state = "0-2" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "aeM" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, @@ -2856,17 +2851,13 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) "aeN" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 +/obj/machinery/conveyor{ + dir = 8; + id = "gloriouscargopipeline" }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/obj/structure/plasticflaps, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "aeO" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock{ @@ -2903,46 +2894,46 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/north_stairs_one) "aeQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/door/airlock/multi_tile/glass{ + name = "Surface Cargo" }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 4 +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/steeldecal/steel_decals_central1{ + dir = 8 }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/monofloor{ + dir = 8 + }, +/area/tether/surfacebase/surface_one_hall) "aeR" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/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, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"aeS" = ( /obj/effect/floor_decal/borderfloor{ - dir = 1 + dir = 10 }, /obj/effect/floor_decal/corner/brown/border{ - dir = 1 + dir = 10 }, /obj/effect/floor_decal/borderfloor/corner2{ - dir = 4 + dir = 8 }, /obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 4 - }, -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ dir = 8 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"aeS" = ( -/obj/structure/table/glass, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/area/tether/surfacebase/cargo) "aeT" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -2965,19 +2956,17 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) "aeU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 9 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo) "aeV" = ( /obj/structure/stairs/north, /turf/simulated/floor/virgo3b, @@ -3012,34 +3001,22 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/north_stairs_one) "aeY" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo) "aeZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 9 }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo) "afa" = ( /obj/structure/cable{ d1 = 4; @@ -3067,17 +3044,16 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/north_stairs_one) "afb" = ( -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/machinery/computer/supplycomp{ + icon_state = "computer"; dir = 1 }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/brown/bordercorner2, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo) "afc" = ( /obj/structure/cable{ d1 = 4; @@ -3117,33 +3093,42 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) "afe" = ( -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"aff" = ( -/obj/effect/floor_decal/rust, +/obj/machinery/door/airlock/glass_mining{ + id_tag = "cargodoor"; + name = "Cargo Office"; + req_access = list(31); + req_one_access = list() + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"afg" = ( -/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/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) +/area/tether/surfacebase/cargo/office) +"aff" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/steeldecal/steel_decals_central1{ + dir = 4 + }, +/turf/simulated/floor/tiled/monofloor{ + dir = 4 + }, +/area/tether/surfacebase/cargo) +"afg" = ( +/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, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/office) "afh" = ( /obj/effect/floor_decal/spline/plain{ dir = 4 @@ -3172,79 +3157,102 @@ /turf/simulated/floor/tiled/monofloor, /area/tether/surfacebase/surface_one_hall) "afi" = ( -/obj/effect/floor_decal/steeldecal/steel_decals6{ +/obj/structure/bed/chair{ dir = 1 }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/brown/bordercorner2, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"afj" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"afk" = ( +/obj/structure/reagent_dispensers/water_cooler/full, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"afl" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 6 + }, +/obj/structure/flora/pottedplant/stoutbush, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) +"afm" = ( +/obj/machinery/door/airlock/maintenance/cargo{ + name = "Mining Maintenance Access"; + req_one_access = list(48) + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/tether/surfacebase/cargo/warehouse) +"afn" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/steeldecal/steel_decals_central1{ + dir = 8 + }, +/obj/machinery/door/airlock/multi_tile/glass{ + name = "Surface Cargo" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monofloor{ + dir = 8 + }, +/area/tether/surfacebase/cargo) +"afo" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/machinery/camera/network/cargo{ + icon_state = "camera"; + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"afj" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"afk" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"afl" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"afm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"afn" = ( -/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/effect/floor_decal/steeldecal/steel_decals4, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) -"afo" = ( -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/area/tether/surfacebase/cargo) "afp" = ( /obj/structure/cable{ d1 = 4; @@ -3277,16 +3285,34 @@ /turf/simulated/floor/tiled, /area/storage/primary) "afs" = ( -/obj/structure/table/glass, /obj/effect/floor_decal/borderfloor{ - dir = 1 + dir = 8 }, /obj/effect/floor_decal/corner/brown/border{ - dir = 1 + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 }, -/obj/machinery/camera/network/cargo, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/area/tether/surfacebase/cargo) "aft" = ( /obj/machinery/camera/network/civilian{ dir = 2 @@ -3295,25 +3321,21 @@ /turf/simulated/floor/tiled, /area/storage/primary) "afu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/structure/cable/green{ - d1 = 4; + d1 = 1; d2 = 8; - icon_state = "4-8" + icon_state = "1-8" }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) +/area/tether/surfacebase/cargo/office) "afv" = ( /obj/structure/closet/firecloset, /turf/simulated/floor/tiled, @@ -3330,33 +3352,41 @@ /turf/simulated/floor/tiled, /area/storage/primary) "afx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +/obj/effect/floor_decal/borderfloor{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/structure/sign/nosmoking_2{ + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/area/tether/surfacebase/cargo) "afy" = ( +/obj/structure/table/standard, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen/red{ + pixel_x = 2; + pixel_y = 6 + }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/glass_mining{ - name = "Mining Operations" - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/eva) +/obj/structure/disposalpipe/junction/yjunction, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo/office) "afz" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -3376,19 +3406,34 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) "afB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/effect/floor_decal/borderfloor{ + dir = 8 }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" + icon_state = "intact-scrubbers"; + dir = 5 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) +/area/tether/surfacebase/cargo) "afC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/rack, @@ -3398,44 +3443,58 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) "afD" = ( -/obj/vehicle/train/trolley, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ +/obj/effect/floor_decal/borderfloor{ dir = 4 }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/cargo) "afE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) +/area/tether/surfacebase/cargo/office) "afF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/effect/floor_decal/borderfloor{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/effect/floor_decal/corner/brown/border{ dir = 4 }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 }, -/obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) +/area/tether/surfacebase/cargo) "afG" = ( /obj/structure/bed/chair, /obj/machinery/camera/network/civilian, @@ -3451,116 +3510,100 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/tether/surfacebase/tram) "afI" = ( -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/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/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "surfcargooffice"; + layer = 3.3; + name = "Cargo Office Shutters" }, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) +/turf/simulated/floor/plating, +/area/tether/surfacebase/cargo/office) "afJ" = ( -/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/effect/floor_decal/steeldecal/steel_decals6{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) -"afK" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/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, -/area/tether/surfacebase/mining_main/eva) -"afL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/uxstorage) -"afM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, /obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/effect/floor_decal/steeldecal/steel_decals_central1{ - dir = 1 + dir = 4 }, /turf/simulated/floor/tiled/monofloor{ - dir = 1 - }, -/area/tether/surfacebase/mining_main/eva) -"afN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"afO" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ +/area/tether/surfacebase/surface_one_hall) +"afK" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/structure/disposalpipe/junction{ dir = 8 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"afP" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/area/tether/surfacebase/surface_one_hall) +"afL" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 }, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) +"afM" = ( +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + icon_state = "extinguisher_closed"; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) +"afN" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "gloriouscargopipeline" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) +"afO" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/sign/warning{ + desc = "A warning sign. It has great big words saying 'Surface Cargo Deliveries. Stay behind the railings when active!' on it."; + name = "Surface Cargo Delivery"; + pixel_y = 32 + }, +/obj/effect/floor_decal/industrial/loading, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/area/tether/surfacebase/cargo) "afQ" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/random/maintenance/cargo, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/sign/warning/moving_parts{ + desc = "A warning sign for moving parts. This one states 'Put your gathered ore here for processing!' on it."; + name = "To Mining Operations Processing"; + pixel_x = -32 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "afR" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 5 @@ -3569,25 +3612,32 @@ /turf/simulated/floor/virgo3b, /area/tether/surfacebase/outside/outside1) "afS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 1 }, /obj/machinery/light_switch{ - pixel_x = 25 + dir = 2; + name = "light switch "; + pixel_x = 10; + pixel_y = 32 }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 4 +/obj/machinery/conveyor_switch{ + id = "surfacecargo"; + name = "Surface Cargo Delivery conveyor switch"; + pixel_x = 0; + pixel_y = 0 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/uxstorage) +/area/tether/surfacebase/cargo/office) "afT" = ( /turf/simulated/floor/tiled, /area/storage/primary) @@ -3664,24 +3714,34 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) "age" = ( -/obj/vehicle/train/trolley, -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22; - pixel_y = 0 +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) +/turf/simulated/floor/plating, +/area/maintenance/lower/mining_eva) "agf" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/structure/closet/crate, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 1 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + name = "Surface Cargo"; + sortType = "Surface Cargo" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/surface_one_hall) "agg" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) +/obj/machinery/disposal/deliveryChute{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "gloriouscargopipeline" + }, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/plating, +/area/tether/surfacebase/cargo/warehouse) "agh" = ( /obj/turbolift_map_holder/tether{ dir = 4 @@ -3695,50 +3755,32 @@ }, /area/tether/elevator) "agj" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 10 +/obj/machinery/button/remote/blast_door{ + id = "mine_warehouse"; + name = "Warehouse Door Control"; + pixel_x = 0; + pixel_y = -22; + req_access = list(31) }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 10 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/turf/simulated/floor/tiled/steel_dirty, +/area/tether/surfacebase/cargo/warehouse) "agk" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/tiled, /area/rnd/xenoarch_storage) -"agl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/junction, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "agm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"agn" = ( -/obj/machinery/hologram/holopad, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/area/tether/surfacebase/cargo/mining) "ago" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 8; + icon_state = "pipe-j2" }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/area/tether/surfacebase/surface_one_hall) "agp" = ( /obj/machinery/alarm{ dir = 4; @@ -3749,19 +3791,15 @@ /turf/simulated/floor/tiled, /area/rnd/xenoarch_storage) "agq" = ( -/obj/structure/bed/chair{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"agr" = ( -/obj/structure/reagent_dispensers/water_cooler/full, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/area/tether/surfacebase/cargo) "ags" = ( /obj/machinery/light{ dir = 4 @@ -3802,21 +3840,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/xenoarch_storage) -"agx" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"agy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "agz" = ( /obj/structure/reagent_dispensers/watertank, /turf/simulated/floor/tiled, @@ -3851,33 +3874,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/xenoarch_storage) -"agD" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"agE" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/random/cigarettes, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) -"agF" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/random/junk, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) -"agG" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/random/junk, -/obj/random/maintenance/clean, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "agH" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, @@ -3887,14 +3883,10 @@ /turf/simulated/floor/plating, /area/maintenance/lower/trash_pit) "agI" = ( -/obj/structure/table/standard, -/obj/random/tech_supply, -/obj/random/tech_supply, -/obj/random/tech_supply, -/obj/random/tech_supply, /obj/machinery/newscaster{ pixel_x = -30 }, +/obj/structure/reagent_dispensers/foam, /turf/simulated/floor/tiled, /area/storage/primary) "agJ" = ( @@ -3926,13 +3918,6 @@ "agM" = ( /turf/simulated/wall, /area/tether/surfacebase/surface_one_hall) -"agN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "agO" = ( /obj/structure/table/glass, /obj/machinery/status_display{ @@ -3949,15 +3934,6 @@ }, /turf/simulated/floor/tiled/white, /area/rnd/chemistry_lab) -"agP" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/random/junk, -/obj/random/junk, -/obj/random/maintenance/clean, -/obj/random/tool, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "agQ" = ( /obj/structure/railing{ dir = 8 @@ -4085,51 +4061,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) -"ahb" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "south bump"; - pixel_y = -28 - }, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/tether/surfacebase/mining_main/external) "ahc" = ( /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ scrub_id = "atrium" }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/surface_one_hall) -"ahd" = ( -/obj/structure/table/glass, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 4 - }, -/obj/machinery/newscaster{ - pixel_x = 30; - pixel_y = 0 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"ahe" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "ahf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -4196,23 +4133,6 @@ "ahl" = ( /turf/simulated/wall, /area/hallway/lower/first_west) -"ahm" = ( -/obj/machinery/recharger, -/obj/structure/table/steel, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 8 - }, -/obj/machinery/requests_console{ - department = "Cargo Bay"; - departmentType = 2; - pixel_x = -30; - pixel_y = 0 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) "ahn" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -4289,39 +4209,9 @@ /obj/structure/railing, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/surface_one_hall) -"ahv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"ahw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "ahx" = ( /turf/simulated/wall, /area/tether/surfacebase/emergency_storage/atrium) -"ahy" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/obj/random/junk, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "ahz" = ( /obj/structure/railing{ dir = 8 @@ -4370,14 +4260,6 @@ }, /turf/simulated/floor/plating, /area/storage/surface_eva) -"ahF" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) "ahG" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 @@ -4388,9 +4270,6 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "ahH" = ( -/obj/machinery/chemical_analyzer{ - dir = 4 - }, /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -4625,18 +4504,6 @@ "ahX" = ( /turf/simulated/wall, /area/tether/surfacebase/north_stairs_one) -"ahY" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable/green{ - icon_state = "0-4" - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) "ahZ" = ( /obj/structure/sign/directions/cargo{ dir = 4 @@ -4751,17 +4618,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) -"aih" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/obj/machinery/computer/supplycomp{ - icon_state = "computer"; - dir = 1 - }, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/brown/bordercorner2, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "aii" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -4788,35 +4644,6 @@ }, /turf/simulated/floor/tiled/white, /area/rnd/chemistry_lab) -"aik" = ( -/obj/machinery/light, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"ail" = ( -/obj/effect/floor_decal/rust, -/obj/structure/plasticflaps, -/obj/machinery/disposal/deliveryChute{ - dir = 4 - }, -/obj/machinery/conveyor{ - dir = 4; - id = "gloriouscargopipeline" - }, -/obj/structure/disposalpipe/trunk, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/ore) -"aim" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "ain" = ( /obj/machinery/chem_master{ dir = 8 @@ -4833,16 +4660,6 @@ }, /turf/simulated/floor/tiled/white, /area/rnd/chemistry_lab) -"aio" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/brown/bordercorner2, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "aip" = ( /obj/structure/table/glass, /obj/item/weapon/storage/box/beakers, @@ -4859,17 +4676,6 @@ /obj/item/weapon/storage/fancy/vials, /turf/simulated/floor/tiled/white, /area/rnd/chemistry_lab) -"aiq" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/obj/machinery/power/apc{ - dir = 2; - name = "south bump"; - pixel_y = -28 - }, -/obj/structure/cable/green, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) "air" = ( /obj/structure/closet/firecloset, /turf/simulated/floor/plating, @@ -4886,47 +4692,6 @@ /obj/effect/floor_decal/industrial/outline/blue, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/emergency_storage/atrium) -"aiu" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 2; - name = "Mining Storage"; - req_one_access = list(48) - }, -/obj/machinery/door/firedoor/glass, -/obj/effect/floor_decal/steeldecal/steel_decals_central1, -/turf/simulated/floor/tiled/monofloor, -/area/tether/surfacebase/mining_main/eva) -"aiv" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/obj/random/junk, -/obj/random/junk, -/obj/random/maintenance/cargo, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) -"aiw" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 28 - }, -/obj/structure/cable/green, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/uxstorage) -"aix" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/random/cigarettes, -/obj/random/junk, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "aiy" = ( /turf/simulated/wall, /area/storage/surface_eva/external) @@ -4964,17 +4729,6 @@ }, /turf/simulated/floor/plating, /area/engineering/atmos) -"aiC" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/obj/structure/cable/green{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "aiD" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -4994,26 +4748,6 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) -"aiF" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) -"aiG" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "aiH" = ( /obj/structure/bed/chair/office/light{ dir = 4 @@ -5120,11 +4854,6 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/monofloor, /area/tether/surfacebase/north_stairs_one) -"aiQ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "aiR" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -5280,20 +5009,6 @@ dir = 1 }, /area/tether/surfacebase/surface_one_hall) -"ajb" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) "ajc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -5325,25 +5040,6 @@ /obj/machinery/chemical_dispenser/xenoflora/full, /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora) -"aje" = ( -/obj/item/stack/flag/green{ - pixel_x = -4; - pixel_y = 0 - }, -/obj/item/stack/flag/red, -/obj/item/stack/flag/yellow{ - pixel_x = 4 - }, -/obj/structure/table/steel, -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 6 - }, -/obj/item/weapon/storage/box/nifsofts_mining, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/storage) "ajf" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -5377,27 +5073,6 @@ }, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/engineering/atmos_intake) -"aji" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 6 - }, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 6 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/eva) "ajj" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -5419,27 +5094,6 @@ }, /turf/simulated/floor/tiled, /area/engineering/atmos) -"ajl" = ( -/obj/structure/catwalk, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) -"ajm" = ( -/obj/effect/floor_decal/techfloor, -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc{ - dir = 2; - name = "south bump"; - pixel_y = -24 - }, -/obj/structure/cable/green, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "ajn" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ dir = 4 @@ -5813,15 +5467,6 @@ }, /turf/simulated/floor/plating, /area/holodeck_control) -"ajW" = ( -/obj/structure/disposalpipe/segment, -/turf/simulated/wall, -/area/tether/surfacebase/mining_main/refinery) -"ajX" = ( -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) "ajY" = ( /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_one) @@ -5832,65 +5477,10 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) -"aka" = ( -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) "akb" = ( /obj/structure/grille, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/public_garden_one) -"akc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"akd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/wall, -/area/tether/surfacebase/mining_main/refinery) -"ake" = ( -/obj/structure/disposaloutlet{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/conveyor{ - dir = 8; - id = "mining_inbound" - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) -"akf" = ( -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/refinery) -"akg" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - dir = 5 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/obj/structure/closet, -/obj/random/maintenance/cargo, -/obj/random/maintenance/cargo, -/obj/random/maintenance/clean, -/obj/random/tool, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "akh" = ( /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ scrub_id = "atrium" @@ -5903,15 +5493,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) -"akj" = ( -/obj/machinery/disposal/deliveryChute{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) "akk" = ( /obj/structure/grille, /obj/structure/railing, @@ -5940,17 +5521,6 @@ /obj/random/drinkbottle, /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenence) -"akp" = ( -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/random/junk, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "akq" = ( /obj/effect/floor_decal/techfloor{ dir = 9 @@ -6026,6 +5596,7 @@ "akB" = ( /obj/effect/floor_decal/rust, /obj/effect/decal/cleanable/dirt, +/obj/random/cutout, /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenence) "akC" = ( @@ -6594,27 +6165,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) -"alu" = ( -/obj/machinery/door/airlock/glass_mining{ - name = "Warehouse" - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/mining_main/ore) -"alv" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance/common{ - name = "Trash Pit Access"; - req_one_access = list(48,12) - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "alw" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 @@ -6733,116 +6283,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) -"alE" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 4 - }, -/obj/structure/cable/green{ - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"alF" = ( -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"alG" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 9 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 10 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 10 - }, -/obj/machinery/status_display{ - pixel_y = 30 - }, -/obj/machinery/button/remote/blast_door{ - id = "mine_warehouse"; - name = "Warehouse Door Control"; - pixel_x = -26; - pixel_y = 0; - req_access = list(31) - }, -/obj/structure/closet/firecloset, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"alH" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"alI" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"alJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"alK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/junction{ - icon_state = "pipe-j2"; - dir = 2 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"alL" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 5 - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, -/obj/structure/flora/pottedplant/stoutbush, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "alM" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 @@ -7013,62 +6453,9 @@ /obj/random/junk, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) -"alY" = ( -/obj/effect/floor_decal/rust, -/obj/machinery/conveyor{ - dir = 4; - id = "gloriouscargopipeline" - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"alZ" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"ama" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/blast/shutters{ - dir = 8; - id = "mine_warehouse"; - name = "Warehouse Shutters" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"amb" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "amc" = ( /turf/simulated/wall, -/area/tether/surfacebase/mining_main/surfacecargo) -"amd" = ( -/obj/structure/table/glass, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 4 - }, -/obj/machinery/computer/guestpass{ - dir = 8; - pixel_x = 25 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/area/tether/surfacebase/cargo/office) "ame" = ( /obj/effect/floor_decal/techfloor{ dir = 10 @@ -7214,109 +6601,10 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) -"amr" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"ams" = ( -/obj/structure/disposalpipe/segment, -/turf/simulated/wall, -/area/tether/surfacebase/mining_main/ore) -"amt" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"amu" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/blast/shutters{ - dir = 8; - id = "mine_warehouse"; - name = "Warehouse Shutters" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"amv" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "amw" = ( /obj/structure/sign/department/cargo, /turf/simulated/wall, -/area/tether/surfacebase/mining_main/surfacecargo) -"amx" = ( -/obj/machinery/door/firedoor/glass, -/obj/effect/floor_decal/steeldecal/steel_decals_central1{ - dir = 8 - }, -/obj/machinery/door/airlock/multi_tile/glass{ - name = "Mining Lobby" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/monofloor{ - dir = 8 - }, -/area/tether/surfacebase/mining_main/lobby) -"amy" = ( -/obj/machinery/door/firedoor/glass, -/obj/effect/floor_decal/steeldecal/steel_decals_central1{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/monofloor{ - dir = 4 - }, -/area/tether/surfacebase/mining_main/lobby) -"amz" = ( -/obj/machinery/button/remote/blast_door{ - id = "mine_warehouse"; - name = "Warehouse Door Control"; - pixel_x = -26; - pixel_y = 24; - req_access = list(31) - }, -/obj/machinery/button/remote/blast_door{ - id = "surfcargooffice"; - name = "Office Shutters"; - pixel_x = -34; - pixel_y = 24; - req_access = list(31) - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/landmark/start{ - name = "Cargo Technician" - }, -/obj/structure/bed/chair/office/dark{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) +/area/tether/surfacebase/cargo/office) "amA" = ( /obj/effect/floor_decal/techfloor{ dir = 10 @@ -7489,25 +6777,10 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) -"amN" = ( -/obj/machinery/light, -/obj/machinery/conveyor{ - dir = 4; - id = "gloriouscargopipeline" - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"amO" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "gloriouscargopipeline" - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) "amP" = ( /obj/machinery/camera/network/cargo, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) +/area/tether/surfacebase/cargo/office) "amQ" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -7516,16 +6789,6 @@ /obj/random/junk, /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) -"amR" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 6 - }, -/obj/structure/flora/pottedplant/stoutbush, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "amS" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -7726,21 +6989,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) -"ane" = ( -/obj/machinery/door/airlock/glass_mining{ - id_tag = "cargodoor"; - name = "Cargo Office"; - req_access = list(31); - req_one_access = list() - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) "anf" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/rust, @@ -7870,36 +7118,6 @@ }, /turf/simulated/floor/tiled, /area/storage/primary) -"anm" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"ann" = ( -/obj/machinery/button/remote/blast_door{ - id = "mine_warehouse"; - name = "Warehouse Door Control"; - pixel_x = 0; - pixel_y = -22; - req_access = list(31) - }, -/obj/machinery/conveyor{ - dir = 4; - id = "gloriouscargopipeline" - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/tether/surfacebase/mining_main/ore) -"ano" = ( -/obj/machinery/door/airlock/maintenance/cargo{ - name = "Mining Maintenance Access"; - req_one_access = list(48) - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/ore) "anp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -8091,52 +7309,13 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) -"anE" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/window/northright{ - dir = 2; - name = "Mailing Room"; - req_access = list(50) - }, -/obj/structure/noticeboard{ - pixel_x = 32 - }, -/obj/machinery/door/blast/shutters{ - dir = 2; - id = "surfcargooffice"; - layer = 3.3; - name = "Cargo Office Shutters" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) "anF" = ( /obj/machinery/door/airlock/maintenance/cargo{ name = "Mining Maintenance Access"; req_one_access = list(48) }, /turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/surfacecargo) -"anG" = ( -/obj/structure/disposalpipe/junction{ - dir = 8; - icon_state = "pipe-j2" - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/surface_one_hall) -"anH" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor{ - dir = 4; - id = "gloriouscargopipeline" - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/lobby) +/area/tether/surfacebase/cargo/office) "anI" = ( /obj/structure/cable{ icon_state = "0-2"; @@ -8160,30 +7339,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/emergency_storage/atrium) -"anK" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer{ - pixel_y = 13 - }, -/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer{ - pixel_x = 9 - }, -/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer{ - pixel_x = -7; - pixel_y = -7 - }, -/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer{ - pixel_x = -10; - pixel_y = 5 - }, -/obj/item/trash/raisins{ - desc = "This trash looks like it's had one too many."; - name = "Wasted waste" - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "anL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/industrial/outline/blue, @@ -8538,11 +7693,6 @@ /obj/random/maintenance/cargo, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/emergency_storage/atrium) -"aop" = ( -/obj/structure/catwalk, -/obj/random/junk, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "aoq" = ( /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/outside/outside1) @@ -10070,15 +9220,6 @@ /obj/random/junk, /turf/simulated/floor/plating, /area/maintenance/lower/vacant_site) -"aqR" = ( -/obj/structure/catwalk, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/vacant_site) "aqS" = ( /obj/structure/cable/green{ d1 = 4; @@ -12345,6 +11486,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/yellow, /obj/effect/decal/cleanable/dirt, /obj/structure/railing, +/obj/random/cutout, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/xenoflora) "auM" = ( @@ -17727,22 +16869,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/vacant/vacant_site/east) -"aCL" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/surface_one_hall) "aCM" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 1 @@ -20314,32 +19440,6 @@ /obj/effect/floor_decal/corner/mauve/border, /turf/simulated/floor/tiled, /area/rnd/hallway) -"aGK" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "aGL" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/mauve/border, @@ -20392,35 +19492,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) -"aGO" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/camera/network/cargo{ - icon_state = "camera"; - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "aGP" = ( /obj/effect/floor_decal/borderfloor/corner, /obj/effect/floor_decal/corner/mauve/bordercorner, @@ -21014,7 +20085,7 @@ dir = 8 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) +/area/tether/surfacebase/cargo/office) "aHN" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -26001,15 +25072,6 @@ }, /turf/simulated/floor/tiled, /area/engineering/atmos) -"aQE" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) "aQF" = ( /obj/machinery/light{ dir = 8 @@ -31235,32 +30297,6 @@ /obj/effect/step_trigger/teleporter/to_plains, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/outside/outside1) -"baY" = ( -/obj/structure/table/standard, -/obj/item/weapon/stamp/cargo, -/obj/item/weapon/stamp/denied{ - pixel_x = 4; - pixel_y = -2 - }, -/obj/item/weapon/clipboard, -/obj/item/weapon/folder/yellow, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) "baZ" = ( /obj/machinery/alarm{ dir = 4; @@ -31269,51 +30305,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) -"bba" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/structure/sign/nosmoking_2{ - pixel_x = -32 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"bbb" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 4 - }, -/obj/machinery/alarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) "bbc" = ( /obj/structure/cable{ d1 = 1; @@ -31355,78 +30346,7 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) -"bbg" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 10 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"bbh" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) -"bbi" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - name = "Mining Lobby" - }, -/obj/machinery/door/firedoor/glass, -/obj/effect/floor_decal/steeldecal/steel_decals_central1{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/monofloor{ - dir = 8 - }, -/area/tether/surfacebase/surface_one_hall) -"bbj" = ( -/obj/machinery/door/firedoor/glass, -/obj/effect/floor_decal/steeldecal/steel_decals_central1{ - dir = 4 - }, -/turf/simulated/floor/tiled/monofloor{ - dir = 4 - }, -/area/tether/surfacebase/surface_one_hall) +/area/tether/surfacebase/cargo/office) "bbk" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -31573,7 +30493,7 @@ name = "Cargo Office Shutters" }, /turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/surfacecargo) +/area/tether/surfacebase/cargo/office) "bbs" = ( /obj/machinery/power/apc{ dir = 8; @@ -31602,7 +30522,7 @@ dir = 8 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) +/area/tether/surfacebase/cargo/office) "bbt" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -31625,15 +30545,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) -"bbu" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/surface_one_hall) "bbv" = ( /obj/structure/cable/green{ d1 = 4; @@ -31641,7 +30552,7 @@ icon_state = "4-8" }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) +/area/tether/surfacebase/cargo/office) "bbw" = ( /obj/structure/table/rack, /obj/random/maintenance/cargo, @@ -31649,45 +30560,6 @@ /obj/random/maintenance/medical, /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) -"bbx" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) -"bby" = ( -/obj/structure/table/standard, -/obj/item/weapon/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/weapon/pen/red{ - pixel_x = 2; - pixel_y = 6 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) -"bbz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) "bbA" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -31704,7 +30576,7 @@ pixel_y = 0 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) +/area/tether/surfacebase/cargo/office) "bbB" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -31721,12 +30593,7 @@ dir = 1 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) -"bbD" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) +/area/tether/surfacebase/cargo/office) "bbE" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31743,7 +30610,7 @@ dir = 6 }, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) +/area/tether/surfacebase/cargo/office) "bbG" = ( /obj/machinery/door/airlock/maintenance/common, /obj/structure/disposalpipe/segment, @@ -31932,15 +30799,6 @@ /obj/random/maintenance/medical, /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) -"bbV" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/obj/machinery/alarm{ - dir = 1; - pixel_y = -25 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) "bbW" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -31952,7 +30810,7 @@ name = "Cargo Office Shutters" }, /turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/surfacecargo) +/area/tether/surfacebase/cargo/office) "bbX" = ( /obj/machinery/door/airlock/maintenance/common, /obj/structure/disposalpipe/segment, @@ -32345,33 +31203,6 @@ /obj/structure/closet/firecloset, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) -"bcO" = ( -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 1 - }, -/obj/machinery/light_switch{ - dir = 2; - name = "light switch "; - pixel_x = 10; - pixel_y = 32 - }, -/obj/machinery/conveyor_switch{ - id = "gloriouscargopipeline"; - name = "Mining Supply conveyor switch"; - pixel_x = 0; - pixel_y = 0 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/surfacecargo) "bcP" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow, /obj/machinery/alarm{ @@ -32876,6 +31707,10 @@ "cGJ" = ( /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) +"cOq" = ( +/obj/random/cutout, +/turf/simulated/floor/plating, +/area/vacant/vacant_site/east) "cPs" = ( /obj/machinery/computer/looking_glass{ lg_id = "one" @@ -32907,6 +31742,10 @@ dir = 10 }, /area/looking_glass/lg_1) +"fYi" = ( +/obj/random/cutout, +/turf/simulated/floor/plating, +/area/construction/vacant_mining_ops) "gaK" = ( /obj/machinery/door/airlock/glass{ name = "Looking Glass" @@ -42075,8 +40914,8 @@ apY aqB aoH aoH -apj -apj +bcd +bcd apu aqb ate @@ -42218,7 +41057,7 @@ apr ara aoH aoH -apj +bcd apu asJ ate @@ -42360,7 +41199,7 @@ aqC arb art aoH -apj +bcd apu aqb arL @@ -42502,7 +41341,7 @@ aqD arc aru aoH -apj +bcd apu aqb arL @@ -42644,7 +41483,7 @@ aqE ard arv aoH -apj +bcd apu aqb arL @@ -43463,12 +42302,12 @@ aad aad aad aad -aao -aao -aao -aao -aao -aao +aan +aan +aan +aan +aan +aan aah aah abT @@ -43604,15 +42443,15 @@ aae aae aae aaf -aaf -aao -aau -aaA -aaP -aau -aao -abn -abn +aai +aan +aaq +aav +aay +aaq +aan +aar +aar abT acQ adl @@ -43746,18 +42585,18 @@ aae aae aae aaf -ahb -aao -aav -aav -aav -aav -aao -abo -abn -abn -abn -abn +aak +aan +aas +aas +aas +aas +aan +aaF +aaK +aar +aar +aar abT adN aex @@ -43888,18 +42727,18 @@ aae aae aae aaf -aai -aap +aal +aao +aat aaw +aaw +aaz aaB -aaB -aaS -aaZ -abm -abv -abW +aaG +aaM +abe acR -adm +abv aha aeM alt @@ -44031,20 +42870,20 @@ aae aae aaf aaf -aaq +aap +aau aax -aaO -aaO -aaY -abb -abw -abK -abV -adz -abn -abn -abn -abn +aax +aaA +aaC +aaH +aaN +aaS +abh +aar +abT +abT +abT aeA alX amq @@ -44172,21 +43011,21 @@ aaf aaf aaf aaf -aak +aam +aan +aan +aan +aan +aan +aan aar aar -aar -aar -aar -aar -aar -aar -acY -adq -acU -ahm -adQ -abn +abi +abl +abw +abT +acg +abT aeB afd afC @@ -44314,26 +43153,26 @@ aaf aaf aaf aaf -aal -aat -aay -aaD -ajW -aka -aka -aba +aaf +aah +aah +aah +aah +aah +aah +aah aar -acZ -adD -aeY -adr -adR -aer -aer -aer -aer -aer -aer +aaX +abm +abI +acc +acc +acc +acc +acc +acc +acc +acc bbE abT abT @@ -44456,27 +43295,27 @@ aaf aaf aaf aaf -aam -aas -aaz -aaE -ajW -aka -aba -akc +aaf +aah +aah +aah +aah +aah +aah +aah aar -abY -acx -aeU -acx -adS -aer -aeE +aaX +agm +abK +acc +abZ +abZ +abZ +acm +agg +afQ +acc age -afD -ail -ams -aIA air bcg agM @@ -44598,27 +43437,27 @@ aaf aaf aaf aaf -aan +aaf +aah +aah +aah +aah +aah +aah +aah aar -aar -aar -aar -aar -akc -akc -aar -aca -acy -afb -ads -adT -aes -aeD -aff -alJ -alY -aer -bcf +aaX +agm +abL +acc +adS +adS +adS +acn +aeN +aeF +acc +age bcf bcg agM @@ -44743,24 +43582,24 @@ aaf aaf aah aah +aah +aah +aah +aah +aah aar -aaF -ajX -akc -akc -aar +abd +abn +abN acc -adr -aeZ -acx -adc -aer -afe -agf -agf -amO -ano -bcf +aca +adS +adS +acn +afN +aeF +acc +age bcf bcR agM @@ -44885,24 +43724,24 @@ aaf aaf aah aah +aah +aah +aah +aah +aah aar -aaF -aar -akd -akd -aar -acd -adr -afl -adt -adG -aer -ahY -agf -agg -amN -aer -bcf +aaX +agm +abP +acc +adS +adS +adS +adS +afN +afL +acc +age bcQ air agM @@ -45027,24 +43866,24 @@ aad aah aah aah +aah +aah +aah +aah +aah aar -aaG -aar -ake -akj -aaC -abZ -adr -afg -ahF -ajb -alu -alE -alZ -amr -amO -aer -bcf +aaX +agm +abU +aaP +acd +ach +acl +acx +adS +afM +acc +age agM agM agM @@ -45169,24 +44008,24 @@ aah aah aah aah -aar -aaF +aah +aah +aah +aah +aah aar abj -abC -aar -acg -adr -aeU -acx -adX -aer -alF -agf -anm -amO -aer -cGJ +abo +abV +abY +ace +ack +acH +adq +adS +aeJ +afm +aIA agM ahc ahu @@ -45311,23 +44150,23 @@ aah aah aah aah +aah +aah +aah +aaE +aaE aar -aaF -ajX -abd -aby aar -ach -adb -afn -adv -aje -aer -aeI -aeF -amt -ann -amc +aar +aar +acc +acf +acE +acO +adr +adS +agj +acc anF amc amc @@ -45453,22 +44292,22 @@ aah aah aah aah -aar -ajX -aar -abd -aby -abL -abL -acC -afy -abM -abL -abL -aeJ -ama -amu -anH +aah +aah +aah +aaE +aaL +aaL +aaL +aaL +aaL +acc +acc +acc +acc +ads +adT +acc amc amP bbs @@ -45595,24 +44434,24 @@ aah aah aah aah -aar -aaH -aaR -abp -abu -abL -acf -acD -afu -adw +aah +aah +aah +aaE +aaL +aaL +aaL +aaL +aaL +aaL +aaL +adf +acK +adt adZ -abL -alG -afi -amv -agj +aeS amw -bcO +afS bbv bbC amc @@ -45737,26 +44576,26 @@ aah aah aah aah -aar -aaI -aaC -aaC -abE -abM -acA -acE -afE -aeb -aea -abL -alH -afj -ahe -amb -ane -aQE -bbx -bbD +aah +aah +aah +aaE +aaL +aaL +aaL +aaL +aaL +aaL +aaL +adf +acL +adv +aeu +aeR +afe +afg +afu +aeg bbW bbm anW @@ -45879,28 +44718,28 @@ aah aah aah aah -aar -aaI -aaC -akf -abh -abM -acA -acF -afB -aeb -aea -abL -aeL -afP -ago -ahv +aah +aah +aah +aaE +aaL +aaL +aaL +aaL +aaL +aaL +aaL +adf +acP +adC +aee +aeZ amc -baY -bby -bbD -bbW -aCL +adX +afy +afE +afI +afK anW aoj aoS @@ -46021,26 +44860,26 @@ aah aah aah aah -aar -aaJ -aaC -abc -abG -abL -acB -acG -afB -ady +aah +aah +aah +aaE +aaL +aaE +aaL +aaL +aaL +aaL +aaL +adf +afO adU -abL -alI -afx -agx -ahw -anE -amz -bbz -bbV +acY +acY +adE +adY +aed +aeh amc aCN anW @@ -46163,22 +45002,22 @@ aad aah aah aah -aar -aaK -aaC -abq -abF -abL -abL -acH -afF -aiq -abL -abL -aeN -afm -agy -aih +aah +aah +aah +aaE +aaL +aaE +aaE +aaL +aaL +aaL +aaL +adf +acU +aea +aef +afb amc bbf bbA @@ -46305,22 +45144,22 @@ aad aah aah aah -aar +aah +aah +aah +aaE +aaL +aaL +aaL +aaL +aaL +aaL aaL -aar -abe -abJ -abM adf -acI -afB -adA -aec -aeC -afk -afm -afN -aik +aeE +aeb +acY +aeU amc bbr amc @@ -46447,28 +45286,28 @@ aad aah aah aah -aar -aaI -aar -abr -abI -acO -ade -adP -afI -adB -aed -aeu -alK -agl -agD -aiQ -amx -aGK -bba -bbg -bbi -bbu +aah +aah +aah +aaE +aaL +aaL +aaL +aaL +aaL +aaL +aaL +adf +adA +aec +aes +aeY +afn +afs +afx +afB +aeQ +agf anW aoi aoj @@ -46589,28 +45428,28 @@ aad aah aah aah -aar -aaI -aaC -abs -abN -acP -ack -acK -afK +aah +aah +aah +aaE +aaL +aaL +aaL +adw adx -aee -aev -aeQ -agm -agN -aim -amy -aGO -bbb -bbh -bbj -anG +ady +adz +acM +adB +aer +agq +acY +aff +afo +afD +afF +afJ +ago anY aok aok @@ -46731,26 +45570,26 @@ aad aah aah aah -aar -aaI -aaC -abh -abO -abM -acl -acL -afJ -adC -aji -abL -aeR -afo -afN -aio -aeJ -aeJ -aeJ -aeJ +aah +aah +aah +aaE +aaL +aaL +aaL +aaL +aaL +aaL +aaL +adf +acZ +adD +aev +afi +adf +adf +adf +adf agM bbt anZ @@ -46873,23 +45712,23 @@ aad aad aah aah -aar -aaJ -aaC -abi -abQ -abL -abL -abM -afM -aiu -abL -abL -aeS -agn -afO -agq -aeJ +aah +aah +aah +aaE +aaL +aaE +aaE +aaL +aaL +aaL +aaE +adf +adb +adG +aeC +afj +adf aah aah aah @@ -47015,23 +45854,23 @@ aad aad aad aah -aar -aaM -aaC -abt -abR -abP -acm -acM -afL -adE -aeg -abP -afs -afo -afo -agr -aeJ +aah +aah +aah +aaE +aaL +aaE +fYi +aaL +aaL +aaL +aaL +adf +adc +acY +acY +afk +adf aah aah aah @@ -47062,7 +45901,7 @@ azb aAj aBf agM -aCJ +cOq aCK aCK aCK @@ -47157,23 +45996,23 @@ aad aad aad aah -aar -aaN -aaX -abk -abS -abP -acn -adY -afS -aiw -aeh -abP -alL -amd -ahd -amR -aeJ +aah +aah +aah +aaE +aaL +aaE +aaL +aaL +aaL +aaL +aaL +adf +ade +adP +aeD +afl +adf aah aah aah @@ -47299,23 +46138,23 @@ aad aad aad aah -aar -aar -aar -aar -abU -abP -abP -abP -abP -abP -abP -abP -aeJ -aeJ -aeJ -aeJ -aeJ +aah +aah +aaU +aaU +aaI +aaU +aaU +aaU +aaU +aaU +aaU +adf +adf +adf +adf +adf +adf aah aah aah @@ -47437,20 +46276,20 @@ aad aad aad aad -aah -aah -aah +aad +aad +aad aah aah aah aaU -abl -aiG -adg -adg -aef -aef -aiC +abH +abH +abX +abX +abH +abH +abX aei aaU aah @@ -47580,19 +46419,19 @@ aad aad aad aad -aah +aad aah aah aah aah aaU -abl +abH abH abH abX abX abH -aiF +abH aek aaU aah @@ -47728,13 +46567,13 @@ aah aah aah aaU -akg -ace -akp +aaD +aaJ +aaO acq aen abH -aiF +abH aek aaU aah @@ -47876,7 +46715,7 @@ aaU aaU aaU abH -aiF +abH ael aaU aah @@ -48018,7 +46857,7 @@ aah aah aaU abH -aiF +abH aem aaU aah @@ -48026,17 +46865,17 @@ aah aah aah aaU -agE -agP -abH -ahy -aiv +abs +aby +abq +abC +abE aaU aah aah aah apF -aqR +abQ arj apF aah @@ -48160,25 +46999,25 @@ aah aah aaU abH -aiG -ajm +abH +aaR aaU aaU aaU aaU aaU aaU -agF +abt agQ anq ahz -anK +abF aaU aaU aaU aaU aaU -aql +abR arh apF aah @@ -48303,24 +47142,24 @@ aah aaU abH abH -abH -alv -abH -abH -afQ -abH -abH -agG +abf +abp +abq +abq +abr +abq +abq +abu anf ahg ahA -aix -ajl -aop -ajl -ajl -abf -aql +abG +abJ +abM +abJ +abJ +abO +abS ark apF aah diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index c654a6866c..07208a4295 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -243,7 +243,7 @@ /obj/machinery/alarm{ pixel_y = 22 }, -/turf/simulated/floor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aaC" = ( /obj/machinery/oxygen_pump/anesthetic, @@ -416,7 +416,7 @@ icon_state = "1-2" }, /obj/structure/catwalk, -/turf/simulated/floor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aaQ" = ( /obj/effect/floor_decal/borderfloorwhite{ @@ -575,6 +575,7 @@ /obj/machinery/status_display{ pixel_y = 30 }, +/obj/random/cutout, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining) "abd" = ( @@ -843,7 +844,7 @@ /obj/structure/cable{ icon_state = "0-2" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "abH" = ( /obj/effect/decal/cleanable/dirt, @@ -995,7 +996,7 @@ /area/maintenance/lower/north) "acc" = ( /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "acd" = ( /obj/machinery/computer/prisoner{ @@ -1163,7 +1164,7 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/machinery/atmospherics/pipe/simple/visible/supply, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "act" = ( /obj/effect/decal/cleanable/dirt, @@ -1209,16 +1210,16 @@ "acx" = ( /obj/structure/catwalk, /obj/random/junk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "acy" = ( /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "acz" = ( /obj/structure/catwalk, /obj/machinery/light/small, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "acA" = ( /obj/machinery/door/airlock/maintenance/common, @@ -1260,7 +1261,7 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/machinery/atmospherics/pipe/simple/visible/supply, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "acH" = ( /obj/effect/decal/cleanable/dirt, @@ -1334,7 +1335,7 @@ /obj/machinery/status_display{ pixel_y = 30 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "acT" = ( /obj/machinery/camera/network/medbay, @@ -1389,7 +1390,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "ada" = ( /obj/structure/catwalk, @@ -1402,7 +1403,7 @@ /obj/machinery/atmospherics/pipe/manifold/visible/supply{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "adb" = ( /obj/effect/decal/cleanable/dirt, @@ -1471,7 +1472,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "adg" = ( /obj/structure/catwalk, @@ -1487,7 +1488,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 10 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "adh" = ( /obj/structure/catwalk, @@ -1500,7 +1501,7 @@ d2 = 8; icon_state = "0-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "adi" = ( /obj/structure/catwalk, @@ -1579,7 +1580,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/machinery/atmospherics/pipe/simple/visible/supply, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "adr" = ( /obj/structure/railing{ @@ -1606,7 +1607,7 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "adu" = ( /turf/simulated/wall, @@ -1696,7 +1697,7 @@ icon_state = "4-8"; pixel_x = 0 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "adF" = ( /obj/structure/catwalk, @@ -1714,7 +1715,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/machinery/atmospherics/pipe/simple/visible/supply, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "adG" = ( /obj/structure/railing{ @@ -1729,7 +1730,7 @@ dir = 4; icon_state = "pipe-c" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "adI" = ( /obj/structure/catwalk, @@ -1742,14 +1743,14 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "adJ" = ( /obj/structure/catwalk, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "adK" = ( /obj/structure/catwalk, @@ -1759,14 +1760,14 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "adL" = ( /obj/structure/catwalk, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "adM" = ( /obj/structure/catwalk, @@ -1774,7 +1775,7 @@ dir = 4 }, /obj/random/junk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "adN" = ( /obj/structure/catwalk, @@ -1787,7 +1788,7 @@ /obj/random/maintenance/clean, /obj/random/maintenance/cargo, /obj/random/drinkbottle, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "adO" = ( /obj/structure/catwalk, @@ -1831,19 +1832,19 @@ /obj/structure/catwalk, /obj/effect/floor_decal/rust, /obj/random/junk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "adV" = ( /obj/structure/catwalk, /obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "adW" = ( /obj/structure/catwalk, /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "adX" = ( /obj/structure/catwalk, @@ -1861,7 +1862,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/machinery/atmospherics/pipe/simple/visible/supply, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "adY" = ( /turf/simulated/wall, @@ -1877,7 +1878,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 5 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "aea" = ( /obj/structure/catwalk, @@ -1890,7 +1891,7 @@ /obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "aeb" = ( /obj/structure/catwalk, @@ -1904,7 +1905,7 @@ dir = 4 }, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "aec" = ( /obj/structure/catwalk, @@ -1917,7 +1918,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "aed" = ( /obj/structure/catwalk, @@ -1930,16 +1931,16 @@ /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 10 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "aee" = ( /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "aef" = ( /obj/structure/catwalk, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "aeg" = ( /obj/structure/disposalpipe/segment{ @@ -1990,7 +1991,7 @@ dir = 4; icon_state = "pipe-c" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aek" = ( /obj/structure/catwalk, @@ -1998,14 +1999,14 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "ael" = ( /obj/structure/catwalk, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aem" = ( /obj/structure/catwalk, @@ -2013,7 +2014,7 @@ dir = 2; icon_state = "pipe-c" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aen" = ( /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ @@ -2050,12 +2051,12 @@ /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/machinery/atmospherics/pipe/simple/visible/supply, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "aes" = ( /obj/structure/catwalk, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "aet" = ( /obj/structure/railing{ @@ -2091,7 +2092,7 @@ "aew" = ( /obj/effect/floor_decal/rust, /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "aex" = ( /obj/structure/catwalk, @@ -2101,12 +2102,12 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "aey" = ( /obj/structure/catwalk, /obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "aez" = ( /obj/structure/railing{ @@ -2243,7 +2244,7 @@ dir = 1 }, /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "aeQ" = ( /obj/structure/catwalk, @@ -2255,14 +2256,14 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "aeR" = ( /obj/structure/catwalk, /obj/effect/floor_decal/techfloor/orange{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "aeS" = ( /obj/structure/railing{ @@ -2648,10 +2649,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/bar) -"afw" = ( -/obj/structure/catwalk, -/turf/simulated/open, -/area/maintenance/lower/bar) "afx" = ( /obj/structure/catwalk, /obj/structure/cable{ @@ -2659,7 +2656,7 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/turf/simulated/open, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "afy" = ( /obj/structure/railing{ @@ -2777,13 +2774,13 @@ /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/surface_two_hall) "afN" = ( -/obj/structure/catwalk, /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/structure/disposalpipe/down, +/obj/effect/catwalk_plated/dark, /turf/simulated/open, /area/maintenance/lower/bar) "afO" = ( @@ -2960,7 +2957,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/structure/disposalpipe/segment, -/turf/simulated/open, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "agd" = ( /obj/effect/floor_decal/techfloor{ @@ -3055,7 +3052,7 @@ "ago" = ( /obj/effect/floor_decal/techfloor/orange, /obj/structure/catwalk, -/turf/simulated/floor/tiled/techmaint, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "agp" = ( /obj/structure/catwalk, @@ -3066,12 +3063,12 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techmaint, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "agq" = ( /obj/structure/catwalk, /obj/effect/floor_decal/techfloor/orange, -/turf/simulated/floor/tiled/techmaint, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "agr" = ( /obj/structure/railing{ @@ -3155,17 +3152,7 @@ /obj/structure/catwalk, /obj/structure/ladder/up, /obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/techmaint, -/area/maintenance/lower/bar) -"agD" = ( -/obj/structure/catwalk, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techmaint, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "agE" = ( /obj/structure/railing{ @@ -3216,6 +3203,7 @@ }, /obj/structure/railing, /obj/effect/decal/cleanable/dirt, +/obj/random/cutout, /turf/simulated/floor/tiled/techmaint, /area/maintenance/lower/bar) "agJ" = ( @@ -3310,10 +3298,6 @@ /obj/structure/catwalk, /turf/simulated/floor/tiled/techfloor/grid, /area/maintenance/lower/bar) -"agX" = ( -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techmaint, -/area/maintenance/lower/bar) "agY" = ( /obj/structure/sign/department/chapel, /turf/simulated/wall, @@ -3392,15 +3376,6 @@ }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/storage) -"ahj" = ( -/obj/structure/catwalk, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/bar) "ahk" = ( /obj/structure/catwalk, /obj/structure/disposalpipe/segment{ @@ -3408,7 +3383,7 @@ icon_state = "pipe-c" }, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "ahl" = ( /obj/structure/catwalk, @@ -3422,7 +3397,7 @@ /obj/random/maintenance/clean, /obj/random/maintenance/clean, /obj/random/tool, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "ahm" = ( /obj/effect/floor_decal/rust, @@ -5716,7 +5691,7 @@ dir = 8; icon_state = "pipe-c" }, -/turf/simulated/floor/tiled/techmaint, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "alM" = ( /obj/effect/floor_decal/industrial/warning{ @@ -5951,7 +5926,7 @@ "amc" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techmaint, +/turf/simulated/floor/plating, /area/maintenance/lower/bar) "amd" = ( /obj/machinery/door/firedoor/glass, @@ -7624,6 +7599,7 @@ /obj/structure/railing, /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/rust, +/obj/random/cutout, /turf/simulated/floor/tiled/techfloor, /area/maintenance/asmaint2) "aps" = ( @@ -10703,14 +10679,14 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/machinery/atmospherics/pipe/simple/visible/supply, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "auQ" = ( /obj/structure/catwalk, /obj/effect/floor_decal/corner_techfloor_grid{ dir = 5 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "auR" = ( /obj/structure/railing{ @@ -10940,7 +10916,7 @@ /obj/machinery/light/small{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "avj" = ( /obj/machinery/light_switch{ @@ -11012,11 +10988,7 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/south) -"avp" = ( -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "avq" = ( /obj/structure/disposalpipe/segment, @@ -11443,7 +11415,7 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "avZ" = ( /obj/structure/railing{ @@ -11530,7 +11502,7 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "awg" = ( /obj/effect/decal/cleanable/dirt, @@ -11547,7 +11519,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "awh" = ( /obj/effect/decal/cleanable/dirt, @@ -11563,7 +11535,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "awi" = ( /obj/machinery/door/firedoor/glass, @@ -11908,12 +11880,12 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "awO" = ( /obj/structure/catwalk, /obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "awP" = ( /obj/structure/railing{ @@ -11940,7 +11912,7 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "awR" = ( /obj/effect/decal/cleanable/dirt, @@ -11952,6 +11924,7 @@ }, /obj/effect/floor_decal/techfloor/corner, /obj/effect/floor_decal/rust, +/obj/random/cutout, /turf/simulated/floor/tiled/techfloor, /area/maintenance/asmaint2) "awS" = ( @@ -12383,11 +12356,6 @@ "axB" = ( /turf/simulated/wall, /area/janitor) -"axC" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/south) "axD" = ( /obj/structure/railing{ dir = 8 @@ -12441,7 +12409,7 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "axJ" = ( /obj/effect/decal/cleanable/dirt, @@ -12888,7 +12856,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 6 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "ayp" = ( /obj/structure/catwalk, @@ -12899,7 +12867,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "ayq" = ( /obj/structure/catwalk, @@ -12915,7 +12883,7 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "ayr" = ( /obj/structure/railing{ @@ -13261,7 +13229,7 @@ icon_state = "4-8"; pixel_x = 0 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "ayY" = ( /obj/structure/catwalk, @@ -13271,7 +13239,7 @@ icon_state = "4-8"; pixel_x = 0 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "ayZ" = ( /obj/structure/catwalk, @@ -13282,14 +13250,14 @@ icon_state = "4-8"; pixel_x = 0 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aza" = ( /obj/structure/catwalk, /obj/structure/cable{ icon_state = "1-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "azb" = ( /obj/effect/floor_decal/techfloor/corner{ @@ -14045,7 +14013,7 @@ icon_state = "1-2"; pixel_y = 0 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "azR" = ( /obj/structure/railing{ @@ -15695,7 +15663,7 @@ }, /obj/random/junk, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "aCQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -15706,7 +15674,7 @@ }, /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "aCR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -15719,7 +15687,7 @@ /obj/effect/floor_decal/techfloor, /obj/effect/floor_decal/rust, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "aCS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -15731,7 +15699,7 @@ /obj/structure/catwalk, /obj/effect/floor_decal/techfloor, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "aCT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -15752,17 +15720,7 @@ }, /obj/structure/catwalk, /obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/asmaint2) -"aCV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "aCW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -15965,7 +15923,7 @@ dir = 4 }, /obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor/tiled, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "aDo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -15980,7 +15938,7 @@ icon_state = "4-8" }, /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "aDp" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -15999,7 +15957,7 @@ /obj/effect/floor_decal/techfloor{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/asmaint2) "aDq" = ( /obj/structure/railing{ @@ -16204,7 +16162,7 @@ pixel_x = 0; pixel_y = 26 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aDR" = ( /obj/machinery/door/airlock/maintenance/common, @@ -16341,11 +16299,11 @@ pixel_y = 0 }, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aEh" = ( /obj/random/trash_pile, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aEi" = ( /obj/machinery/door/firedoor/glass, @@ -16564,7 +16522,7 @@ pixel_y = 0 }, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aEL" = ( /obj/structure/cable/green{ @@ -16767,7 +16725,7 @@ d2 = 4; icon_state = "1-4" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aFk" = ( /obj/structure/catwalk, @@ -16782,7 +16740,7 @@ d2 = 8; icon_state = "2-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aFl" = ( /obj/effect/floor_decal/rust, @@ -17019,14 +16977,14 @@ "aFQ" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aFR" = ( /obj/structure/catwalk, /obj/machinery/alarm{ pixel_y = 22 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aFS" = ( /obj/effect/floor_decal/rust, @@ -17067,32 +17025,23 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/lower/atmos) -"aFY" = ( -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) "aFZ" = ( /obj/effect/floor_decal/techfloor, /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aGa" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/atmos) "aGb" = ( /obj/effect/floor_decal/techfloor, /obj/structure/catwalk, /obj/effect/floor_decal/rust, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/atmos) "aGc" = ( /obj/effect/floor_decal/techfloor, /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/atmos) "aGd" = ( /obj/effect/floor_decal/techfloor{ @@ -17100,7 +17049,7 @@ }, /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/atmos) "aGe" = ( /obj/structure/railing{ @@ -17208,7 +17157,7 @@ /obj/structure/catwalk, /obj/random/junk, /obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/atmos) "aGr" = ( /obj/effect/floor_decal/techfloor{ @@ -17230,7 +17179,7 @@ /obj/structure/cable{ icon_state = "2-4" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGt" = ( /obj/structure/railing{ @@ -17275,7 +17224,7 @@ d2 = 8; icon_state = "2-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGx" = ( /obj/machinery/light/small{ @@ -17320,7 +17269,7 @@ /obj/structure/railing{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGC" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ @@ -17333,7 +17282,7 @@ dir = 1 }, /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGD" = ( /obj/structure/railing, @@ -17349,7 +17298,7 @@ /obj/structure/railing{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGE" = ( /obj/structure/railing, @@ -17362,7 +17311,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGF" = ( /obj/structure/railing, @@ -17378,7 +17327,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGG" = ( /obj/structure/railing, @@ -17397,7 +17346,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGH" = ( /obj/structure/railing, @@ -17413,7 +17362,7 @@ /obj/structure/cable{ icon_state = "2-4" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGI" = ( /obj/structure/railing, @@ -17432,7 +17381,7 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGJ" = ( /obj/structure/railing{ @@ -17453,7 +17402,7 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGK" = ( /obj/structure/catwalk, @@ -17471,7 +17420,7 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGL" = ( /obj/structure/catwalk, @@ -17486,7 +17435,7 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGM" = ( /obj/structure/catwalk, @@ -17502,7 +17451,7 @@ d2 = 8; icon_state = "1-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGN" = ( /obj/machinery/door/morgue{ @@ -17551,7 +17500,7 @@ d2 = 4; icon_state = "1-4" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGR" = ( /obj/structure/catwalk, @@ -17566,7 +17515,7 @@ d2 = 8; icon_state = "1-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aGS" = ( /obj/machinery/light_switch{ @@ -17658,14 +17607,14 @@ /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aHb" = ( /obj/structure/catwalk, /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aHc" = ( /turf/simulated/wall/r_wall, @@ -17756,7 +17705,7 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aHo" = ( /obj/structure/sign/department/telecoms, @@ -17962,7 +17911,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aHL" = ( /obj/structure/cable{ @@ -18122,7 +18071,8 @@ mat_efficiency = 0.9; name = "Legitimate Prosthetics Fabricator"; res_max_amount = 150000; - speed = 0.2 + speed = 0.2; + req_access = list() }, /turf/simulated/floor/plating, /area/maintenance/lower/atmos) @@ -18169,7 +18119,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/random/junk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aIm" = ( /obj/machinery/power/breakerbox/activated{ @@ -18414,7 +18364,7 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aIM" = ( /turf/simulated/wall, @@ -18631,7 +18581,7 @@ /obj/random/maintenance/clean, /obj/random/maintenance/clean, /obj/random/maintenance/clean, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aJj" = ( /obj/structure/sign/department/telecoms, @@ -18914,7 +18864,7 @@ "aJM" = ( /obj/structure/catwalk, /obj/effect/floor_decal/techfloor/corner, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aJN" = ( /obj/structure/catwalk, @@ -18927,7 +18877,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 5 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aJO" = ( /obj/machinery/door/airlock/highsecurity{ @@ -19437,7 +19387,7 @@ /obj/effect/floor_decal/techfloor{ dir = 10 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aKE" = ( /obj/structure/railing{ @@ -19446,7 +19396,7 @@ /obj/effect/floor_decal/techfloor{ dir = 6 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aKF" = ( /obj/structure/sign/securearea, @@ -21749,7 +21699,7 @@ dir = 8; pixel_y = 0 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "aOV" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -23056,6 +23006,7 @@ icon_state = "extinguisher_closed"; pixel_x = -30 }, +/obj/machinery/vitals_monitor, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/storage) "aQR" = ( @@ -23363,7 +23314,7 @@ /obj/structure/sign/warning/high_voltage{ pixel_y = 32 }, -/turf/simulated/floor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aRn" = ( /obj/structure/catwalk, @@ -23375,7 +23326,7 @@ d2 = 4; icon_state = "2-4" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aRo" = ( /obj/structure/cable/green{ @@ -23405,7 +23356,7 @@ icon_state = "4-8" }, /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aRq" = ( /obj/machinery/light/small, @@ -23415,7 +23366,7 @@ icon_state = "4-8" }, /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aRr" = ( /obj/structure/cable/green{ @@ -23885,7 +23836,7 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aRX" = ( /obj/structure/cable{ @@ -23897,7 +23848,7 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aRY" = ( /obj/structure/railing{ @@ -24585,9 +24536,9 @@ /area/tether/surfacebase/medical/lowerhall) "aTd" = ( /obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, +/obj/machinery/atmospherics/pipe/simple/visible/supply, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "aTe" = ( /obj/structure/catwalk, @@ -24595,16 +24546,16 @@ icon_state = "bulb1"; dir = 1 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "aTf" = ( /obj/structure/catwalk, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, +/obj/machinery/atmospherics/pipe/manifold/visible/supply, +/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "aTg" = ( /obj/structure/catwalk, @@ -24614,7 +24565,7 @@ /obj/machinery/alarm{ pixel_y = 22 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/mining) "aTh" = ( /obj/effect/floor_decal/rust, @@ -26259,7 +26210,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aVu" = ( /obj/machinery/power/sensor{ @@ -26345,7 +26296,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aVB" = ( /obj/structure/catwalk, @@ -26361,7 +26312,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/north) "aVC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -27480,17 +27431,17 @@ /turf/simulated/floor/carpet/sblucarpet, /area/bridge/meeting_room) "aXf" = ( -/obj/structure/table/woodentable, /obj/item/weapon/book/manual/security_space_law, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/structure/table/fancyblack, /turf/simulated/floor/carpet/sblucarpet, /area/bridge/meeting_room) "aXg" = ( -/obj/structure/table/woodentable, /obj/item/weapon/folder/red, /obj/structure/disposalpipe/segment, +/obj/structure/table/fancyblack, /turf/simulated/floor/carpet/sblucarpet, /area/bridge/meeting_room) "aXh" = ( @@ -27539,7 +27490,6 @@ /turf/simulated/floor/carpet/sblucarpet, /area/bridge/meeting_room) "aXn" = ( -/obj/structure/table/woodentable, /obj/item/weapon/paper_bin{ pixel_x = -3; pixel_y = 7 @@ -27548,6 +27498,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/structure/table/fancyblack, /turf/simulated/floor/carpet/sblucarpet, /area/bridge/meeting_room) "aXo" = ( @@ -27626,9 +27577,9 @@ /turf/simulated/floor/plating, /area/maintenance/commandmaint) "aXx" = ( -/obj/structure/table/woodentable, /obj/item/weapon/folder/blue, /obj/structure/disposalpipe/segment, +/obj/structure/table/fancyblack, /turf/simulated/floor/carpet/sblucarpet, /area/bridge/meeting_room) "aXy" = ( @@ -28913,7 +28864,7 @@ /obj/structure/extinguisher_cabinet{ pixel_y = 30 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "baa" = ( /obj/structure/catwalk, @@ -28932,7 +28883,7 @@ /obj/machinery/alarm{ pixel_y = 22 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "bac" = ( /obj/structure/catwalk, @@ -28951,7 +28902,7 @@ /obj/machinery/status_display{ pixel_y = 30 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "bad" = ( /obj/structure/catwalk, @@ -28967,7 +28918,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "bae" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ @@ -29005,7 +28956,7 @@ /obj/structure/cable{ icon_state = "2-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "bag" = ( /obj/item/device/radio/intercom{ @@ -29049,7 +29000,7 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/machinery/atmospherics/pipe/simple/visible/supply, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "baj" = ( /obj/effect/floor_decal/corner_techfloor_grid{ @@ -29079,7 +29030,7 @@ /obj/random/maintenance/clean, /obj/random/maintenance/clean, /obj/random/maintenance/cargo, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "bam" = ( /obj/effect/floor_decal/corner_techfloor_grid{ @@ -29092,7 +29043,7 @@ "ban" = ( /obj/structure/catwalk, /obj/random/junk, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/south) "bao" = ( /obj/machinery/door/airlock/maintenance/common, @@ -29384,6 +29335,61 @@ }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/surface_two_hall) +"boO" = ( +/obj/random/cutout, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"cne" = ( +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/obj/random/cutout, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/north) +"cHq" = ( +/obj/effect/catwalk_plated/dark, +/turf/simulated/open, +/area/maintenance/lower/bar) +"fYA" = ( +/obj/structure/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4; + pixel_y = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/mining) +"hNH" = ( +/obj/structure/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/open, +/area/maintenance/lower/bar) +"kaa" = ( +/obj/random/cutout, +/turf/simulated/floor, +/area/maintenance/lower/south) +"nTp" = ( +/obj/structure/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/turf/simulated/open, +/area/maintenance/lower/bar) +"peO" = ( +/obj/structure/catwalk, +/turf/simulated/open, +/area/maintenance/lower/bar) (1,1,1) = {" aaa @@ -37991,7 +37997,7 @@ axK axK axK aCv -aCV +aCT aBV aDH aDS @@ -39645,7 +39651,7 @@ aUQ aUQ aUQ acW -adl +cne adz adV acc @@ -39990,7 +39996,7 @@ aES aFb azl aEn -aFY +aEp aEQ aEQ aGX @@ -40416,10 +40422,10 @@ aES aFb azl aFK -aGa +aEQ aGo aDS -aEn +boO aHk aHm aEn @@ -40700,7 +40706,7 @@ aES aFb azl aFM -aGa +aEQ aGq aDS aGY @@ -40842,7 +40848,7 @@ aES aFb azl aFM -aGa +aEQ aFZ aGj aEo @@ -40984,7 +40990,7 @@ aES aFb azl aFN -aGa +aEQ aGr aDS aGZ @@ -41271,12 +41277,12 @@ aFO aGc aDS aGB -avp -avp -avp -avp -avp -avp +aDN +aDN +aDN +aDN +aDN +aDN aJM aKD arZ @@ -41555,7 +41561,7 @@ aDS aDS aDS aGD -avp +aDN arZ arZ arZ @@ -41697,7 +41703,7 @@ aac aac arZ aGE -avp +aDN arZ aac aac @@ -41839,7 +41845,7 @@ aac aac arZ aGE -avp +aDN arZ aac aac @@ -41981,7 +41987,7 @@ aac aac arZ aGF -avp +aDN arZ aac aac @@ -42123,7 +42129,7 @@ aac aac arZ aGG -avp +aDN aHo aHr aHr @@ -42407,7 +42413,7 @@ aac aac arZ aGI -avp +aDN aHq aHM aIn @@ -42484,7 +42490,7 @@ aSR aSr aSr acy -adf +fYA adr aaG aaG @@ -42549,7 +42555,7 @@ aac aac arZ aGJ -avp +aDN aHr aHN aIo @@ -42691,7 +42697,7 @@ aac aac arZ aGK -avp +aDN aHr aHV aIp @@ -43114,7 +43120,7 @@ arZ arZ arZ aFQ -avp +aDN aGs aGM arZ @@ -43255,7 +43261,7 @@ aDM aDM aDN aEs -avp +aDN aGe aGt aZC @@ -43539,7 +43545,7 @@ arZ arZ arZ arZ -avp +aDN aGf aGu aGO @@ -43681,7 +43687,7 @@ aac aac aac arZ -avp +aDN aGg aGv aGP @@ -43823,8 +43829,8 @@ aac aac aac arZ -avp -avp +aDN +aDN aGw aGQ arZ @@ -44080,10 +44086,10 @@ aYd avi arZ aFR -avp -avp -axC -axC +aDN +aDN +aDM +aDM arZ avk avW @@ -44221,16 +44227,16 @@ aRa aYd bac arZ -avp +aDN ban -avp -avp -axC +aDN +aDN +aDM arZ avl avW avW -axC +aDM ayo ayX aOT @@ -44364,9 +44370,9 @@ aYd bad arZ bal -avp -avp -avp +aDN +aDN +aDN arZ arZ avm @@ -44375,19 +44381,19 @@ awM axD ayp ayY -avp -avp +aDN +aDN aug -avp +aDN arZ arZ arZ arZ aDQ aEh -axC +aDM aEK -avp +aDN aFk azQ azQ @@ -44478,9 +44484,9 @@ adL aec aew aeP -afw -afw -afw +peO +cHq +peO ago agC adu @@ -44620,14 +44626,14 @@ adL aed aex aeQ -afx +nTp afN -agc +hNH agp -agD -agD +agc +agc alL -ahj +afx ahA ahS aic @@ -44762,12 +44768,12 @@ adL aee aey aeR -afw -afw -afw +peO +cHq +peO agq -agX -agX +aee +aee amc ahk ahB @@ -44787,20 +44793,20 @@ aZG aro aro aYd -avp -avp -avp -avp -avp -avp +aDN +aDN +aDN +aDN +aDN +aDN aug auQ -avp -avp +aDN +aDN awO -avp -avp -avp +aDN +aDN +aDN azT aAJ arZ @@ -45643,7 +45649,7 @@ aac aac aac arZ -bar +kaa avW bay bay diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index e69195c8f5..a6148c7937 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -4292,14 +4292,12 @@ /turf/simulated/floor/plating, /area/rnd/research_storage) "ahn" = ( -/obj/machinery/door/airlock/maintenance/rnd{ - name = "Elavator Maintenance Access" - }, /obj/machinery/door/firedoor/glass, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/plating, /area/rnd/research_storage) "aho" = ( @@ -7306,23 +7304,11 @@ /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/panic_shelter) "amh" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5, -/obj/effect/floor_decal/steeldecal/steel_decals3{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals3{ - dir = 8 - }, -/obj/structure/table/reinforced, -/obj/machinery/camera/network/research, -/turf/simulated/floor/tiled, -/area/rnd/research_foyer) +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/rnd/research) "ami" = ( /obj/machinery/space_heater, /obj/effect/floor_decal/techfloor, @@ -8121,15 +8107,28 @@ /turf/simulated/floor/water/pool, /area/crew_quarters/pool) "anA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/green{ - d1 = 2; - d2 = 4; - icon_state = "2-4" +/obj/structure/table/standard, +/obj/machinery/cell_charger, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/machinery/newscaster{ + pixel_x = 0; + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 5 }, /turf/simulated/floor/tiled, -/area/hallway/lower/third_south) +/area/rnd/research) "anB" = ( /obj/effect/floor_decal/steeldecal/steel_decals4, /obj/effect/floor_decal/steeldecal/steel_decals4{ @@ -8467,12 +8466,11 @@ /turf/simulated/floor/wood, /area/crew_quarters/recreation_area) "aoc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/effect/floor_decal/corner/mauve{ + dir = 10 + }, +/obj/effect/floor_decal/corner/mauve{ + dir = 5 }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) @@ -8491,11 +8489,6 @@ /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, /area/hallway/lower/third_south) "aof" = ( @@ -10822,16 +10815,19 @@ /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) "asb" = ( -/obj/machinery/hologram/holopad, -/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/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + dir = 8; + icon_state = "extinguisher_closed"; + pixel_x = 30 }, /turf/simulated/floor/tiled, -/area/hallway/lower/third_south) +/area/rnd/research) "asc" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -11677,10 +11673,8 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/door/airlock/maintenance/rnd{ - name = "Research Storage" - }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/tiled, /area/rnd/research_storage) "atG" = ( @@ -12522,33 +12516,11 @@ /turf/simulated/floor/tiled, /area/rnd/staircase/thirdfloor) "auX" = ( -/obj/structure/table/standard, -/obj/machinery/cell_charger, -/obj/item/weapon/cell/high{ - charge = 100; - maxcharge = 15000 - }, -/obj/item/weapon/cell/high{ - charge = 100; - maxcharge = 15000 - }, -/obj/structure/extinguisher_cabinet{ - dir = 8; - icon_state = "extinguisher_closed"; - pixel_x = 30 - }, -/obj/machinery/newscaster{ - pixel_x = 0; - pixel_y = 30 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 5 - }, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/hallway/lower/third_south) "auY" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -12979,16 +12951,15 @@ /turf/simulated/floor/plating, /area/crew_quarters/bar) "avQ" = ( -/obj/structure/table/standard, -/obj/machinery/recharger{ - pixel_y = 0 - }, /obj/effect/floor_decal/borderfloor{ dir = 4 }, /obj/effect/floor_decal/corner/mauve/border{ dir = 4 }, +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/rnd/research) "avR" = ( @@ -13073,19 +13044,20 @@ /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) "avX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/door/firedoor, +/obj/item/weapon/folder/white, +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor/westright{ + name = "Research Desk"; + req_access = list(7); + req_one_access = list(47) }, -/obj/structure/bed/chair/office/dark{ - dir = 4 +/obj/item/weapon/paper_bin{ + pixel_x = -1; + pixel_y = 4 }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 4 - }, -/turf/simulated/floor/tiled, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled/monotile, /area/rnd/research) "avY" = ( /obj/structure/sign/deck/third, @@ -13341,23 +13313,16 @@ /turf/simulated/floor/tiled, /area/rnd/research/researchdivision) "awy" = ( -/obj/structure/table/reinforced, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/firedoor/glass, -/obj/item/weapon/folder/white, -/obj/item/weapon/paper_bin{ - pixel_x = -1; - pixel_y = 4 +/obj/effect/floor_decal/borderfloor{ + dir = 4 }, -/obj/item/weapon/pen, -/obj/machinery/door/window/brigdoor/westright{ - name = "Research Desk"; - req_access = list(7); - req_one_access = list(47) +/obj/effect/floor_decal/corner/mauve/border{ + dir = 4 }, -/turf/simulated/floor/tiled/monotile, +/turf/simulated/floor/tiled, /area/rnd/research) "awz" = ( /obj/item/weapon/storage/secure/safe{ @@ -14582,10 +14547,13 @@ /turf/simulated/floor/tiled, /area/rnd/staircase/thirdfloor) "aym" = ( -/obj/machinery/autolathe{ - hacked = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/simulated/floor/holofloor/tiled/dark, +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, /area/rnd/research) "ayn" = ( /obj/structure/sign/directions/evac{ @@ -14657,30 +14625,18 @@ /turf/simulated/floor/tiled, /area/rnd/research/researchdivision) "ayt" = ( -/obj/structure/flora/pottedplant/stoutbush, -/obj/effect/floor_decal/borderfloor{ +/obj/effect/floor_decal/corner/mauve{ + dir = 10 + }, +/obj/effect/floor_decal/corner/mauve{ dir = 5 }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 5 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 +/obj/structure/table/standard, +/obj/machinery/recharger{ + pixel_y = 0 }, /turf/simulated/floor/tiled, -/area/rnd/research/researchdivision) +/area/rnd/research) "ayu" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/borderfloor{ @@ -15004,79 +14960,64 @@ /turf/simulated/floor/tiled, /area/rnd/research/researchdivision) "ayV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/autolathe{ + hacked = 1 }, -/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 - }, -/turf/simulated/floor/tiled, -/area/rnd/research/researchdivision) -"ayW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/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/effect/floor_decal/steeldecal/steel_decals4{ +/obj/effect/floor_decal/corner/mauve{ dir = 10 }, -/obj/effect/floor_decal/steeldecal/steel_decals4, -/turf/simulated/floor/tiled, -/area/rnd/research/researchdivision) -"ayX" = ( -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 +/obj/effect/floor_decal/corner/mauve{ + dir = 5 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/turf/simulated/floor/tiled, +/area/rnd/research) +"ayW" = ( +/obj/structure/table/glass, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 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/manifold/hidden/supply, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ +/obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 1 }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 +/obj/structure/noticeboard{ + pixel_y = -26 + }, +/obj/item/weapon/paper{ + desc = ""; + info = "Please wear hearing and eye protection when testing firearms."; + name = "note to science staff" }, /turf/simulated/floor/tiled, -/area/rnd/research_foyer) +/area/rnd/staircase/thirdfloor) +"ayX" = ( +/obj/structure/flora/pottedplant/stoutbush, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/bordercorner2{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "ayY" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -15096,69 +15037,45 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "ayZ" = ( -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/effect/floor_decal/corner/mauve/border{ dir = 1 }, +/obj/structure/bed/chair, /obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 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/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, -/area/rnd/research_foyer) +/area/rnd/research/researchdivision) "aza" = ( -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 2 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/mauve/border{ dir = 1 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 - }, /turf/simulated/floor/tiled, -/area/rnd/research_foyer) +/area/rnd/research/researchdivision) "azb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/door/airlock/research{ - id_tag = "researchdoor"; - name = "Research Division Access"; - req_access = list(47) +/obj/effect/floor_decal/corner/mauve/bordercorner{ + dir = 1 }, /turf/simulated/floor/tiled, -/area/rnd/research_foyer) +/area/hallway/lower/third_south) "azc" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -15432,97 +15349,66 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "azy" = ( -/obj/structure/closet/firecloset, -/obj/effect/floor_decal/borderfloor{ - dir = 6 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 6 +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" }, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 6 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, /turf/simulated/floor/tiled, /area/rnd/research/researchdivision) "azz" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 10 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 8 - }, -/obj/machinery/shower{ - dir = 4; - icon_state = "shower"; - pixel_x = 2; - pixel_y = 0 - }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 5 - }, -/obj/machinery/alarm{ - dir = 1; - pixel_y = -25 +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research_foyer) +/area/rnd/research/researchdivision) "azA" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/mauve/border, -/obj/machinery/light, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/floor_decal/steeldecal/steel_decals3{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/effect/floor_decal/steeldecal/steel_decals3{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research_foyer) +/area/rnd/research/researchdivision) "azB" = ( -/turf/simulated/wall, -/area/rnd/research_foyer) -"azC" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 6 - }, -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research_foyer) +/area/rnd/research/researchdivision) +"azC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "azD" = ( /turf/simulated/wall, /area/assembly/chargebay) @@ -15532,11 +15418,6 @@ "azF" = ( /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, /area/hallway/lower/third_south) "azG" = ( @@ -15566,11 +15447,6 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "azJ" = ( @@ -15614,32 +15490,17 @@ /turf/simulated/wall/r_wall, /area/rnd/research/testingrange) "azM" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 9 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 10 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 10 - }, -/obj/structure/table/reinforced, -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - cell_type = /obj/item/weapon/cell/super; - dir = 8; - name = "west bump"; - pixel_x = -30 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research_foyer) +/area/hallway/lower/third_south) "azN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -15879,25 +15740,18 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "aAg" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 5 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 5 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/machinery/light_switch{ - pixel_x = 25 - }, -/obj/structure/closet/firecloset, +/obj/machinery/door/firedoor/glass/hidden/steel, /turf/simulated/floor/tiled, -/area/rnd/research_foyer) +/area/rnd/research/researchdivision) "aAh" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -17004,23 +16858,21 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "aBH" = ( -/obj/structure/table/glass, -/obj/machinery/recharger{ +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1; pixel_y = 0 }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ +/obj/effect/floor_decal/corner/mauve/border{ dir = 1 }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/mauve/border, +/obj/structure/bed/chair, /obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 + dir = 4 }, +/obj/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, -/area/rnd/staircase/thirdfloor) +/area/rnd/research/researchdivision) "aBI" = ( /obj/structure/table/reinforced, /obj/structure/cable/green{ @@ -17170,28 +17022,27 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "aBS" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals3{ + dir = 8 + }, +/obj/machinery/camera/network/research, +/obj/structure/bed/chair, +/obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 4 }, -/obj/machinery/door/firedoor/glass, -/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/machinery/door/airlock/research{ - id_tag = "researchdoor"; - name = "Research Division Access"; - req_access = list(47) - }, +/obj/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, -/area/rnd/research_foyer) +/area/rnd/research/researchdivision) "aBT" = ( /obj/structure/table/wooden_reinforced, /obj/machinery/ai_status_display{ @@ -17488,26 +17339,21 @@ /turf/simulated/floor/tiled/dark, /area/rnd/outpost/xenobiology/outpost_hallway) "aCn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/effect/floor_decal/borderfloor{ - dir = 8 + dir = 1; + pixel_y = 0 }, /obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 10 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 10 + dir = 1 }, +/obj/structure/bed/chair, /obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 + dir = 4 }, +/obj/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, -/area/hallway/lower/third_south) +/area/rnd/research/researchdivision) "aCo" = ( /obj/structure/table/gamblingtable, /obj/item/weapon/deck/cards, @@ -17816,22 +17662,16 @@ /turf/simulated/floor/carpet, /area/tether/surfacebase/library/study) "aCN" = ( -/obj/structure/noticeboard{ - pixel_y = -26 - }, -/obj/item/weapon/paper{ - desc = ""; - info = "Please wear hearing and eye protection when testing firearms."; - name = "note to science staff" - }, /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/mauve/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/mauve/bordercorner2, /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 1 }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/rnd/research/researchdivision) "aCO" = ( @@ -17933,23 +17773,16 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "aCV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 1 }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, /turf/simulated/floor/tiled, -/area/hallway/lower/third_south) +/area/rnd/research/researchdivision) "aCW" = ( /obj/structure/table/gamblingtable, /obj/item/weapon/storage/pill_bottle/dice_nerd, @@ -19688,26 +19521,20 @@ /turf/simulated/floor/tiled, /area/rnd/research/researchdivision) "aFT" = ( -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 8 +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/obj/structure/closet/hydrant{ + pixel_x = 0; + pixel_y = -32 }, /obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 }, /turf/simulated/floor/tiled, -/area/hallway/lower/third_south) +/area/rnd/research/researchdivision) "aFU" = ( /obj/structure/bookcase{ name = "bookcase (Religious)" @@ -20369,44 +20196,19 @@ /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) "aGU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 10 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"aGV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"aGV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) @@ -21035,18 +20837,17 @@ /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) "aHP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/obj/machinery/light, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/research{ - id_tag = "researchdoor"; - name = "Robotics Lab"; - req_access = list(29,47); - req_one_access = list(47) +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 }, -/turf/simulated/floor/tiled/steel_grid, -/area/assembly/robotics) +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "aHQ" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -21062,15 +20863,10 @@ /area/hallway/lower/third_south) "aHR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 4; - icon_state = "1-4" + dir = 4 }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) @@ -21105,11 +20901,6 @@ /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 8 }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "aHU" = ( @@ -23320,7 +23111,7 @@ /obj/machinery/door/airlock/research{ name = "Xenobiology Equipment Storage"; req_access = list(); - req_one_access = list(47,55) + req_one_access = list(55) }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -25479,7 +25270,7 @@ /obj/machinery/door/airlock/research{ name = "Xenobiology Office"; req_access = list(); - req_one_access = list(47,55) + req_one_access = list(55) }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -25850,7 +25641,7 @@ /obj/machinery/door/airlock/research{ name = "Xenobiology Office"; req_access = list(); - req_one_access = list(47,55) + req_one_access = list(55) }, /obj/machinery/door/firedoor, /turf/simulated/floor/tiled/steel, @@ -26081,7 +25872,7 @@ /obj/machinery/door/airlock/research{ name = "Xenobiology Autopsy Room"; req_access = list(); - req_one_access = list(47,55) + req_one_access = list(55) }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -26279,7 +26070,7 @@ /obj/machinery/door/airlock/research{ name = "Xenobiology Autopsy Room"; req_access = list(); - req_one_access = list(47,55) + req_one_access = list(55) }, /obj/machinery/door/firedoor, /turf/simulated/floor/tiled/steel, @@ -29035,10 +28826,13 @@ /turf/simulated/wall/r_wall, /area/tether/surfacebase/security/lobby) "aWf" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/simulated/floor/reinforced, -/turf/simulated/shuttle/plating/carry, -/area/shuttle/tether) +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "aWg" = ( /obj/structure/sign/directions/evac{ dir = 8 @@ -29082,12 +28876,39 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) "aWj" = ( -/obj/machinery/atmospherics/unary/engine{ - dir = 1 +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 }, -/turf/simulated/floor/reinforced, -/turf/simulated/shuttle/plating/carry, -/area/shuttle/tourbus/engines) +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"aWk" = ( +/obj/structure/sign/department/sci{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "aWl" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -29189,6 +29010,12 @@ /obj/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) +"aWr" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/assembly/robotics) "aWs" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -29664,6 +29491,31 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/common) +"aXd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/mauve/bordercorner2{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "aXe" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -29763,6 +29615,31 @@ dir = 4 }, /area/library) +"aXm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor/westright{ + name = "Robotics Desk"; + req_access = list(7); + req_one_access = list(47) + }, +/obj/item/weapon/paper_bin{ + pixel_x = -1; + pixel_y = 4 + }, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled/steel_grid, +/area/assembly/robotics) +"aXn" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "aXo" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -29777,6 +29654,11 @@ }, /turf/simulated/floor/wood, /area/library) +"aXp" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "aXq" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -29853,16 +29735,6 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "aXu" = ( -/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, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"aXv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -29870,21 +29742,38 @@ dir = 4 }, /obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/green{ - icon_state = "1-8" + d1 = 1; + d2 = 4; + icon_state = "1-4" }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"aXx" = ( +"aXv" = ( +/obj/structure/noticeboard{ + pixel_y = -26 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"aXw" = ( /obj/structure/closet/hydrant{ pixel_x = 32 }, +/obj/structure/bookcase/bookcart, /turf/simulated/floor/wood, /area/library) +"aXx" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/reinforced, +/turf/simulated/shuttle/plating/carry, +/area/shuttle/tether) "aXy" = ( /obj/structure/table/standard, /obj/item/weapon/gun/energy/taser/xeno, @@ -29923,6 +29812,13 @@ }, /turf/simulated/floor/tiled/white, /area/rnd/outpost/xenobiology/outpost_first_aid) +"aXB" = ( +/obj/machinery/atmospherics/unary/engine{ + dir = 1 + }, +/turf/simulated/floor/reinforced, +/turf/simulated/shuttle/plating/carry, +/area/shuttle/tourbus/engines) "aXC" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -32737,6 +32633,10 @@ }, /turf/simulated/floor/tiled/steel_dirty, /area/shuttle/tourbus/general) +"xHg" = ( +/obj/random/cutout, +/turf/simulated/floor/plating, +/area/vacant/vacant_site/gateway) "xHL" = ( /obj/effect/floor_decal/rust/part_rusted1, /obj/machinery/atmospherics/binary/pump, @@ -39900,7 +39800,7 @@ aTV aTZ aTZ aTZ -aTW +xHg aTW aTW aTW @@ -40651,11 +40551,11 @@ auV auV ayk ayT -aBH +ayW afK aBi aFS -aCN +aXv azL aBI aBW @@ -41789,7 +41689,7 @@ axj axE ayo ays -ayV +azy azw aCA aGT @@ -41930,9 +41830,9 @@ awY axl axJ auY -ayt -ayW -azy +ayX +azA +aCN aBn aAq atZ @@ -42072,9 +41972,9 @@ awZ axz axL atU -azB -aBS -azB +ayZ +azA +aCV azE aAU aHL @@ -42214,9 +42114,9 @@ avx axA axM atU -azM -ayX +aBH azz +aFT azE aAV aBO @@ -42349,16 +42249,16 @@ aux aux aud atT -auX +anA avQ -avX -axa +awy +asb axa ayj -atU amh -ayZ -azA +aBS +azB +aHP azE aAX aHN @@ -42491,16 +42391,16 @@ aux avY aud atT -atU -auY -awy -auY -atU +amh +avX aym atU -aAg -aza +ayt +ayV +atU +aCn azC +aCV azE aAZ aHO @@ -42633,19 +42533,19 @@ auZ avZ awF atU -atU +aoc azk aGB -azk +atU atU ayn atU -azB -azb -azB +aza +aAg +aWf azE -azE -aHP +aWr +aXm azE azD asl @@ -42782,11 +42682,11 @@ aHl ayY aBR aBY -aCn -aCV -aFT -aBY -aGU +azb +azM +aWj +aWk +aXd aHQ aIx aJm @@ -42917,19 +42817,19 @@ avz aEr aEr axd -anA -aoc -aoc +aEr +aEr +aEr aoe -aoc -aoc -asb +aEr +aEr +auX azF azI azF azF +aGU aGV -aHR aAs aJm aJX @@ -43071,7 +42971,7 @@ axy aXe aCE aGW -aIa +aHR aAs aJm aJY @@ -43213,7 +43113,7 @@ axg axg aXk aGX -aIa +aHR aqS azD azD @@ -43497,7 +43397,7 @@ aHc aXf axg aGZ -aIa +aHR awf aJn aKa @@ -43639,7 +43539,7 @@ aHe aXg axg aHa -aIa +aHR awf ats aKb @@ -43781,7 +43681,7 @@ aFU aXh axg aHb -aIa +aHR awf aJn aKa @@ -43797,7 +43697,7 @@ mfi jHw jpB qWU -aWj +aXB aKU aOI aPb @@ -43923,7 +43823,7 @@ azT aXh axi aGX -aIa +aHR awf aJn aKa @@ -44065,7 +43965,7 @@ aHg aXi axk aXq -aHZ +aXn aIy ats aKD @@ -44207,7 +44107,7 @@ azT aXj axS aXr -aXu +aXp awf aJn aKa @@ -44349,7 +44249,7 @@ aFr aFr aXl aXs -aXv +aXu aIz aJn aKa @@ -44488,7 +44388,7 @@ aFd aFs azT aMk -aXx +aXw axg aXt aIa @@ -44649,7 +44549,7 @@ isR jHw gHh qWU -aWj +aXB aKU aOI aPb @@ -46634,7 +46534,7 @@ aNk uSA aNJ aNP -aWf +aXx aKU abg aOk @@ -46776,7 +46676,7 @@ aNl aNl aNK aNP -aWf +aXx aKU abg aOk @@ -46918,7 +46818,7 @@ aNm aNl aNK aNP -aWf +aXx aKU abg aOk diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index bc473fd7da..3df928336f 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -2242,6 +2242,7 @@ "aei" = ( /obj/structure/table/reinforced, /obj/machinery/camera/network/engineering, +/obj/item/clothing/shoes/magboots/adv, /turf/simulated/floor/tiled, /area/crew_quarters/heads/chief) "aej" = ( @@ -2760,17 +2761,13 @@ /turf/simulated/floor/tiled, /area/engineering/hallway) "aeW" = ( -/turf/simulated/floor/tiled{ - icon_state = "techmaint" - }, +/turf/simulated/floor/tiled/techmaint, /area/engineering/storage) "aeX" = ( /obj/machinery/status_display{ pixel_y = 32 }, -/turf/simulated/floor/tiled{ - icon_state = "techmaint" - }, +/turf/simulated/floor/tiled/techmaint, /area/engineering/storage) "aeY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -4813,9 +4810,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/tiled{ - icon_state = "techmaint" - }, +/turf/simulated/floor/tiled/techmaint, /area/engineering/storage) "ahS" = ( /obj/machinery/gateway/centerstation, @@ -4828,9 +4823,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, -/turf/simulated/floor/tiled{ - icon_state = "techmaint" - }, +/turf/simulated/floor/tiled/techmaint, /area/engineering/storage) "ahU" = ( /obj/effect/floor_decal/borderfloor{ @@ -5323,9 +5316,7 @@ "aiN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled{ - icon_state = "techmaint" - }, +/turf/simulated/floor/tiled/techmaint, /area/engineering/storage) "aiO" = ( /obj/structure/cable{ @@ -6064,9 +6055,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled{ - icon_state = "techmaint" - }, +/turf/simulated/floor/tiled/techmaint, /area/engineering/storage) "akm" = ( /obj/effect/floor_decal/industrial/outline/yellow, @@ -6526,9 +6515,7 @@ req_access = list(11); req_one_access = newlist() }, -/turf/simulated/floor/tiled{ - icon_state = "techmaint" - }, +/turf/simulated/floor/tiled/steel_grid, /area/engineering/storage) "ala" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -6561,9 +6548,7 @@ req_access = list(11); req_one_access = newlist() }, -/turf/simulated/floor/tiled{ - icon_state = "techmaint" - }, +/turf/simulated/floor/tiled/steel_grid, /area/engineering/storage) "ald" = ( /obj/structure/cable/green{ @@ -7970,15 +7955,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, /turf/simulated/floor/tiled, /area/engineering/hallway) "anC" = ( @@ -8014,18 +7997,29 @@ d2 = 8; icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, /obj/structure/disposalpipe/segment{ dir = 2; icon_state = "pipe-c" }, -/turf/simulated/floor, -/area/maintenance/station/eng_lower) +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) "anE" = ( /obj/structure/symbol/lo{ pixel_y = 32 @@ -8056,8 +8050,11 @@ name = "Engineering Lockdown"; opacity = 0 }, -/obj/machinery/door/airlock/maintenance/engi, -/turf/simulated/floor, +/obj/machinery/door/airlock/engineering{ + name = "Gravity Generator"; + req_access = list(11) + }, +/turf/simulated/floor/tiled/steel_grid, /area/engineering/hallway) "anG" = ( /obj/structure/bookcase, @@ -8558,6 +8555,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/rust, +/obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor, /area/maintenance/station/eng_lower) "aoI" = ( @@ -13707,7 +13705,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/atrium) "axz" = ( -/obj/structure/reagent_dispensers/watertank, +/obj/structure/reagent_dispensers/foam, /turf/simulated/floor/tiled, /area/storage/tools) "axA" = ( @@ -18447,6 +18445,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled, /area/tether/station/dock_two) +"aHe" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) "aHt" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 1 @@ -19609,6 +19612,17 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/crew_quarters/heads/chief) +"aOU" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) "aOW" = ( /obj/structure/table/reinforced, /obj/machinery/button/remote/blast_door{ @@ -19687,6 +19701,21 @@ }, /turf/simulated/floor/carpet, /area/engineering/foyer) +"aPE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) "aQa" = ( /obj/structure/table/rack{ dir = 8; @@ -20430,6 +20459,15 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/atrium) +"aWA" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) "aWJ" = ( /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 9 @@ -20609,6 +20647,16 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, /area/hallway/station/atrium) +"aYA" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) "aYF" = ( /obj/structure/table/reinforced, /obj/machinery/computer/skills, @@ -21580,6 +21628,15 @@ /obj/fiftyspawner/plastic, /turf/simulated/floor/tiled, /area/engineering/workshop) +"bkU" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_lobby) "bmv" = ( /obj/structure/cable/green{ d1 = 1; @@ -22681,6 +22738,12 @@ /obj/effect/map_helper/airlock/door/ext_door, /turf/simulated/floor/tiled, /area/tether/station/dock_two) +"bVn" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/gravity_gen) "bXl" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, @@ -22957,6 +23020,20 @@ /obj/machinery/power/thermoregulator, /turf/simulated/floor, /area/engineering/storage) +"chD" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 6 + }, +/obj/structure/closet/radiation, +/obj/effect/floor_decal/corner_steel_grid{ + icon_state = "steel_grid"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) "col" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -22966,6 +23043,27 @@ }, /turf/simulated/floor/plating, /area/tether/station/dock_two) +"cto" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance_hatch{ + frequency = 1379; + id_tag = "gravity_outer"; + req_access = list(11) + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) "cwR" = ( /obj/effect/shuttle_landmark{ base_area = /area/space; @@ -22975,6 +23073,61 @@ }, /turf/space, /area/space) +"cEi" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 6 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) +"cRa" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_lobby) +"cTc" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor/hole/right{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor/hole{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/gravity_gen) +"dls" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) "dlV" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, @@ -22994,12 +23147,86 @@ }, /turf/simulated/floor/plating, /area/tether/station/dock_one) +"dnX" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/structure/cable{ + 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 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"dop" = ( +/obj/effect/decal/cleanable/dirt, +/obj/random/cutout, +/turf/simulated/floor, +/area/vacant/vacant_restaurant_lower) +"dsY" = ( +/obj/effect/floor_decal/corner_techfloor_grid, +/obj/effect/floor_decal/techfloor/corner, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"dtd" = ( +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"dJL" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"dOQ" = ( +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/machinery/door/window/brigdoor/westright{ + req_access = list(11) + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) "dRy" = ( /obj/machinery/lapvend{ dir = 4 }, /turf/simulated/floor/tiled, /area/storage/tools) +"dZN" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) "ezX" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, @@ -23018,14 +23245,271 @@ }, /turf/space, /area/space) +"eYw" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"fgA" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"fEF" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/alarm{ + alarm_id = null; + breach_detection = 0; + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) +"fUR" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/power/apc/super{ + dir = 1; + pixel_y = 28 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) +"ghJ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -35; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"gHF" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = 0; + pixel_y = 0 + }, +/turf/simulated/wall/r_wall, +/area/engineering/gravity_lobby) +"gOT" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 8 + }, +/obj/machinery/airlock_sensor{ + command = "cycle_exterior"; + dir = 4; + id_tag = "gravity_esensor"; + master_tag = "gravity_airlock"; + pixel_x = -28; + req_access = list(11) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) +"hxy" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/gravity_gen) +"hxD" = ( +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor/corner{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"hGr" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 10 + }, +/obj/effect/floor_decal/corner_steel_grid{ + icon_state = "steel_grid"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) "hPi" = ( /obj/machinery/light/small, /turf/simulated/floor, /area/engineering/shaft) -"jRS" = ( +"hWs" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/gravity_gen) +"hZW" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"iaf" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor/hole/right{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor/hole{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/gravity_gen) +"inf" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) +"ioI" = ( +/obj/effect/floor_decal/rust, /obj/random/junk, /turf/simulated/floor, /area/maintenance/station/eng_lower) +"iOq" = ( +/obj/effect/floor_decal/techfloor/orange, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/gravity_gen) +"jcJ" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/airlock_sensor{ + dir = 1; + id_tag = "gravity_csensor"; + master_tag = "gravity_airlock"; + pixel_y = -28; + req_access = list(11) + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_lobby) +"juI" = ( +/obj/random/cutout, +/turf/simulated/floor, +/area/maintenance/station/abandonedholodeck) +"jIo" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) +"jNX" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"jOe" = ( +/obj/effect/floor_decal/corner_steel_grid{ + icon_state = "steel_grid"; + dir = 9 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) +"jXR" = ( +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) "klO" = ( /obj/structure/window/reinforced{ dir = 8 @@ -23033,6 +23517,28 @@ /obj/machinery/door/window/northleft, /turf/simulated/floor/outdoors/grass/forest, /area/crew_quarters/heads/chief) +"kth" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"kxG" = ( +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) "kCH" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, @@ -23062,6 +23568,42 @@ /obj/effect/map_helper/airlock/sensor/chamber_sensor, /turf/simulated/floor/tiled/dark, /area/tether/station/dock_one) +"kXK" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"lfK" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"lCO" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 9 + }, +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/corner_steel_grid, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) +"lFA" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 9 + }, +/obj/effect/floor_decal/corner_steel_grid, +/obj/structure/table/standard, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) "lGA" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, @@ -23074,6 +23616,21 @@ }, /turf/simulated/floor/plating, /area/tether/station/dock_one) +"lTD" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 6 + }, +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/corner_steel_grid{ + icon_state = "steel_grid"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) "mnt" = ( /obj/effect/shuttle_landmark{ base_area = /area/space; @@ -23083,6 +23640,26 @@ }, /turf/space, /area/space) +"mqL" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + icon_state = "danger"; + dir = 4 + }, +/obj/effect/floor_decal/corner_steel_grid{ + icon_state = "steel_grid"; + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) +"mtm" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/gravity_gen) "mNU" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, @@ -23092,6 +23669,18 @@ }, /turf/simulated/floor/plating, /area/tether/station/dock_one) +"mPs" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) "nov" = ( /obj/structure/railing, /obj/structure/table/rack{ @@ -23103,6 +23692,38 @@ /obj/random/tech_supply, /turf/simulated/floor, /area/engineering/shaft) +"nCV" = ( +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"obA" = ( +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor/corner{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) "odO" = ( /obj/effect/shuttle_landmark{ base_area = /area/space; @@ -23113,6 +23734,52 @@ }, /turf/space, /area/space) +"odW" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 5 + }, +/obj/structure/closet/radiation, +/obj/effect/floor_decal/corner_steel_grid{ + icon_state = "steel_grid"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"ort" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) +"oxr" = ( +/obj/effect/floor_decal/techfloor, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) "oEH" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 @@ -23120,6 +23787,44 @@ /obj/machinery/light, /turf/simulated/floor/tiled, /area/hallway/station/docks) +"oZb" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/engineering/gravity_lobby) +"pbR" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"plz" = ( +/turf/simulated/wall/r_wall, +/area/engineering/gravity_gen) +"pny" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"psh" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) "pQN" = ( /obj/effect/shuttle_landmark{ base_area = /area/space; @@ -23130,6 +23835,76 @@ }, /turf/space, /area/space) +"pXr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/effect/floor_decal/corner_steel_grid{ + icon_state = "steel_grid"; + dir = 6 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"qer" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 5 + }, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/effect/floor_decal/corner_steel_grid{ + icon_state = "steel_grid"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"qiQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"quP" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"qvg" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 5 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) +"qxn" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/gravity_gen) "qBc" = ( /obj/structure/disposalpipe/junction{ dir = 1; @@ -23137,6 +23912,125 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/atrium) +"rbZ" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_lobby) +"rxE" = ( +/obj/structure/sign/department/gravi{ + pixel_x = 32 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/engineering/gravity_lobby) +"rys" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"rzK" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "gravity_pump" + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_lobby) +"rAZ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/airlock_sensor{ + command = "cycle_interior"; + dir = 8; + id_tag = "gravity_isensor"; + master_tag = "gravity_airlock"; + pixel_x = 28; + req_access = list(11) + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"rEb" = ( +/turf/simulated/wall/r_wall, +/area/engineering/gravity_lobby) +"sbX" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"scu" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + icon_state = "danger"; + dir = 4 + }, +/obj/effect/floor_decal/corner_steel_grid{ + icon_state = "steel_grid"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) "scB" = ( /obj/machinery/computer/shuttle_control/tether_backup{ icon_state = "computer"; @@ -23144,6 +24038,90 @@ }, /turf/simulated/floor/tiled, /area/tether/station/dock_one) +"shi" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/engineering/gravity_lobby) +"sjw" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering{ + name = "Gravity Generator"; + req_access = list(11) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/gravity_lobby) +"sqw" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"sTb" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"sUY" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"tsV" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"tCZ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"tGV" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) "tKI" = ( /obj/machinery/access_button{ command = "cycle_exterior"; @@ -23158,6 +24136,56 @@ /obj/effect/map_helper/airlock/door/ext_door, /turf/simulated/floor/tiled/dark, /area/tether/station/dock_one) +"uhN" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/yellow/bordercorner, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"uyn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"uOm" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"uUL" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 10 + }, +/obj/effect/floor_decal/corner_steel_grid{ + icon_state = "steel_grid"; + dir = 4 + }, +/obj/item/device/geiger, +/obj/structure/table/standard, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) +"uZh" = ( +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/machinery/door/window/brigdoor/westleft{ + req_access = list(11) + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"uZR" = ( +/obj/machinery/gravity_generator/main/station, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/gravity_gen) "vbm" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, @@ -23178,16 +24206,119 @@ }, /turf/space, /area/space) +"vxw" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) "vyI" = ( /mob/living/simple_mob/animal/passive/bird/parrot/poly, /turf/simulated/floor/outdoors/grass/forest, /area/crew_quarters/heads/chief) +"vAQ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/structure/cable{ + 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 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) +"vCw" = ( +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"vLS" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + frequency = 1379; + id_tag = "gravity_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{ + dir = 8; + id_tag = "gravity_airlock"; + name = "Gravity Generator Airlock"; + pixel_x = 24; + req_access = list(11); + tag_airpump = "gravity_pump"; + tag_chamber_sensor = "gravity_csensor"; + tag_exterior_door = "gravity_outer"; + tag_exterior_sensor = "gravity_esensor"; + tag_interior_door = "gravity_inner"; + tag_interior_sensor = "gravity_isensor" + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_lobby) +"vYM" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/engineering/gravity_gen) "wlD" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor/plating, /area/tether/station/dock_one) +"wDo" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor, +/area/maintenance/station/eng_lower) +"xdE" = ( +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/gravity_gen) "xfY" = ( /obj/structure/disposalpipe/junction{ dir = 8; @@ -23195,6 +24326,40 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/atrium) +"xiv" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/gravity_gen) +"xEU" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + frequency = 1379; + id_tag = "gravity_inner"; + req_access = list(11) + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) "xMk" = ( /obj/structure/cable/green{ icon_state = "16-0" @@ -23209,6 +24374,25 @@ /obj/structure/railing, /turf/simulated/floor, /area/engineering/shaft) +"ykG" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/gravity_lobby) (1,1,1) = {" aaa @@ -29104,7 +30288,7 @@ and aTX aVN alv -bYl +dop bYl bYj bYj @@ -32060,8 +33244,8 @@ aeG aiO aiO aiO -aeG -aeG +wDo +shi anD aoH apU @@ -32202,11 +33386,11 @@ aik aik aik aik -ack -ack -ack -jRS -ach +aik +rxE +dnX +aik +ioI ach acj aiR @@ -32342,18 +33526,18 @@ ack ack ack ack -ack -aik -aik -aik -aik -aik -aik -aik -aik -aik -aik aik +rEb +rEb +rEb +sjw +rEb +rEb +rEb +rEb +rEb +rEb +rEb aik ach aBH @@ -32484,18 +33668,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +rEb +sbX +pbR +vAQ +jNX +rys +eYw +ghJ +sTb +dls +rEb aik azD aBR @@ -32626,18 +33810,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +rEb +fgA +hZW +vxw +uOm +ykG +qiQ +qiQ +uyn +aHe +rEb aik azB alQ @@ -32768,18 +33952,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +rEb +fgA +uhN +tCZ +aPE +pXr +rAZ +aYA +kth +aHe +rEb aik azB alT @@ -32910,18 +34094,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +rEb +odW +chD +gHF +oZb +xEU +oZb +rEb +qer +lTD +rEb aik azJ alT @@ -33052,18 +34236,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +plz +plz +rEb +bkU +rbZ +jcJ +rEb +plz +plz +plz aik azJ alT @@ -33194,18 +34378,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +lFA +uUL +rEb +vLS +cRa +rzK +rEb +lCO +hGr +plz afC azI alT @@ -33336,18 +34520,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +aOU +psh +rEb +rEb +cto +rEb +gHF +aOU +psh +plz afC abX acw @@ -33478,18 +34662,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +fUR +jIo +ort +vYM +jOe +gOT +mPs +inf +fEF +plz afC acc acN @@ -33620,18 +34804,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +qvg +mqL +mqL +mqL +scu +mqL +mqL +mqL +cEi +plz afC acf acn @@ -33762,18 +34946,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +tsV +aWA +kXK +kXK +sqw +tGV +tGV +xiv +dZN +plz afC aih acm @@ -33904,18 +35088,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +pny +dsY +vCw +dOQ +dtd +uZh +vCw +nCV +lfK +plz afC agq aCe @@ -34046,18 +35230,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +pny +oxr +hxy +iaf +iaf +iaf +qxn +jXR +lfK +plz afC aAL acp @@ -34188,18 +35372,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +pny +oxr +hWs +xdE +xdE +xdE +iOq +jXR +lfK +plz afC aak acp @@ -34330,18 +35514,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +pny +oxr +hWs +xdE +xdE +uZR +iOq +jXR +lfK +plz afC aak acp @@ -34472,18 +35656,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +pny +oxr +hWs +xdE +xdE +xdE +iOq +jXR +lfK +plz afC aak acp @@ -34614,18 +35798,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +pny +oxr +bVn +cTc +cTc +cTc +mtm +jXR +lfK +plz afC aak acp @@ -34756,18 +35940,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +pny +obA +kxG +kxG +kxG +kxG +kxG +hxD +lfK +plz afC afg xfY @@ -34898,18 +36082,18 @@ ack ack ack ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack -ack +aik +plz +dJL +sUY +sUY +sUY +sUY +sUY +sUY +sUY +quP +plz afC aiW acp @@ -36758,7 +37942,7 @@ adP aac aac aaf -alo +juI alo alo alo diff --git a/maps/tether/tether-06-station2.dmm b/maps/tether/tether-06-station2.dmm index 15d6ca8535..82e8d15d44 100644 --- a/maps/tether/tether-06-station2.dmm +++ b/maps/tether/tether-06-station2.dmm @@ -19644,7 +19644,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 5 }, -/obj/machinery/mineral/equipment_vendor/survey, +/obj/machinery/chemical_analyzer, /turf/simulated/floor/tiled, /area/tether/exploration/crew) "Ei" = ( @@ -21999,6 +21999,10 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/station/public_meeting_room) +"Sr" = ( +/obj/random/cutout, +/turf/simulated/floor, +/area/maintenance/station/micro) "Sy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -22450,6 +22454,11 @@ dir = 1 }, /area/hallway/station/starboard) +"Wc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/random/cutout, +/turf/simulated/floor, +/area/maintenance/station/sec_lower) "Wi" = ( /obj/machinery/alarm{ pixel_y = 22 @@ -32768,7 +32777,7 @@ FA QG at aO -bf +Wc bx bS ci @@ -34656,7 +34665,7 @@ tu ur vz yJ -eT +Sr eT yJ yj diff --git a/maps/tether/tether-07-station3.dmm b/maps/tether/tether-07-station3.dmm index d795ad646c..d3d445eb13 100644 --- a/maps/tether/tether-07-station3.dmm +++ b/maps/tether/tether-07-station3.dmm @@ -1,35 +1,35 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( +"aaa" = ( /turf/space, /area/space) -"ab" = ( +"aab" = ( /turf/simulated/mineral/vacuum, /area/mine/explored/upper_level) -"ac" = ( +"aac" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/door/airlock/glass_external, /obj/effect/map_helper/airlock/door/ext_door, /turf/simulated/floor, /area/security/eva) -"ad" = ( +"aad" = ( /obj/structure/lattice, /obj/structure/grille, /turf/space, /area/space) -"ae" = ( +"aae" = ( /obj/structure/lattice, /turf/space, /area/space) -"af" = ( +"aaf" = ( /turf/simulated/wall/r_wall, /area/maintenance/station/sec_upper) -"ag" = ( +"aag" = ( /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/tiled, /area/security/eva) -"ah" = ( +"aah" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -46,10 +46,10 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"ai" = ( +"aai" = ( /turf/simulated/wall/r_wall, /area/security/armory/red) -"aj" = ( +"aaj" = ( /obj/structure/table/rack{ dir = 8; layer = 2.6 @@ -67,7 +67,7 @@ /obj/item/clothing/head/helmet/space/void/security, /turf/simulated/floor/tiled/dark, /area/security/eva) -"ak" = ( +"aak" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 8; frequency = 1379; @@ -87,7 +87,7 @@ /obj/effect/map_helper/airlock/sensor/chamber_sensor, /turf/simulated/floor/tiled, /area/security/eva) -"al" = ( +"aal" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -97,7 +97,7 @@ /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"am" = ( +"aam" = ( /obj/machinery/door/airlock/glass_external, /obj/structure/sign/securearea{ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; @@ -115,7 +115,7 @@ /obj/effect/map_helper/airlock/door/int_door, /turf/simulated/floor, /area/security/eva) -"an" = ( +"aan" = ( /obj/machinery/door/airlock/maintenance/sec{ name = "Security Airlock Access"; req_access = list(1,2,18) @@ -123,10 +123,10 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor, /area/security/eva) -"ao" = ( +"aao" = ( /turf/simulated/wall/r_wall, /area/security/armory/blue) -"ap" = ( +"aap" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -141,7 +141,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"aq" = ( +"aaq" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -159,7 +159,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"ar" = ( +"aar" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8; icon_state = "map" @@ -175,14 +175,14 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"as" = ( +"aas" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_security{ req_one_access = list(1,38) }, /turf/simulated/floor/tiled, /area/security/hallway) -"at" = ( +"aat" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 4; @@ -196,19 +196,15 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"au" = ( +"aau" = ( /obj/machinery/door/window/northright, /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/security/range) -"av" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +"aav" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/cable/green{ @@ -216,17 +212,16 @@ d2 = 8; icon_state = "4-8" }, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/door/airlock/command{ - id_tag = "HoSdoor"; - name = "Head of Security"; - req_access = list(58) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/turf/simulated/floor/wood, -/area/crew_quarters/heads/hos) -"aw" = ( +/obj/machinery/door/airlock/glass_security, +/turf/simulated/floor/tiled, +/area/security/hallway) +"aaw" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -240,7 +235,7 @@ /obj/machinery/camera/network/security, /turf/simulated/floor/tiled, /area/security/eva) -"ax" = ( +"aax" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/door/airlock/glass_external, /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -250,13 +245,13 @@ /obj/effect/map_helper/airlock/door/int_door, /turf/simulated/floor, /area/security/eva) -"ay" = ( +"aay" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/cobweb, /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, /area/security/eva) -"az" = ( +"aaz" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 }, @@ -264,7 +259,7 @@ /obj/machinery/light, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"aA" = ( +"aaA" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -285,7 +280,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"aB" = ( +"aaB" = ( /obj/machinery/power/apc{ dir = 8; name = "west bump"; @@ -303,7 +298,7 @@ }, /turf/simulated/floor/tiled, /area/security/range) -"aC" = ( +"aaC" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -314,7 +309,7 @@ }, /turf/simulated/floor/tiled, /area/security/range) -"aD" = ( +"aaD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -327,7 +322,7 @@ }, /turf/simulated/floor/tiled, /area/security/range) -"aE" = ( +"aaE" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 }, @@ -340,7 +335,7 @@ }, /turf/simulated/floor/tiled, /area/security/range) -"aF" = ( +"aaF" = ( /obj/structure/railing{ dir = 4 }, @@ -352,7 +347,7 @@ /obj/random/maintenance/engineering, /turf/simulated/floor, /area/maintenance/station/ai) -"aG" = ( +"aaG" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -371,7 +366,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"aH" = ( +"aaH" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 }, @@ -381,15 +376,15 @@ /obj/structure/table/rack/steel, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"aI" = ( +"aaI" = ( /turf/simulated/wall, /area/maintenance/station/sec_upper) -"aJ" = ( +"aaJ" = ( /obj/structure/lattice, /obj/structure/railing, /turf/space, /area/space) -"aK" = ( +"aaK" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -402,7 +397,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"aL" = ( +"aaL" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -428,7 +423,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"aM" = ( +"aaM" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -447,7 +442,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"aN" = ( +"aaN" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -469,11 +464,11 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"aO" = ( +"aaO" = ( /obj/structure/sign/warning/secure_area, /turf/simulated/wall/r_wall, /area/space) -"aP" = ( +"aaP" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/structure/table/reinforced, @@ -498,7 +493,7 @@ }, /turf/simulated/floor/tiled, /area/security/range) -"aQ" = ( +"aaQ" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -521,7 +516,7 @@ }, /turf/simulated/floor/tiled, /area/security/range) -"aR" = ( +"aaR" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/effect/floor_decal/borderfloor/corner2{ @@ -544,7 +539,7 @@ /obj/item/ammo_magazine/m45/practice, /turf/simulated/floor/tiled, /area/security/range) -"aS" = ( +"aaS" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, @@ -560,7 +555,7 @@ /obj/item/weapon/storage/bag/trash, /turf/simulated/floor/tiled, /area/security/range) -"aT" = ( +"aaT" = ( /obj/structure/table/rack{ dir = 8; layer = 2.6 @@ -573,10 +568,10 @@ }, /turf/simulated/floor/tiled/dark, /area/security/eva) -"aU" = ( +"aaU" = ( /turf/simulated/wall/r_wall, /area/security/eva) -"aV" = ( +"aaV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -586,7 +581,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"aW" = ( +"aaW" = ( /obj/machinery/power/apc{ dir = 2; name = "south bump"; @@ -606,7 +601,7 @@ /obj/effect/floor_decal/corner/red/bordercorner2, /turf/simulated/floor/tiled, /area/security/eva) -"aX" = ( +"aaX" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/portable_atmospherics/canister/oxygen, @@ -615,13 +610,13 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"aY" = ( +"aaY" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /turf/simulated/floor/tiled, /area/security/eva) -"aZ" = ( +"aaZ" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 }, @@ -632,7 +627,7 @@ /obj/item/clothing/head/helmet/bulletproof, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"ba" = ( +"aba" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, @@ -641,7 +636,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/range) -"bb" = ( +"abb" = ( /obj/machinery/door/window/northright, /obj/effect/floor_decal/industrial/outline/yellow, /obj/item/device/radio/intercom/department/security{ @@ -656,22 +651,22 @@ }, /turf/simulated/floor/tiled/dark, /area/security/range) -"bc" = ( +"abc" = ( /turf/simulated/wall, /area/security/eva) -"bd" = ( +"abd" = ( /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"be" = ( +"abe" = ( /turf/simulated/wall/r_wall, /area/tether/exploration) -"bf" = ( +"abf" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/range) -"bg" = ( +"abg" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 }, @@ -684,13 +679,13 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"bh" = ( +"abh" = ( /obj/structure/railing{ dir = 1 }, /turf/space, /area/space) -"bi" = ( +"abi" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 5 }, @@ -703,7 +698,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"bj" = ( +"abj" = ( /obj/structure/table/rack{ dir = 8; layer = 2.6 @@ -719,7 +714,7 @@ /obj/item/weapon/tank/jetpack/carbondioxide, /turf/simulated/floor/tiled/dark, /area/security/eva) -"bk" = ( +"abk" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 }, @@ -739,7 +734,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"bl" = ( +"abl" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, @@ -749,10 +744,10 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"bm" = ( +"abm" = ( /turf/simulated/wall, /area/maintenance/substation/security) -"bn" = ( +"abn" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, @@ -763,7 +758,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"bo" = ( +"abo" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -771,7 +766,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"bp" = ( +"abp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, @@ -780,13 +775,13 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"bq" = ( +"abq" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/warden) -"br" = ( +"abr" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -815,7 +810,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"bs" = ( +"abs" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -845,7 +840,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"bt" = ( +"abt" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -872,7 +867,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"bu" = ( +"abu" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -887,7 +882,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"bv" = ( +"abv" = ( /obj/effect/floor_decal/borderfloorblack, /obj/structure/table/steel, /obj/item/weapon/storage/box/shotgunshells{ @@ -904,7 +899,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"bw" = ( +"abw" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -917,7 +912,7 @@ }, /turf/simulated/floor, /area/maintenance/substation/security) -"bx" = ( +"abx" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d2 = 8; @@ -937,7 +932,7 @@ }, /turf/simulated/floor/plating, /area/security/armory/blue) -"by" = ( +"aby" = ( /obj/structure/cable{ d1 = 1; d2 = 2; @@ -954,7 +949,7 @@ }, /turf/simulated/floor, /area/maintenance/substation/security) -"bz" = ( +"abz" = ( /obj/machinery/power/sensor{ name = "Powernet Sensor - Security Subgrid"; name_tag = "Security Subgrid" @@ -969,7 +964,7 @@ }, /turf/simulated/floor, /area/maintenance/substation/security) -"bA" = ( +"abA" = ( /obj/machinery/power/smes/buildable{ charge = 0; output_attempt = 0; @@ -987,13 +982,13 @@ /obj/machinery/camera/network/engineering, /turf/simulated/floor, /area/maintenance/substation/security) -"bB" = ( +"abB" = ( /obj/machinery/power/breakerbox/activated{ RCon_tag = "Security Substation Bypass" }, /turf/simulated/floor, /area/maintenance/substation/security) -"bC" = ( +"abC" = ( /obj/structure/table/reinforced, /obj/item/weapon/stamp/ward, /obj/item/weapon/stamp/denied{ @@ -1001,7 +996,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"bD" = ( +"abD" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -1040,14 +1035,14 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"bE" = ( +"abE" = ( /obj/effect/landmark/start{ name = "Warden" }, /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled/dark, /area/security/warden) -"bF" = ( +"abF" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -1057,7 +1052,7 @@ /obj/structure/disposalpipe/trunk, /turf/simulated/floor/tiled/dark, /area/security/warden) -"bG" = ( +"abG" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, @@ -1075,7 +1070,7 @@ }, /turf/simulated/floor/tiled, /area/security/range) -"bH" = ( +"abH" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -1100,16 +1095,16 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"bI" = ( +"abI" = ( /obj/effect/floor_decal/borderfloor/corner, /obj/effect/floor_decal/corner/red/bordercorner, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"bJ" = ( +"abJ" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, /area/security/eva) -"bK" = ( +"abK" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/firealarm{ @@ -1119,7 +1114,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"bL" = ( +"abL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -1129,7 +1124,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"bM" = ( +"abM" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -1137,7 +1132,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"bN" = ( +"abN" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -1145,14 +1140,14 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"bO" = ( +"abO" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/light, /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"bP" = ( +"abP" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 8 }, @@ -1162,7 +1157,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"bQ" = ( +"abQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -1175,7 +1170,7 @@ /obj/effect/floor_decal/corner/red/bordercorner, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"bR" = ( +"abR" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 }, @@ -1195,7 +1190,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"bS" = ( +"abS" = ( /obj/effect/floor_decal/borderfloorblack, /obj/effect/floor_decal/borderfloorblack/corner2{ dir = 9 @@ -1213,7 +1208,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"bT" = ( +"abT" = ( /obj/structure/table/steel, /obj/machinery/cell_charger, /obj/item/weapon/cell/high{ @@ -1229,18 +1224,18 @@ }, /turf/simulated/floor, /area/maintenance/substation/security) -"bU" = ( +"abU" = ( /obj/structure/sign/warning/secure_area, /turf/simulated/wall/r_wall, /area/security/armory/red) -"bV" = ( +"abV" = ( /obj/structure/closet/crate, /obj/random/maintenance/security, /obj/random/maintenance/clean, /obj/random/maintenance/cargo, /turf/simulated/floor, /area/maintenance/station/ai) -"bW" = ( +"abW" = ( /obj/machinery/power/terminal{ icon_state = "term"; dir = 1 @@ -1250,7 +1245,7 @@ }, /turf/simulated/floor, /area/maintenance/substation/security) -"bX" = ( +"abX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -1259,7 +1254,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"bY" = ( +"abY" = ( /obj/machinery/light{ dir = 1 }, @@ -1271,7 +1266,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"bZ" = ( +"abZ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, @@ -1280,7 +1275,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"ca" = ( +"aca" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1296,7 +1291,7 @@ }, /turf/simulated/floor/tiled, /area/security/range) -"cb" = ( +"acb" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1311,7 +1306,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"cc" = ( +"acc" = ( /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -1334,7 +1329,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"cd" = ( +"acd" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -1356,7 +1351,7 @@ }, /turf/simulated/floor/tiled, /area/security/warden) -"ce" = ( +"ace" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -1376,10 +1371,10 @@ /obj/structure/disposalpipe/junction, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"cf" = ( +"acf" = ( /turf/simulated/wall/r_wall, /area/security/hallwayaux) -"cg" = ( +"acg" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -1393,7 +1388,7 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/hallwayaux) -"ch" = ( +"ach" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 }, @@ -1422,7 +1417,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"ci" = ( +"aci" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -1446,7 +1441,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"cj" = ( +"acj" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -1473,7 +1468,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"ck" = ( +"ack" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 10 }, @@ -1485,7 +1480,7 @@ /obj/item/weapon/gun/energy/ionrifle/pistol, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"cl" = ( +"acl" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/rust, /obj/machinery/power/apc{ @@ -1496,7 +1491,7 @@ /obj/structure/cable/green, /turf/simulated/floor, /area/maintenance/substation/security) -"cm" = ( +"acm" = ( /obj/effect/floor_decal/borderfloorblack/full, /obj/structure/closet/bombcloset/double, /obj/machinery/camera/network/security{ @@ -1505,7 +1500,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"cn" = ( +"acn" = ( /obj/machinery/door/airlock/engineering{ name = "Security Substation"; req_one_access = list(1,11,24) @@ -1519,7 +1514,7 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor, /area/maintenance/substation/security) -"co" = ( +"aco" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -1538,7 +1533,7 @@ /obj/machinery/door/airlock/glass_security, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"cp" = ( +"acp" = ( /obj/machinery/access_button{ command = "cycle_interior"; frequency = 1379; @@ -1558,7 +1553,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"cq" = ( +"acq" = ( /obj/random/trash_pile, /obj/effect/decal/cleanable/cobweb{ icon_state = "cobweb2" @@ -1568,7 +1563,7 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"cr" = ( +"acr" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -1580,7 +1575,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"cs" = ( +"acs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -1589,7 +1584,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"ct" = ( +"act" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -1603,23 +1598,23 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/hallwayaux) -"cu" = ( +"acu" = ( /obj/structure/table/reinforced, /obj/machinery/photocopier/faxmachine{ department = "Warden's Office" }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"cv" = ( +"acv" = ( /turf/simulated/wall/r_wall, /area/security/range) -"cw" = ( +"acw" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /turf/simulated/floor, /area/security/breakroom) -"cx" = ( +"acx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, @@ -1637,7 +1632,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"cy" = ( +"acy" = ( /obj/machinery/alarm{ dir = 4; icon_state = "alarm0"; @@ -1646,7 +1641,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"cz" = ( +"acz" = ( /obj/random/junk, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -1656,7 +1651,7 @@ }, /turf/simulated/floor, /area/maintenance/substation/security) -"cA" = ( +"acA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -1665,7 +1660,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"cB" = ( +"acB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -1674,22 +1669,22 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"cC" = ( +"acC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"cD" = ( +"acD" = ( /obj/effect/floor_decal/borderfloor/corner, /obj/effect/floor_decal/industrial/danger/corner, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"cE" = ( +"acE" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/industrial/danger, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"cF" = ( +"acF" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, @@ -1697,7 +1692,7 @@ /obj/effect/floor_decal/industrial/danger, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"cG" = ( +"acG" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, @@ -1705,7 +1700,7 @@ /obj/effect/floor_decal/industrial/danger, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"cH" = ( +"acH" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 8 }, @@ -1715,14 +1710,14 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"cI" = ( +"acI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"cJ" = ( +"acJ" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, @@ -1734,10 +1729,10 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"cK" = ( +"acK" = ( /turf/simulated/floor/reinforced, /area/tether/exploration) -"cL" = ( +"acL" = ( /obj/effect/floor_decal/borderfloor{ pixel_y = 16 }, @@ -1756,7 +1751,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"cM" = ( +"acM" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -1765,12 +1760,12 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"cN" = ( +"acN" = ( /obj/structure/table/reinforced, /obj/item/device/retail_scanner/security, /turf/simulated/floor/tiled/dark, /area/security/warden) -"cO" = ( +"acO" = ( /obj/structure/table/woodentable, /obj/structure/cable/green{ d1 = 4; @@ -1786,10 +1781,10 @@ /obj/item/weapon/deck/cards, /turf/simulated/floor/carpet, /area/security/breakroom) -"cP" = ( +"acP" = ( /turf/simulated/wall, /area/security/observation) -"cQ" = ( +"acQ" = ( /obj/effect/floor_decal/borderfloor/corner2{ dir = 8 }, @@ -1814,7 +1809,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"cR" = ( +"acR" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -1823,13 +1818,13 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"cS" = ( +"acS" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/open, /area/security/brig) -"cT" = ( +"acT" = ( /obj/structure/lattice, /obj/structure/catwalk, /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ @@ -1837,22 +1832,22 @@ }, /turf/simulated/open, /area/security/brig) -"cU" = ( +"acU" = ( /turf/simulated/wall/r_wall, /area/security/observation) -"cV" = ( +"acV" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/open, /area/security/brig) -"cW" = ( +"acW" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/hallwayaux) -"cX" = ( +"acX" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -1864,7 +1859,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"cY" = ( +"acY" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -1890,17 +1885,21 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"cZ" = ( -/obj/structure/filingcabinet, -/turf/simulated/floor/wood, -/area/crew_quarters/heads/hos) -"da" = ( +"acZ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/hallway) +"ada" = ( /obj/structure/bed/chair/office/dark{ dir = 1 }, /turf/simulated/floor/carpet, /area/security/breakroom) -"db" = ( +"adb" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -1912,21 +1911,21 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"dc" = ( +"adc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"dd" = ( +"add" = ( /obj/structure/toilet, /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"de" = ( +"ade" = ( /obj/machinery/door/airlock/glass_security{ name = "Break Room"; req_one_access = list(1,38) @@ -1948,14 +1947,14 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/wood, /area/security/breakroom) -"df" = ( +"adf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"dg" = ( +"adg" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, @@ -1967,7 +1966,7 @@ }, /turf/simulated/floor/wood, /area/security/breakroom) -"dh" = ( +"adh" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, @@ -1979,7 +1978,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"di" = ( +"adi" = ( /obj/effect/floor_decal/industrial/outline/blue, /obj/machinery/atmospherics/portables_connector, /obj/machinery/portable_atmospherics/canister/air, @@ -1988,10 +1987,10 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"dj" = ( +"adj" = ( /turf/simulated/wall/rshull, /area/shuttle/excursion/general) -"dk" = ( +"adk" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, @@ -2003,7 +2002,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"dl" = ( +"adl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ icon_state = "map-scrubbers"; @@ -2011,7 +2010,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"dm" = ( +"adm" = ( /obj/machinery/light{ icon_state = "tube1"; dir = 8 @@ -2020,13 +2019,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"dn" = ( +"adn" = ( /obj/structure/bed/chair/office/dark{ dir = 1 }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"do" = ( +"ado" = ( /obj/machinery/light, /obj/machinery/recharger/wallcharger{ pixel_x = 4; @@ -2053,11 +2052,11 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"dp" = ( +"adp" = ( /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"dq" = ( +"adq" = ( /obj/machinery/door/airlock/security{ name = "Security Restroom"; req_one_access = list(1,38) @@ -2076,7 +2075,7 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"dr" = ( +"adr" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk, /obj/machinery/alarm{ @@ -2087,14 +2086,14 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"ds" = ( +"ads" = ( /obj/structure/bed/chair/office/dark, /obj/effect/landmark/start{ name = "Security Officer" }, /turf/simulated/floor/carpet, /area/security/breakroom) -"dt" = ( +"adt" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -2105,7 +2104,7 @@ }, /turf/simulated/floor/carpet, /area/security/breakroom) -"du" = ( +"adu" = ( /obj/effect/landmark{ name = "tripai" }, @@ -2115,7 +2114,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai) -"dv" = ( +"adv" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -2124,31 +2123,31 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"dw" = ( +"adw" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"dx" = ( +"adx" = ( /obj/machinery/door/airlock/maintenance/common, /obj/effect/floor_decal/rust, /obj/machinery/door/firedoor/glass, /turf/simulated/floor, /area/maintenance/station/ai) -"dy" = ( +"ady" = ( /obj/structure/bed/padded, /obj/item/weapon/bedsheet/brown, /obj/structure/curtain/open/bed, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"dz" = ( +"adz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"dA" = ( +"adA" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ icon_state = "2-8" @@ -2156,7 +2155,7 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"dB" = ( +"adB" = ( /obj/effect/floor_decal/industrial/warning, /obj/structure/cable/cyan{ d1 = 1; @@ -2165,7 +2164,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"dC" = ( +"adC" = ( /obj/machinery/alarm{ dir = 4; pixel_x = -23; @@ -2189,7 +2188,7 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/shuttle/excursion/cockpit) -"dD" = ( +"adD" = ( /obj/structure/cable/cyan{ d1 = 2; d2 = 4; @@ -2203,7 +2202,7 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/shuttle/excursion/cockpit) -"dE" = ( +"adE" = ( /obj/machinery/light{ dir = 4 }, @@ -2226,7 +2225,7 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/shuttle/excursion/cockpit) -"dF" = ( +"adF" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -2235,7 +2234,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"dG" = ( +"adG" = ( /obj/machinery/door/airlock/vault/bolted{ req_access = list(53) }, @@ -2272,7 +2271,7 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"dH" = ( +"adH" = ( /obj/machinery/light{ dir = 4 }, @@ -2280,10 +2279,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"dI" = ( +"adI" = ( /turf/simulated/wall/r_wall, /area/security/warden) -"dJ" = ( +"adJ" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 }, @@ -2308,7 +2307,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"dK" = ( +"adK" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -2335,7 +2334,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"dL" = ( +"adL" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, @@ -2358,7 +2357,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"dM" = ( +"adM" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, @@ -2375,7 +2374,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"dN" = ( +"adN" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -2394,7 +2393,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"dO" = ( +"adO" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 }, @@ -2405,10 +2404,10 @@ /obj/machinery/disposal, /turf/simulated/floor/tiled, /area/security/briefing_room) -"dP" = ( +"adP" = ( /turf/simulated/wall, /area/security/security_bathroom) -"dQ" = ( +"adQ" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ dir = 8 @@ -2422,20 +2421,20 @@ }, /turf/simulated/floor/tiled, /area/security/range) -"dR" = ( +"adR" = ( /turf/simulated/wall/r_wall, /area/security/breakroom) -"dS" = ( +"adS" = ( /turf/simulated/wall/r_wall, /area/security/security_bathroom) -"dT" = ( +"adT" = ( /obj/structure/cable{ icon_state = "1-2" }, /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/cargo) -"dU" = ( +"adU" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -2449,10 +2448,10 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"dV" = ( +"adV" = ( /turf/simulated/wall/r_wall, /area/maintenance/station/ai) -"dW" = ( +"adW" = ( /obj/machinery/light{ dir = 1 }, @@ -2464,7 +2463,7 @@ /obj/item/clothing/head/helmet/space/void/pilot, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"dX" = ( +"adX" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, @@ -2478,7 +2477,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"dY" = ( +"adY" = ( /obj/item/device/radio/intercom{ dir = 4; pixel_x = 24 @@ -2486,7 +2485,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"dZ" = ( +"adZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 4 }, @@ -2508,14 +2507,14 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"ea" = ( +"aea" = ( /obj/machinery/computer/ship/engines{ dir = 1; icon_state = "computer" }, /turf/simulated/floor/tiled, /area/shuttle/excursion/cockpit) -"eb" = ( +"aeb" = ( /obj/structure/cable/cyan{ d1 = 1; d2 = 2; @@ -2525,7 +2524,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/steel_grid, /area/shuttle/excursion/cockpit) -"ec" = ( +"aec" = ( /obj/structure/cable/yellow{ d1 = 1; d2 = 4; @@ -2539,11 +2538,11 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"ed" = ( +"aed" = ( /obj/structure/railing, /turf/space, /area/space) -"ee" = ( +"aee" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -2556,7 +2555,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"ef" = ( +"aef" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 }, @@ -2565,7 +2564,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"eg" = ( +"aeg" = ( /obj/structure/cable/yellow{ d1 = 4; d2 = 8; @@ -2588,7 +2587,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"eh" = ( +"aeh" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 8 }, @@ -2606,7 +2605,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"ei" = ( +"aei" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -2623,7 +2622,7 @@ /obj/machinery/door/airlock/glass_security, /turf/simulated/floor/tiled, /area/security/hallway) -"ej" = ( +"aej" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -2642,7 +2641,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"ek" = ( +"aek" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/item/device/radio/intercom{ @@ -2650,7 +2649,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"el" = ( +"ael" = ( /obj/structure/disposalpipe/segment{ dir = 2; icon_state = "pipe-c" @@ -2668,7 +2667,7 @@ }, /turf/simulated/floor/wood, /area/security/breakroom) -"em" = ( +"aem" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -2676,7 +2675,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai) -"en" = ( +"aen" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -2714,7 +2713,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"eo" = ( +"aeo" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -2726,17 +2725,17 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"ep" = ( +"aep" = ( /turf/simulated/wall, /area/security/security_lockerroom) -"eq" = ( +"aeq" = ( /obj/structure/disposalpipe/segment{ dir = 2; icon_state = "pipe-c" }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"er" = ( +"aer" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -2749,7 +2748,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"es" = ( +"aes" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/railing{ dir = 8 @@ -2763,7 +2762,7 @@ /obj/random/maintenance/clean, /turf/simulated/floor, /area/maintenance/cargo) -"et" = ( +"aet" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -2772,7 +2771,7 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"eu" = ( +"aeu" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -2795,7 +2794,7 @@ /obj/item/device/holowarrant, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"ev" = ( +"aev" = ( /obj/effect/floor_decal/borderfloorblack/corner{ icon_state = "borderfloorcorner_black"; dir = 8 @@ -2810,7 +2809,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"ew" = ( +"aew" = ( /obj/structure/cable/green{ d2 = 2; icon_state = "0-2" @@ -2825,7 +2824,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"ex" = ( +"aex" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/structure/cable/cyan{ @@ -2835,13 +2834,13 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/shuttle/excursion/general) -"ey" = ( +"aey" = ( /turf/simulated/floor/carpet, /area/security/breakroom) -"ez" = ( +"aez" = ( /turf/simulated/floor/tiled/dark, /area/security/warden) -"eA" = ( +"aeA" = ( /obj/effect/floor_decal/corner/red{ icon_state = "corner_white"; dir = 10 @@ -2869,7 +2868,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"eB" = ( +"aeB" = ( /obj/effect/floor_decal/corner/red{ icon_state = "corner_white"; dir = 10 @@ -2894,7 +2893,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"eC" = ( +"aeC" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -2911,13 +2910,13 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"eD" = ( +"aeD" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/observation) -"eE" = ( +"aeE" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -2935,7 +2934,7 @@ /obj/machinery/door/firedoor/glass/hidden/steel, /turf/simulated/floor/tiled, /area/security/hallway) -"eF" = ( +"aeF" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -2949,26 +2948,26 @@ }, /turf/simulated/floor/wood, /area/security/breakroom) -"eG" = ( +"aeG" = ( /obj/structure/table/woodentable, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"eH" = ( +"aeH" = ( /obj/structure/table/woodentable, /obj/item/weapon/folder/red_hos, /obj/item/weapon/stamp/hos, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"eI" = ( +"aeI" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/ai) -"eJ" = ( +"aeJ" = ( /turf/simulated/floor/wood, /area/security/breakroom) -"eK" = ( +"aeK" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 }, @@ -2986,7 +2985,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"eL" = ( +"aeL" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -2996,14 +2995,14 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor, /area/maintenance/cargo) -"eM" = ( +"aeM" = ( /obj/structure/railing{ dir = 4 }, /obj/random/junk, /turf/simulated/floor, /area/maintenance/station/ai) -"eN" = ( +"aeN" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -3019,7 +3018,7 @@ /obj/effect/floor_decal/corner/lightgrey/bordercorner, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"eO" = ( +"aeO" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 4; @@ -3042,7 +3041,7 @@ }, /turf/simulated/floor/lino, /area/security/detectives_office) -"eP" = ( +"aeP" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -3058,7 +3057,7 @@ /obj/effect/floor_decal/corner/lightgrey/border, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"eQ" = ( +"aeQ" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -3075,7 +3074,7 @@ /obj/effect/floor_decal/corner/lightgrey/border, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"eR" = ( +"aeR" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -3096,16 +3095,16 @@ /obj/effect/floor_decal/corner/lightgrey/border, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"eS" = ( +"aeS" = ( /obj/item/frame, /obj/effect/floor_decal/rust, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/ai) -"eT" = ( +"aeT" = ( /turf/simulated/wall, /area/security/security_equiptment_storage) -"eU" = ( +"aeU" = ( /obj/structure/catwalk, /obj/structure/cable{ d1 = 1; @@ -3121,7 +3120,7 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"eV" = ( +"aeV" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -3140,7 +3139,7 @@ /obj/machinery/door/airlock/glass_security, /turf/simulated/floor/tiled, /area/security/hallway) -"eW" = ( +"aeW" = ( /obj/structure/closet/crate, /obj/random/maintenance/security, /obj/random/maintenance/clean, @@ -3150,19 +3149,19 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"eX" = ( +"aeX" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/briefing_room) -"eY" = ( +"aeY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, /turf/simulated/floor/wood, /area/security/breakroom) -"eZ" = ( +"aeZ" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 }, @@ -3174,7 +3173,7 @@ /obj/structure/table/reinforced, /turf/simulated/floor/tiled, /area/security/briefing_room) -"fa" = ( +"afa" = ( /obj/structure/disposalpipe/segment{ dir = 1; icon_state = "pipe-c" @@ -3194,7 +3193,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"fb" = ( +"afb" = ( /obj/machinery/light_switch{ dir = 4; icon_state = "light1"; @@ -3202,11 +3201,11 @@ }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"fc" = ( +"afc" = ( /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"fd" = ( +"afd" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 1; @@ -3219,7 +3218,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"fe" = ( +"afe" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -3242,15 +3241,8 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"ff" = ( +"aff" = ( /obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /obj/structure/cable/green{ @@ -3258,9 +3250,28 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/wood, -/area/crew_quarters/heads/hos) -"fg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/hallway) +"afg" = ( /obj/structure/cable/cyan{ d1 = 1; d2 = 2; @@ -3268,13 +3279,13 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"fh" = ( +"afh" = ( /obj/machinery/light/spot{ pixel_y = 32 }, /turf/simulated/wall/rshull, /area/shuttle/excursion/general) -"fi" = ( +"afi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 5 @@ -3284,7 +3295,7 @@ }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"fj" = ( +"afj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -3294,7 +3305,7 @@ }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"fk" = ( +"afk" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -3319,11 +3330,11 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"fl" = ( +"afl" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/dark, /area/security/warden) -"fm" = ( +"afm" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -3342,7 +3353,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/security/hallway) -"fn" = ( +"afn" = ( /obj/machinery/door/firedoor/glass, /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor/westleft{ @@ -3366,7 +3377,7 @@ }, /turf/simulated/floor/tiled, /area/security/warden) -"fo" = ( +"afo" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -3385,12 +3396,12 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"fp" = ( +"afp" = ( /obj/random/junk, /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/station/ai) -"fq" = ( +"afq" = ( /obj/structure/railing{ icon_state = "railing0"; dir = 1 @@ -3400,7 +3411,7 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"fr" = ( +"afr" = ( /obj/machinery/photocopier, /obj/machinery/power/apc{ dir = 2; @@ -3410,11 +3421,14 @@ /obj/structure/cable/green, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"fs" = ( -/obj/structure/flora/pottedplant/stoutbush, -/turf/simulated/floor/tiled, -/area/security/hallway) -"ft" = ( +"afs" = ( +/obj/machinery/atmospherics/unary/engine{ + dir = 1 + }, +/turf/simulated/floor/reinforced, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/excursion/cargo) +"aft" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -3423,7 +3437,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"fu" = ( +"afu" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -3431,7 +3445,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"fv" = ( +"afv" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 4; @@ -3445,7 +3459,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"fw" = ( +"afw" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/security{ name = "Evidence Storage"; @@ -3454,7 +3468,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_processing) -"fx" = ( +"afx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 4 @@ -3476,10 +3490,10 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/shuttle/excursion/general) -"fy" = ( +"afy" = ( /turf/simulated/wall/r_wall, /area/ai) -"fz" = ( +"afz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -3490,7 +3504,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"fA" = ( +"afA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -3502,7 +3516,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"fB" = ( +"afB" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -3510,7 +3524,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"fC" = ( +"afC" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 4; @@ -3523,7 +3537,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"fD" = ( +"afD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -3540,12 +3554,12 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/security/hallway) -"fE" = ( +"afE" = ( /obj/random/junk, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/ai) -"fF" = ( +"afF" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -3568,7 +3582,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"fG" = ( +"afG" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 10 }, @@ -3582,10 +3596,10 @@ /obj/structure/curtain/open/shower/security, /turf/simulated/floor/tiled, /area/security/security_bathroom) -"fH" = ( +"afH" = ( /turf/simulated/wall, /area/security/detectives_office) -"fI" = ( +"afI" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -3600,7 +3614,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"fJ" = ( +"afJ" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 }, @@ -3612,7 +3626,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"fK" = ( +"afK" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -3636,12 +3650,12 @@ /obj/item/device/retail_scanner/security, /turf/simulated/floor/tiled, /area/security/security_processing) -"fL" = ( +"afL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"fM" = ( +"afM" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, @@ -3654,7 +3668,7 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"fN" = ( +"afN" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -3665,7 +3679,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"fO" = ( +"afO" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -3687,10 +3701,10 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"fP" = ( +"afP" = ( /turf/simulated/wall/r_wall, /area/ai_core_foyer) -"fQ" = ( +"afQ" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -3709,7 +3723,7 @@ /obj/effect/floor_decal/corner/lightgrey/border, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"fR" = ( +"afR" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/multi_tile/glass{ name = "Security Lobby" @@ -3721,7 +3735,7 @@ dir = 8 }, /area/security/lobby) -"fS" = ( +"afS" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -3733,7 +3747,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"fT" = ( +"afT" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -3757,13 +3771,13 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"fU" = ( +"afU" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, /turf/simulated/floor/bluegrid, /area/ai) -"fV" = ( +"afV" = ( /obj/machinery/atmospherics/portables_connector{ dir = 1 }, @@ -3771,7 +3785,7 @@ /obj/machinery/portable_atmospherics/canister/empty, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"fW" = ( +"afW" = ( /obj/effect/floor_decal/borderfloorblack, /obj/effect/floor_decal/borderfloorblack/corner2{ dir = 9 @@ -3780,12 +3794,12 @@ /obj/machinery/light, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"fX" = ( +"afX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"fY" = ( +"afY" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 }, @@ -3801,7 +3815,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"fZ" = ( +"afZ" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 6 }, @@ -3821,7 +3835,7 @@ /obj/machinery/vending/fitness, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"ga" = ( +"aga" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -3848,11 +3862,11 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"gb" = ( +"agb" = ( /obj/structure/railing, /turf/simulated/open, /area/security/brig) -"gc" = ( +"agc" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/white/border, /obj/machinery/dnaforensics, @@ -3862,7 +3876,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"gd" = ( +"agd" = ( /obj/structure/closet/crate, /obj/item/target, /obj/item/target, @@ -3872,31 +3886,31 @@ /obj/item/target, /turf/simulated/floor/tiled/dark, /area/security/range) -"ge" = ( +"age" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/structure/target_stake, /turf/simulated/floor/tiled/dark, /area/security/range) -"gf" = ( +"agf" = ( /turf/simulated/floor/tiled/dark, /area/security/range) -"gg" = ( +"agg" = ( /turf/simulated/floor/airless, /area/space) -"gh" = ( +"agh" = ( /obj/machinery/light{ icon_state = "tube1"; dir = 8 }, /turf/simulated/floor/tiled/dark, /area/security/range) -"gi" = ( +"agi" = ( /obj/machinery/light{ dir = 4 }, /turf/simulated/floor/tiled/dark, /area/security/range) -"gj" = ( +"agj" = ( /obj/machinery/access_button{ command = "cycle_exterior"; frequency = 1379; @@ -3908,27 +3922,27 @@ }, /turf/simulated/floor/airless, /area/space) -"gk" = ( +"agk" = ( /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/security/range) -"gl" = ( +"agl" = ( /obj/machinery/door/airlock/glass_external, /obj/effect/floor_decal/industrial/hatch/yellow, /obj/effect/map_helper/airlock/door/ext_door, /turf/simulated/floor, /area/security/eva) -"gm" = ( +"agm" = ( /obj/structure/grille, /turf/space, /area/space) -"gn" = ( +"agn" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"go" = ( +"ago" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 5 }, @@ -3948,7 +3962,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gp" = ( +"agp" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 }, @@ -3965,7 +3979,7 @@ /obj/item/clothing/head/helmet/laserproof, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gq" = ( +"agq" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -3974,7 +3988,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gr" = ( +"agr" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 5 }, @@ -3992,7 +4006,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gs" = ( +"ags" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 }, @@ -4007,7 +4021,7 @@ /obj/item/weapon/shield/riot, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gt" = ( +"agt" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 5 }, @@ -4015,25 +4029,25 @@ /obj/item/weapon/gun/energy/ionrifle, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gu" = ( +"agu" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, /turf/simulated/floor/tiled/dark, /area/security/range) -"gv" = ( +"agv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /turf/simulated/floor/tiled/dark, /area/security/range) -"gw" = ( +"agw" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /turf/simulated/floor/tiled/dark, /area/security/range) -"gx" = ( +"agx" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 2; frequency = 1379; @@ -4042,10 +4056,10 @@ /obj/effect/map_helper/airlock/atmos/chamber_pump, /turf/simulated/floor/tiled, /area/security/eva) -"gy" = ( +"agy" = ( /turf/simulated/wall, /area/maintenance/station/ai) -"gz" = ( +"agz" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 10 }, @@ -4063,7 +4077,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gA" = ( +"agA" = ( /obj/effect/floor_decal/industrial/warning, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -4073,7 +4087,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gB" = ( +"agB" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 }, @@ -4088,7 +4102,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gC" = ( +"agC" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 10 }, @@ -4109,11 +4123,11 @@ /obj/item/clothing/head/helmet/laserproof, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gD" = ( +"agD" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gE" = ( +"agE" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 }, @@ -4125,7 +4139,7 @@ /obj/structure/table/rack/shelf/steel, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gF" = ( +"agF" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 10 }, @@ -4147,7 +4161,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gG" = ( +"agG" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 }, @@ -4159,7 +4173,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gH" = ( +"agH" = ( /obj/machinery/alarm{ dir = 4; icon_state = "alarm0"; @@ -4168,19 +4182,19 @@ }, /turf/simulated/floor/tiled/dark, /area/security/range) -"gI" = ( +"agI" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/security/range) -"gJ" = ( +"agJ" = ( /turf/simulated/mineral/vacuum, /area/maintenance/station/ai) -"gK" = ( +"agK" = ( /turf/simulated/floor, /area/maintenance/station/ai) -"gL" = ( +"agL" = ( /obj/machinery/atmospherics/binary/pump, /obj/machinery/firealarm{ dir = 1; @@ -4197,7 +4211,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"gM" = ( +"agM" = ( /obj/machinery/atmospherics/portables_connector{ dir = 1 }, @@ -4205,7 +4219,7 @@ /obj/machinery/portable_atmospherics/canister/phoron, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"gN" = ( +"agN" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; dir = 1 @@ -4214,7 +4228,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gO" = ( +"agO" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -4223,7 +4237,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gP" = ( +"agP" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -4232,24 +4246,24 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gQ" = ( +"agQ" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; dir = 1 }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"gR" = ( +"agR" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/dark, /area/security/range) -"gS" = ( +"agS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/dark, /area/security/range) -"gT" = ( +"agT" = ( /obj/structure/table/rack{ dir = 8; layer = 2.6 @@ -4267,7 +4281,7 @@ /obj/item/clothing/head/helmet/space/void/security, /turf/simulated/floor/tiled/dark, /area/security/eva) -"gU" = ( +"agU" = ( /obj/structure/table/rack{ dir = 8; layer = 2.6 @@ -4282,7 +4296,7 @@ /obj/item/weapon/tank/jetpack/carbondioxide, /turf/simulated/floor/tiled/dark, /area/security/eva) -"gV" = ( +"agV" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -4299,7 +4313,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"gW" = ( +"agW" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -4319,7 +4333,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"gX" = ( +"agX" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, @@ -4329,7 +4343,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"gY" = ( +"agY" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; @@ -4337,14 +4351,14 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"gZ" = ( +"agZ" = ( /obj/machinery/alarm{ pixel_y = 22 }, /obj/structure/closet/emcloset, /turf/simulated/floor/tiled, /area/security/eva) -"ha" = ( +"aha" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 1; icon_state = "map" @@ -4352,21 +4366,31 @@ /obj/machinery/meter, /turf/simulated/floor/tiled, /area/security/eva) -"hb" = ( +"ahb" = ( /obj/machinery/atmospherics/portables_connector{ dir = 8 }, /obj/machinery/portable_atmospherics/canister/air/airlock, /turf/simulated/floor/tiled, /area/security/eva) -"hc" = ( -/obj/machinery/atmospherics/unary/engine{ +"ahc" = ( +/obj/effect/floor_decal/borderfloor{ dir = 1 }, -/turf/simulated/floor/reinforced, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/excursion/cargo) -"hd" = ( +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/obj/structure/table/rack, +/obj/item/clothing/suit/space/void/mining, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space/void/mining, +/obj/item/weapon/mining_scanner, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"ahd" = ( /obj/structure/table/woodentable, /obj/machinery/photocopier/faxmachine{ department = "Head of Security" @@ -4374,7 +4398,7 @@ /obj/machinery/camera/network/security, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"he" = ( +"ahe" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 2 }, @@ -4389,7 +4413,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"hf" = ( +"ahf" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 5 }, @@ -4399,13 +4423,13 @@ /obj/structure/table/rack/shelf/steel, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"hg" = ( +"ahg" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"hh" = ( +"ahh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, @@ -4414,7 +4438,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"hi" = ( +"ahi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -4423,7 +4447,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"hj" = ( +"ahj" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, @@ -4437,7 +4461,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"hk" = ( +"ahk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, @@ -4451,7 +4475,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"hl" = ( +"ahl" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced{ dir = 1 @@ -4468,12 +4492,12 @@ }, /turf/simulated/floor/tiled/dark, /area/security/range) -"hm" = ( +"ahm" = ( /obj/machinery/door/window/northright, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/security/range) -"hn" = ( +"ahn" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced{ dir = 1 @@ -4482,7 +4506,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/dark, /area/security/range) -"ho" = ( +"aho" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced{ dir = 1 @@ -4490,19 +4514,19 @@ /obj/item/weapon/gun/energy/laser/practice, /turf/simulated/floor/tiled/dark, /area/security/range) -"hp" = ( +"ahp" = ( /turf/simulated/wall, /area/security/range) -"hq" = ( +"ahq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, /turf/simulated/floor/tiled, /area/security/eva) -"hr" = ( +"ahr" = ( /turf/simulated/floor/tiled, /area/security/eva) -"hs" = ( +"ahs" = ( /obj/structure/railing{ dir = 4 }, @@ -4512,7 +4536,7 @@ /obj/random/cigarettes, /turf/simulated/floor, /area/maintenance/station/ai) -"ht" = ( +"aht" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -4524,7 +4548,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"hu" = ( +"ahu" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -4540,7 +4564,7 @@ }, /turf/simulated/floor, /area/security/eva) -"hv" = ( +"ahv" = ( /obj/machinery/light, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -4550,17 +4574,17 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"hw" = ( +"ahw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal{ dir = 4 }, /turf/simulated/floor/tiled, /area/security/eva) -"hx" = ( +"ahx" = ( /obj/structure/undies_wardrobe, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"hy" = ( +"ahy" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -4568,7 +4592,7 @@ }, /turf/simulated/wall/r_wall, /area/ai) -"hz" = ( +"ahz" = ( /obj/machinery/porta_turret/ai_defense, /obj/structure/cable{ d1 = 4; @@ -4577,7 +4601,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai) -"hA" = ( +"ahA" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 10 }, @@ -4587,12 +4611,12 @@ /obj/structure/table/rack/steel, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"hB" = ( +"ahB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"hC" = ( +"ahC" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -4608,7 +4632,7 @@ /obj/item/weapon/storage/box/holowarrants, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"hD" = ( +"ahD" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 10 }, @@ -4623,10 +4647,10 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"hE" = ( +"ahE" = ( /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"hF" = ( +"ahF" = ( /obj/effect/floor_decal/borderfloorblack, /obj/effect/floor_decal/borderfloorblack/corner2, /obj/structure/table/steel, @@ -4650,7 +4674,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"hG" = ( +"ahG" = ( /obj/effect/floor_decal/borderfloorblack, /obj/structure/table/steel, /obj/item/weapon/cell/device/weapon{ @@ -4675,7 +4699,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"hH" = ( +"ahH" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, @@ -4701,7 +4725,7 @@ /obj/structure/cable/green, /turf/simulated/floor/tiled, /area/security/observation) -"hI" = ( +"ahI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -4711,13 +4735,13 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"hJ" = ( +"ahJ" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 }, /turf/simulated/floor/tiled, /area/security/range) -"hK" = ( +"ahK" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -4728,7 +4752,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"hL" = ( +"ahL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -4737,7 +4761,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"hM" = ( +"ahM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -4746,7 +4770,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"hN" = ( +"ahN" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, @@ -4755,7 +4779,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"hO" = ( +"ahO" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -4767,7 +4791,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"hP" = ( +"ahP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -4776,7 +4800,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"hQ" = ( +"ahQ" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 }, @@ -4796,7 +4820,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"hR" = ( +"ahR" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -4817,7 +4841,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"hS" = ( +"ahS" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ icon_state = "0-4" @@ -4836,7 +4860,7 @@ }, /turf/simulated/floor/plating, /area/security/armory/blue) -"hT" = ( +"ahT" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -4856,7 +4880,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"hU" = ( +"ahU" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/security/armory{ color = ""; @@ -4867,7 +4891,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"hV" = ( +"ahV" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -4889,7 +4913,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"hW" = ( +"ahW" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/security{ name = "Armory Storage"; @@ -4910,7 +4934,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/red) -"hX" = ( +"ahX" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/structure/cable{ icon_state = "1-8" @@ -4921,7 +4945,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"hY" = ( +"ahY" = ( /obj/structure/table/rack{ dir = 8; layer = 2.6 @@ -4935,7 +4959,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/eva) -"hZ" = ( +"ahZ" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 1 }, @@ -4947,7 +4971,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"ia" = ( +"aia" = ( /obj/machinery/power/terminal{ dir = 4 }, @@ -4957,11 +4981,11 @@ }, /turf/simulated/floor/bluegrid, /area/ai) -"ib" = ( +"aib" = ( /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/ai) -"ic" = ( +"aic" = ( /obj/machinery/power/smes/buildable{ charge = 5e+006; input_attempt = 1; @@ -4975,7 +4999,7 @@ /obj/machinery/camera/network/command, /turf/simulated/floor/bluegrid, /area/ai) -"id" = ( +"aid" = ( /obj/machinery/light/small{ dir = 4 }, @@ -4987,7 +5011,7 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/ai) -"ie" = ( +"aie" = ( /obj/structure/cable/cyan{ d2 = 8; icon_state = "0-8" @@ -5002,7 +5026,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai) -"if" = ( +"aif" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 5 }, @@ -5040,7 +5064,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"ig" = ( +"aig" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 }, @@ -5064,7 +5088,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"ih" = ( +"aih" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -5074,7 +5098,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"ii" = ( +"aii" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 5 }, @@ -5099,7 +5123,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"ij" = ( +"aij" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 }, @@ -5140,7 +5164,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"ik" = ( +"aik" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -5162,7 +5186,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"il" = ( +"ail" = ( /obj/machinery/power/apc{ dir = 4; name = "east bump"; @@ -5190,7 +5214,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"im" = ( +"aim" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -5220,13 +5244,13 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"in" = ( +"ain" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/eva) -"io" = ( +"aio" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_security{ name = "Security EVA"; @@ -5234,7 +5258,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"ip" = ( +"aip" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -5272,7 +5296,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"iq" = ( +"aiq" = ( /obj/structure/catwalk, /obj/structure/cable{ d1 = 1; @@ -5287,7 +5311,7 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"ir" = ( +"air" = ( /obj/structure/cable/cyan{ d1 = 2; d2 = 8; @@ -5295,18 +5319,18 @@ }, /turf/simulated/floor/bluegrid, /area/ai) -"is" = ( +"ais" = ( /obj/machinery/porta_turret/ai_defense, /turf/simulated/floor/bluegrid, /area/ai) -"it" = ( +"ait" = ( /obj/machinery/disposal/deliveryChute{ dir = 4 }, /obj/structure/disposalpipe/trunk, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"iu" = ( +"aiu" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -5320,7 +5344,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"iv" = ( +"aiv" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; dir = 4 @@ -5334,7 +5358,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"iw" = ( +"aiw" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; dir = 8 @@ -5347,7 +5371,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"ix" = ( +"aix" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, @@ -5361,7 +5385,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"iy" = ( +"aiy" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/security{ name = "Blue Armory"; @@ -5370,7 +5394,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"iz" = ( +"aiz" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -5396,7 +5420,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"iA" = ( +"aiA" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/structure/cable/green{ @@ -5414,7 +5438,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"iB" = ( +"aiB" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -5444,7 +5468,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"iC" = ( +"aiC" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -5473,7 +5497,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"iD" = ( +"aiD" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -5503,7 +5527,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"iE" = ( +"aiE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -5517,7 +5541,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"iF" = ( +"aiF" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -5536,7 +5560,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"iG" = ( +"aiG" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -5571,7 +5595,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"iH" = ( +"aiH" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 }, @@ -5585,7 +5609,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"iI" = ( +"aiI" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 4; @@ -5607,13 +5631,13 @@ }, /turf/simulated/floor, /area/maintenance/substation/security) -"iJ" = ( +"aiJ" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor, /area/maintenance/station/ai) -"iK" = ( +"aiK" = ( /obj/machinery/conveyor{ dir = 8; id = "shuttle_outbound" @@ -5621,7 +5645,7 @@ /obj/structure/plasticflaps, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"iL" = ( +"aiL" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 }, @@ -5646,7 +5670,7 @@ /obj/item/weapon/storage/box/trackimp, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"iM" = ( +"aiM" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -5662,7 +5686,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"iN" = ( +"aiN" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -5695,7 +5719,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"iO" = ( +"aiO" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d2 = 2; @@ -5714,7 +5738,7 @@ }, /turf/simulated/floor, /area/security/warden) -"iP" = ( +"aiP" = ( /obj/structure/table/reinforced, /obj/item/weapon/paper_bin{ pixel_x = -3; @@ -5728,24 +5752,24 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"iQ" = ( +"aiQ" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_security, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"iR" = ( +"aiR" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"iS" = ( +"aiS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/item/weapon/bone/skull/unathi, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"iT" = ( +"aiT" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 }, @@ -5754,38 +5778,38 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"iU" = ( +"aiU" = ( /turf/simulated/wall/r_wall, /area/maintenance/substation/security) -"iV" = ( +"aiV" = ( /turf/simulated/wall, /area/maintenance/cargo) -"iW" = ( +"aiW" = ( /obj/structure/fuel_port{ pixel_x = 0; pixel_y = 3 }, /turf/simulated/floor/tiled/monofloor, /area/shuttle/excursion/cargo) -"iX" = ( +"aiX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 6 }, /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"iY" = ( +"aiY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 4 }, /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"iZ" = ( +"aiZ" = ( /obj/effect/floor_decal/borderfloorblack/full, /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/deployable/barrier, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"ja" = ( +"aja" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -5794,7 +5818,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jb" = ( +"ajb" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, @@ -5806,7 +5830,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jc" = ( +"ajc" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -5824,7 +5848,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jd" = ( +"ajd" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green, /obj/structure/cable/green{ @@ -5842,10 +5866,10 @@ }, /turf/simulated/floor, /area/security/warden) -"je" = ( +"aje" = ( /turf/simulated/wall/r_wall, /area/crew_quarters/heads/hos) -"jf" = ( +"ajf" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 4 @@ -5854,11 +5878,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"jg" = ( +"ajg" = ( /obj/effect/floor_decal/borderfloorblack/full, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jh" = ( +"ajh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -5868,7 +5892,7 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/security/briefing_room) -"ji" = ( +"aji" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -5901,7 +5925,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jj" = ( +"ajj" = ( /obj/effect/floor_decal/borderfloor{ pixel_y = 16 }, @@ -5921,10 +5945,10 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"jk" = ( +"ajk" = ( /turf/simulated/open, /area/security/brig) -"jl" = ( +"ajl" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -5936,7 +5960,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"jm" = ( +"ajm" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 }, @@ -5958,13 +5982,13 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"jn" = ( +"ajn" = ( /obj/machinery/newscaster/security_unit{ pixel_y = 32 }, /turf/simulated/floor/wood, /area/security/breakroom) -"jo" = ( +"ajo" = ( /obj/machinery/light{ dir = 1 }, @@ -5976,17 +6000,17 @@ }, /turf/simulated/floor/wood, /area/security/breakroom) -"jp" = ( +"ajp" = ( /obj/machinery/alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, /area/security/breakroom) -"jq" = ( +"ajq" = ( /obj/machinery/space_heater, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"jr" = ( +"ajr" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -6002,22 +6026,22 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"js" = ( +"ajs" = ( /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/bluegrid, /area/ai) -"jt" = ( +"ajt" = ( /turf/simulated/floor/bluegrid, /area/ai) -"ju" = ( +"aju" = ( /obj/effect/floor_decal/borderfloorblack/full, /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/flasher/portable, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jv" = ( +"ajv" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 5 }, @@ -6034,7 +6058,7 @@ /obj/machinery/camera/network/security, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"jw" = ( +"ajw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 @@ -6047,7 +6071,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"jx" = ( +"ajx" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -6059,13 +6083,13 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"jy" = ( +"ajy" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/open, /area/security/brig) -"jz" = ( +"ajz" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -6078,7 +6102,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"jA" = ( +"ajA" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -6097,21 +6121,21 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"jB" = ( +"ajB" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/carpet, /area/security/breakroom) -"jC" = ( +"ajC" = ( /obj/structure/bed/chair/office/dark, /obj/effect/landmark/start{ name = "Detective" }, /turf/simulated/floor/carpet, /area/security/breakroom) -"jD" = ( +"ajD" = ( /turf/simulated/wall/durasteel, /area/ai) -"jE" = ( +"ajE" = ( /obj/effect/floor_decal/borderfloorblack/full, /obj/machinery/light{ icon_state = "tube1"; @@ -6120,7 +6144,7 @@ /obj/structure/closet/l3closet/security, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jF" = ( +"ajF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, @@ -6134,7 +6158,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jG" = ( +"ajG" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -6158,7 +6182,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jH" = ( +"ajH" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -6189,7 +6213,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jI" = ( +"ajI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -6206,7 +6230,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"jJ" = ( +"ajJ" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -6221,7 +6245,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"jK" = ( +"ajK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -6235,7 +6259,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"jL" = ( +"ajL" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -6253,18 +6277,18 @@ }, /turf/simulated/floor/tiled, /area/security/observation) -"jM" = ( +"ajM" = ( /obj/effect/floor_decal/carpet{ dir = 1 }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"jN" = ( +"ajN" = ( /obj/structure/table/woodentable, /obj/item/weapon/storage/box/donut, /turf/simulated/floor/carpet, /area/security/breakroom) -"jO" = ( +"ajO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/railing, /obj/structure/table/rack{ @@ -6274,7 +6298,7 @@ /obj/random/maintenance/cargo, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"jP" = ( +"ajP" = ( /obj/structure/cable/cyan{ d1 = 1; d2 = 2; @@ -6282,14 +6306,14 @@ }, /turf/simulated/floor/bluegrid, /area/ai) -"jQ" = ( +"ajQ" = ( /obj/machinery/light{ icon_state = "tube1"; dir = 4 }, /turf/simulated/floor/bluegrid, /area/ai) -"jR" = ( +"ajR" = ( /obj/effect/floor_decal/borderfloorblack/full, /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/alarm{ @@ -6300,7 +6324,7 @@ /obj/machinery/deployable/barrier, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jS" = ( +"ajS" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -6308,7 +6332,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jT" = ( +"ajT" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/security{ name = "Armory Storage"; @@ -6327,7 +6351,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"jU" = ( +"ajU" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, @@ -6349,7 +6373,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"jV" = ( +"ajV" = ( /obj/item/device/radio/intercom{ pixel_y = -24 }, @@ -6359,7 +6383,7 @@ }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"jW" = ( +"ajW" = ( /obj/structure/bed/chair/office/dark{ dir = 4 }, @@ -6368,7 +6392,7 @@ }, /turf/simulated/floor/carpet, /area/security/breakroom) -"jX" = ( +"ajX" = ( /obj/structure/table/woodentable, /obj/structure/cable/green{ d1 = 4; @@ -6383,7 +6407,7 @@ }, /turf/simulated/floor/carpet, /area/security/breakroom) -"jY" = ( +"ajY" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; dir = 1 @@ -6391,14 +6415,14 @@ /obj/machinery/recharge_station, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"jZ" = ( +"ajZ" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"ka" = ( +"aka" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -6409,14 +6433,14 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"kb" = ( +"akb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow, /obj/effect/floor_decal/industrial/outline/red, /obj/structure/closet/secure_closet/guncabinet/excursion, /obj/item/weapon/pickaxe, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"kc" = ( +"akc" = ( /obj/effect/floor_decal/borderfloorblack/full, /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 4 @@ -6438,7 +6462,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"kd" = ( +"akd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -6457,7 +6481,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"ke" = ( +"ake" = ( /obj/machinery/mech_recharger, /obj/effect/floor_decal/corner_techfloor_grid{ dir = 5 @@ -6465,11 +6489,11 @@ /obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"kf" = ( +"akf" = ( /obj/structure/sign/warning/secure_area, /turf/simulated/wall/r_wall, /area/security/armory/blue) -"kg" = ( +"akg" = ( /obj/structure/railing{ dir = 8 }, @@ -6485,11 +6509,11 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"kh" = ( +"akh" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/wood, /area/security/breakroom) -"ki" = ( +"aki" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -6506,7 +6530,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"kj" = ( +"akj" = ( /obj/machinery/embedded_controller/radio/airlock/docking_port{ frequency = 1380; id_tag = "expshuttle_docker"; @@ -6525,7 +6549,7 @@ /obj/effect/map_helper/airlock/atmos/chamber_pump, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"kk" = ( +"akk" = ( /obj/effect/floor_decal/industrial/warning{ dir = 5 }, @@ -6546,7 +6570,7 @@ /obj/effect/map_helper/airlock/atmos/pump_out_internal, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"kl" = ( +"akl" = ( /obj/structure/cable/cyan{ d2 = 2; icon_state = "0-2" @@ -6558,7 +6582,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai) -"km" = ( +"akm" = ( /obj/effect/landmark/start{ name = "AI" }, @@ -6592,7 +6616,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai) -"kn" = ( +"akn" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -6610,10 +6634,10 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"ko" = ( +"ako" = ( /turf/simulated/wall/r_wall, /area/security/security_equiptment_storage) -"kp" = ( +"akp" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/camera/network/security{ icon_state = "camera"; @@ -6624,7 +6648,7 @@ }, /turf/simulated/floor/tiled, /area/security/eva) -"kq" = ( +"akq" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -6638,7 +6662,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"kr" = ( +"akr" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -6655,7 +6679,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"ks" = ( +"aks" = ( /obj/structure/cable{ icon_state = "2-8" }, @@ -6673,7 +6697,7 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"kt" = ( +"akt" = ( /obj/effect/floor_decal/rust, /obj/structure/railing{ dir = 4 @@ -6687,7 +6711,7 @@ /obj/random/maintenance/clean, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"ku" = ( +"aku" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/railing{ dir = 4 @@ -6695,7 +6719,7 @@ /obj/random/trash_pile, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"kv" = ( +"akv" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -6703,7 +6727,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"kw" = ( +"akw" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -6717,7 +6741,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"kx" = ( +"akx" = ( /obj/machinery/door/airlock/glass_external, /obj/machinery/access_button{ command = "cycle_interior"; @@ -6734,7 +6758,7 @@ /obj/effect/map_helper/airlock/door/int_door, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"ky" = ( +"aky" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; dir = 8 @@ -6742,7 +6766,7 @@ /obj/machinery/atmospherics/pipe/manifold4w/visible, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"kz" = ( +"akz" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -6760,7 +6784,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"kA" = ( +"akA" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -6786,7 +6810,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"kB" = ( +"akB" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -6806,7 +6830,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"kC" = ( +"akC" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 5 }, @@ -6816,7 +6840,7 @@ /obj/machinery/vending/security, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"kD" = ( +"akD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, @@ -6830,20 +6854,20 @@ }, /turf/simulated/floor/tiled, /area/security/observation) -"kE" = ( +"akE" = ( /obj/structure/bed/chair/office/dark{ dir = 1 }, /turf/simulated/floor/tiled, /area/security/observation) -"kF" = ( +"akF" = ( /obj/machinery/light_switch{ dir = 1; pixel_y = -24 }, /turf/simulated/floor/wood, /area/security/breakroom) -"kG" = ( +"akG" = ( /obj/structure/table/woodentable, /obj/machinery/chemical_dispenser/bar_soft/full{ dir = 1 @@ -6851,26 +6875,26 @@ /obj/machinery/light, /turf/simulated/floor/wood, /area/security/breakroom) -"kH" = ( +"akH" = ( /obj/structure/table/woodentable, /obj/item/weapon/storage/box/glasses/square, /turf/simulated/floor/wood, /area/security/breakroom) -"kI" = ( +"akI" = ( /obj/structure/bookcase, /obj/item/weapon/book/manual/security_space_law, /obj/item/weapon/book/manual/standard_operating_procedure, /obj/item/weapon/book/manual/command_guide, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"kJ" = ( +"akJ" = ( /obj/structure/railing{ dir = 4 }, /obj/random/trash_pile, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"kK" = ( +"akK" = ( /obj/effect/landmark{ name = "tripai" }, @@ -6880,13 +6904,13 @@ }, /turf/simulated/floor/bluegrid, /area/ai) -"kL" = ( +"akL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"kM" = ( +"akM" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 8 @@ -6899,7 +6923,7 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"kN" = ( +"akN" = ( /obj/effect/floor_decal/borderfloor/shifted{ icon_state = "borderfloor_shifted"; dir = 1 @@ -6918,7 +6942,7 @@ }, /turf/simulated/floor/tiled, /area/security/observation) -"kO" = ( +"akO" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, @@ -6930,7 +6954,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"kP" = ( +"akP" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/item/device/radio/intercom/department/security{ @@ -6940,13 +6964,13 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"kQ" = ( +"akQ" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 4 }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"kR" = ( +"akR" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; dir = 4 @@ -6964,7 +6988,7 @@ /obj/effect/overmap/visitable/ship/landable/excursion, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"kS" = ( +"akS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -6974,7 +6998,7 @@ /obj/machinery/camera/network/exploration, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"kT" = ( +"akT" = ( /obj/effect/floor_decal/techfloor, /obj/effect/floor_decal/techfloor{ dir = 1 @@ -6987,14 +7011,14 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"kU" = ( +"akU" = ( /obj/effect/floor_decal/techfloor, /obj/effect/floor_decal/techfloor{ dir = 1 }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"kV" = ( +"akV" = ( /obj/structure/catwalk, /obj/random/junk, /obj/structure/cable{ @@ -7005,13 +7029,13 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"kW" = ( +"akW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"kX" = ( +"akX" = ( /obj/structure/cable/cyan{ d1 = 1; d2 = 2; @@ -7025,7 +7049,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"kY" = ( +"akY" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 10 }, @@ -7041,10 +7065,10 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"kZ" = ( +"akZ" = ( /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"la" = ( +"ala" = ( /obj/effect/floor_decal/borderfloorblack, /obj/effect/floor_decal/borderfloorblack/corner2, /obj/structure/table/rack/shelf/steel, @@ -7053,7 +7077,7 @@ /obj/item/clothing/glasses/hud/security, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"lb" = ( +"alb" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -7070,7 +7094,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"lc" = ( +"alc" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -7081,7 +7105,7 @@ /obj/machinery/door/airlock/glass_security, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"ld" = ( +"ald" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -7102,10 +7126,10 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"le" = ( +"ale" = ( /turf/simulated/wall/r_wall, /area/security/briefing_room) -"lf" = ( +"alf" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -7116,7 +7140,7 @@ /obj/machinery/photocopier, /turf/simulated/floor/tiled, /area/security/briefing_room) -"lg" = ( +"alg" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -7130,7 +7154,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"lh" = ( +"alh" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -7147,7 +7171,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"li" = ( +"ali" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -7169,7 +7193,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"lj" = ( +"alj" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d2 = 4; @@ -7197,7 +7221,7 @@ }, /turf/simulated/floor, /area/crew_quarters/heads/hos) -"lk" = ( +"alk" = ( /obj/machinery/door/airlock/hatch{ icon_state = "door_locked"; id_tag = null; @@ -7207,7 +7231,7 @@ }, /turf/simulated/floor/tiled/dark, /area/ai) -"ll" = ( +"all" = ( /obj/machinery/ai_slipper{ icon_state = "motion0" }, @@ -7235,7 +7259,7 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/dark, /area/ai) -"lm" = ( +"alm" = ( /obj/structure/cable/cyan{ d1 = 1; d2 = 2; @@ -7247,21 +7271,21 @@ /obj/effect/floor_decal/techfloor/corner, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"ln" = ( +"aln" = ( /obj/effect/floor_decal/techfloor{ dir = 1 }, /obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"lo" = ( +"alo" = ( /obj/structure/closet/crate, /obj/item/clothing/accessory/tie/horrible, /obj/random/drinkbottle, /obj/item/weapon/flame/lighter/random, /turf/simulated/floor, /area/maintenance/station/ai) -"lp" = ( +"alp" = ( /obj/effect/floor_decal/techfloor{ dir = 1 }, @@ -7272,7 +7296,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"lq" = ( +"alq" = ( /obj/machinery/recharger, /obj/structure/table/steel, /obj/machinery/light{ @@ -7293,7 +7317,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"lr" = ( +"alr" = ( /obj/effect/floor_decal/techfloor{ dir = 8 }, @@ -7307,7 +7331,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"ls" = ( +"als" = ( /obj/effect/floor_decal/techfloor{ dir = 4 }, @@ -7321,7 +7345,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"lt" = ( +"alt" = ( /obj/structure/closet, /obj/random/maintenance/medical, /obj/random/maintenance/medical, @@ -7329,7 +7353,7 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/station/ai) -"lu" = ( +"alu" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green, /obj/structure/grille, @@ -7353,7 +7377,7 @@ }, /turf/simulated/floor, /area/crew_quarters/heads/hos) -"lv" = ( +"alv" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -7369,7 +7393,7 @@ }, /turf/simulated/floor, /area/security/security_processing) -"lw" = ( +"alw" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/polarized/full{ @@ -7377,7 +7401,7 @@ }, /turf/simulated/floor, /area/security/security_processing) -"lx" = ( +"alx" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/security{ name = "Equipment Storage"; @@ -7385,7 +7409,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"ly" = ( +"aly" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -7395,7 +7419,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"lz" = ( +"alz" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -7412,7 +7436,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"lA" = ( +"alA" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -7421,7 +7445,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"lB" = ( +"alB" = ( /obj/structure/railing{ dir = 8 }, @@ -7430,10 +7454,10 @@ }, /turf/simulated/open, /area/security/hallway) -"lC" = ( +"alC" = ( /turf/simulated/open, /area/security/hallway) -"lD" = ( +"alD" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -7447,7 +7471,7 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/hallway) -"lE" = ( +"alE" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -7456,7 +7480,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"lF" = ( +"alF" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -7479,7 +7503,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"lG" = ( +"alG" = ( /obj/effect/floor_decal/borderfloor{ dir = 8; icon_state = "borderfloor"; @@ -7499,10 +7523,10 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/briefing_room) -"lH" = ( +"alH" = ( /turf/simulated/floor/tiled, /area/security/briefing_room) -"lI" = ( +"alI" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 4 }, @@ -7511,7 +7535,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"lJ" = ( +"alJ" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -7529,7 +7553,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"lK" = ( +"alK" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 }, @@ -7545,13 +7569,13 @@ /obj/structure/table/reinforced, /turf/simulated/floor/tiled, /area/security/briefing_room) -"lL" = ( +"alL" = ( /obj/structure/catwalk, /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"lM" = ( +"alM" = ( /obj/machinery/ai_slipper{ icon_state = "motion0" }, @@ -7568,7 +7592,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"lN" = ( +"alN" = ( /obj/effect/floor_decal/techfloor{ dir = 1 }, @@ -7580,7 +7604,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"lO" = ( +"alO" = ( /obj/structure/cable/cyan{ d1 = 2; d2 = 4; @@ -7604,7 +7628,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"lP" = ( +"alP" = ( /obj/machinery/ai_slipper{ icon_state = "motion0" }, @@ -7621,14 +7645,14 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"lQ" = ( +"alQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"lR" = ( +"alR" = ( /obj/machinery/alarm{ dir = 1; icon_state = "alarm0"; @@ -7636,7 +7660,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai) -"lS" = ( +"alS" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -7646,7 +7670,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai) -"lT" = ( +"alT" = ( /obj/effect/floor_decal/techfloor{ dir = 4 }, @@ -7666,7 +7690,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"lU" = ( +"alU" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -7694,13 +7718,13 @@ /obj/machinery/recharger, /turf/simulated/floor/tiled, /area/security/security_processing) -"lV" = ( +"alV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"lW" = ( +"alW" = ( /obj/structure/cable/green{ icon_state = "0-2" }, @@ -7716,7 +7740,7 @@ /obj/structure/cable/green, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"lX" = ( +"alX" = ( /obj/effect/floor_decal/techfloor{ dir = 8 }, @@ -7741,7 +7765,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai) -"lY" = ( +"alY" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 8 }, @@ -7763,7 +7787,7 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"lZ" = ( +"alZ" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green, /obj/structure/grille, @@ -7784,27 +7808,17 @@ }, /turf/simulated/floor, /area/crew_quarters/heads/hos) -"ma" = ( -/obj/machinery/door/firedoor/glass, +"ama" = ( +/obj/machinery/door/airlock/glass_security, +/turf/simulated/floor/tiled, +/area/security/hallway) +"amb" = ( /obj/structure/grille, -/obj/structure/window/reinforced/polarized/full{ - id = "hos_office" - }, -/turf/simulated/floor, -/area/security/breakroom) -"mb" = ( -/obj/structure/grille, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, /obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized/full{ - id = "hos_office" - }, +/obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/forensics) -"mc" = ( +"amc" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 }, @@ -7834,7 +7848,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"md" = ( +"amd" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -7863,7 +7877,7 @@ /obj/item/device/retail_scanner/security, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"me" = ( +"ame" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -7904,12 +7918,12 @@ /obj/item/device/retail_scanner/security, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"mf" = ( +"amf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"mg" = ( +"amg" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -7926,13 +7940,13 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"mh" = ( +"amh" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/security_lockerroom) -"mi" = ( +"ami" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -7944,7 +7958,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"mj" = ( +"amj" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -7974,7 +7988,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"mk" = ( +"amk" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, @@ -7993,7 +8007,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"ml" = ( +"aml" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -8006,22 +8020,22 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"mm" = ( +"amm" = ( /obj/structure/bed/chair{ dir = 4 }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"mn" = ( +"amn" = ( /obj/structure/table/glass, /obj/item/weapon/folder/red, /turf/simulated/floor/tiled, /area/security/briefing_room) -"mo" = ( +"amo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/security/briefing_room) -"mp" = ( +"amp" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -8032,10 +8046,10 @@ /obj/structure/table/reinforced, /turf/simulated/floor/tiled, /area/security/briefing_room) -"mq" = ( +"amq" = ( /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"mr" = ( +"amr" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 4 }, @@ -8044,7 +8058,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"ms" = ( +"ams" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; @@ -8055,7 +8069,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"mt" = ( +"amt" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 1 }, @@ -8065,7 +8079,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"mu" = ( +"amu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 @@ -8076,20 +8090,20 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"mv" = ( +"amv" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"mw" = ( +"amw" = ( /obj/effect/floor_decal/techfloor{ dir = 1 }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"mx" = ( +"amx" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -8108,10 +8122,10 @@ /obj/item/weapon/hand_labeler, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"my" = ( +"amy" = ( /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"mz" = ( +"amz" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -8130,7 +8144,7 @@ /obj/structure/table/steel, /turf/simulated/floor/tiled, /area/security/security_processing) -"mA" = ( +"amA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -8140,7 +8154,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"mB" = ( +"amB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -8149,14 +8163,14 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"mC" = ( +"amC" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"mD" = ( +"amD" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -8169,33 +8183,54 @@ /obj/structure/closet/wardrobe/red, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"mE" = ( -/obj/structure/grille, -/obj/structure/cable/green, +"amE" = ( /obj/structure/cable/green{ - icon_state = "0-8" + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"amF" = ( /obj/structure/cable/green{ - icon_state = "0-4" + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/structure/window/reinforced/polarized/full{ - id = "hos_office" +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" }, -/turf/simulated/floor, -/area/security/forensics) -"mF" = ( -/obj/structure/grille, /obj/structure/cable/green{ - icon_state = "0-8" + d1 = 1; + d2 = 4; + icon_state = "1-4" }, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized/full{ - id = "hos_office" +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 }, -/turf/simulated/floor, -/area/security/forensics) -"mG" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"amG" = ( /obj/structure/window/reinforced{ dir = 4 }, @@ -8226,10 +8261,10 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"mH" = ( +"amH" = ( /turf/simulated/wall/r_wall, /area/security/hallway) -"mI" = ( +"amI" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ icon_state = "0-4" @@ -8248,7 +8283,7 @@ }, /turf/simulated/floor, /area/lawoffice) -"mJ" = ( +"amJ" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d2 = 8; @@ -8271,15 +8306,14 @@ }, /turf/simulated/floor, /area/lawoffice) -"mK" = ( +"amK" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/red/border, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/red/bordercorner2, +/obj/effect/floor_decal/corner/brown/border, /obj/machinery/light, /turf/simulated/floor/tiled, -/area/security/hallway) -"mL" = ( +/area/quartermaster/belterdock/gear) +"amL" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/item/device/radio/intercom{ @@ -8291,7 +8325,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"mM" = ( +"amM" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -8308,13 +8342,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/security/briefing_room) -"mN" = ( +"amN" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/structure/table/glass, /obj/item/weapon/folder/red, /turf/simulated/floor/tiled, /area/security/briefing_room) -"mO" = ( +"amO" = ( /obj/structure/bed/chair{ dir = 4 }, @@ -8323,13 +8357,13 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"mP" = ( +"amP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/floor_decal/borderfloor/corner, /obj/effect/floor_decal/corner/red/bordercorner, /turf/simulated/floor/tiled, /area/security/briefing_room) -"mQ" = ( +"amQ" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 }, @@ -8341,12 +8375,12 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"mR" = ( +"amR" = ( /obj/effect/floor_decal/rust, /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"mS" = ( +"amS" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 }, @@ -8358,14 +8392,14 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"mT" = ( +"amT" = ( /obj/random/toolbox, /obj/item/clothing/gloves/fyellow, /obj/effect/decal/cleanable/ash, /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/station/ai) -"mU" = ( +"amU" = ( /obj/structure/bed/chair/office/dark{ dir = 8 }, @@ -8380,7 +8414,7 @@ }, /turf/simulated/floor/carpet, /area/security/breakroom) -"mV" = ( +"amV" = ( /obj/structure/railing, /obj/structure/railing{ dir = 4 @@ -8388,14 +8422,14 @@ /obj/random/trash_pile, /turf/simulated/floor, /area/maintenance/cargo) -"mW" = ( +"amW" = ( /obj/machinery/recharge_station, /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"mX" = ( +"amX" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -8411,7 +8445,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"mY" = ( +"amY" = ( /obj/effect/floor_decal/techfloor{ dir = 1 }, @@ -8427,7 +8461,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"mZ" = ( +"amZ" = ( /obj/structure/cable/cyan{ d1 = 1; d2 = 8; @@ -8451,7 +8485,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"na" = ( +"ana" = ( /obj/effect/floor_decal/techfloor{ dir = 1 }, @@ -8462,7 +8496,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"nb" = ( +"anb" = ( /obj/structure/catwalk, /obj/structure/cable{ icon_state = "1-8" @@ -8473,7 +8507,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"nc" = ( +"anc" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -8488,7 +8522,7 @@ /obj/item/device/radio/beacon, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"nd" = ( +"and" = ( /obj/effect/floor_decal/techfloor{ dir = 1 }, @@ -8497,7 +8531,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"ne" = ( +"ane" = ( /obj/structure/extinguisher_cabinet{ dir = 1; icon_state = "extinguisher_closed"; @@ -8505,7 +8539,7 @@ }, /turf/simulated/floor/wood, /area/security/breakroom) -"nf" = ( +"anf" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -8523,7 +8557,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"ng" = ( +"ang" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -8541,7 +8575,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"nh" = ( +"anh" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -8555,14 +8589,14 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"ni" = ( +"ani" = ( /obj/structure/bookcase, /obj/item/weapon/book/manual/security_space_law, /obj/item/weapon/book/manual/security_space_law, /obj/item/weapon/book/manual/standard_operating_procedure, /turf/simulated/floor/wood, /area/security/breakroom) -"nj" = ( +"anj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ d1 = 2; @@ -8572,14 +8606,14 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"nk" = ( +"ank" = ( /obj/effect/floor_decal/borderfloorblack/corner, /obj/effect/floor_decal/corner/red/bordercorner, /obj/structure/table/bench/steel, /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"nl" = ( +"anl" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -8598,7 +8632,7 @@ /obj/item/device/holowarrant, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"nm" = ( +"anm" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d2 = 8; @@ -8618,7 +8652,7 @@ }, /turf/simulated/floor, /area/lawoffice) -"nn" = ( +"ann" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/polarized/full{ @@ -8630,10 +8664,10 @@ }, /turf/simulated/floor, /area/lawoffice) -"no" = ( +"ano" = ( /turf/simulated/wall, /area/security/hallway) -"np" = ( +"anp" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -8644,7 +8678,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"nq" = ( +"anq" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -8663,7 +8697,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"nr" = ( +"anr" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -8678,7 +8712,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"ns" = ( +"ans" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -8690,7 +8724,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"nt" = ( +"ant" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 @@ -8700,7 +8734,7 @@ /obj/item/weapon/storage/box/donut, /turf/simulated/floor/tiled, /area/security/briefing_room) -"nu" = ( +"anu" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -8709,7 +8743,7 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/security/security_processing) -"nv" = ( +"anv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, @@ -8724,7 +8758,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"nw" = ( +"anw" = ( /obj/effect/floor_decal/corner/red{ icon_state = "corner_white"; dir = 6 @@ -8735,22 +8769,22 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"nx" = ( +"anx" = ( /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/cargo) -"ny" = ( +"any" = ( /obj/effect/floor_decal/techfloor{ dir = 9 }, /obj/machinery/porta_turret, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"nz" = ( +"anz" = ( /obj/machinery/light, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"nA" = ( +"anA" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -8765,7 +8799,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"nB" = ( +"anB" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -8775,13 +8809,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"nC" = ( +"anC" = ( /obj/effect/floor_decal/techfloor{ dir = 8 }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"nD" = ( +"anD" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, @@ -8794,7 +8828,7 @@ /obj/item/clothing/suit/space/void/security/fluff/hos, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"nE" = ( +"anE" = ( /obj/structure/table/woodentable, /obj/item/weapon/paper{ desc = ""; @@ -8819,7 +8853,7 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"nF" = ( +"anF" = ( /obj/structure/bed/chair/comfy/black, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -8851,7 +8885,7 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"nG" = ( +"anG" = ( /obj/structure/cable/green{ d2 = 4; icon_state = "0-4" @@ -8873,7 +8907,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"nH" = ( +"anH" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -8892,7 +8926,7 @@ /obj/item/device/holowarrant, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"nI" = ( +"anI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, @@ -8904,7 +8938,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"nJ" = ( +"anJ" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -8917,7 +8951,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"nK" = ( +"anK" = ( /obj/structure/bed/chair/office/dark{ dir = 4 }, @@ -8937,14 +8971,14 @@ }, /turf/simulated/floor/carpet, /area/security/breakroom) -"nL" = ( +"anL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"nM" = ( +"anM" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -8958,10 +8992,10 @@ /obj/item/device/holowarrant, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"nN" = ( +"anN" = ( /turf/simulated/floor/tiled, /area/security/hallway) -"nO" = ( +"anO" = ( /obj/effect/floor_decal/steeldecal/steel_decals9{ dir = 1 }, @@ -8970,7 +9004,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"nP" = ( +"anP" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -8982,7 +9016,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"nQ" = ( +"anQ" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -9007,7 +9041,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"nR" = ( +"anR" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -9024,7 +9058,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"nS" = ( +"anS" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, @@ -9032,7 +9066,7 @@ /obj/item/weapon/folder/red, /turf/simulated/floor/tiled, /area/security/briefing_room) -"nT" = ( +"anT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/borderfloor/corner{ dir = 4 @@ -9042,7 +9076,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"nU" = ( +"anU" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 }, @@ -9054,13 +9088,13 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"nV" = ( +"anV" = ( /obj/structure/ladder{ pixel_y = 16 }, /turf/simulated/floor, /area/maintenance/station/ai) -"nW" = ( +"anW" = ( /obj/machinery/firealarm{ dir = 8; pixel_x = -26 @@ -9072,7 +9106,7 @@ /obj/structure/closet/secure_closet/hos2, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"nX" = ( +"anX" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -9083,11 +9117,11 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"nY" = ( +"anY" = ( /obj/structure/table/woodentable, /turf/simulated/floor/carpet, /area/security/breakroom) -"nZ" = ( +"anZ" = ( /obj/effect/floor_decal/spline/plain, /obj/structure/flora/pottedplant/stoutbush, /obj/machinery/button/windowtint{ @@ -9101,18 +9135,14 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"oa" = ( -/obj/item/device/radio/intercom{ - dir = 4; - pixel_x = 24 - }, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" +"aoa" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"ob" = ( +"aob" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 10 }, @@ -9134,7 +9164,7 @@ /obj/item/device/holowarrant, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"oc" = ( +"aoc" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -9143,7 +9173,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"od" = ( +"aod" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 10 }, @@ -9162,7 +9192,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"oe" = ( +"aoe" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 }, @@ -9175,10 +9205,10 @@ /obj/item/device/holowarrant, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"of" = ( +"aof" = ( /turf/simulated/wall/r_wall, /area/security/security_processing) -"og" = ( +"aog" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/polarized/full{ @@ -9186,7 +9216,7 @@ }, /turf/simulated/floor, /area/lawoffice) -"oh" = ( +"aoh" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -9201,7 +9231,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"oi" = ( +"aoi" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -9215,7 +9245,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"oj" = ( +"aoj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -9231,7 +9261,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"ok" = ( +"aok" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -9239,7 +9269,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"ol" = ( +"aol" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -9250,7 +9280,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"om" = ( +"aom" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -9260,7 +9290,7 @@ /obj/item/weapon/folder/red, /turf/simulated/floor/tiled, /area/security/briefing_room) -"on" = ( +"aon" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -9269,7 +9299,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/security/briefing_room) -"oo" = ( +"aoo" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -9292,7 +9322,7 @@ /obj/structure/table/reinforced, /turf/simulated/floor/tiled, /area/security/briefing_room) -"op" = ( +"aop" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -9300,19 +9330,19 @@ /obj/random/junk, /turf/simulated/floor, /area/maintenance/cargo) -"oq" = ( +"aoq" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/maintenance/common, /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"or" = ( +"aor" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor, /area/maintenance/cargo) -"os" = ( +"aos" = ( /obj/machinery/light/small{ dir = 1 }, @@ -9320,18 +9350,18 @@ /obj/structure/table/steel, /turf/simulated/floor, /area/maintenance/cargo) -"ot" = ( +"aot" = ( /obj/structure/lattice, /obj/structure/grille, /obj/structure/grille, /turf/space, /area/space) -"ou" = ( +"aou" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"ov" = ( +"aov" = ( /obj/structure/bed/chair/office/dark{ dir = 1 }, @@ -9340,19 +9370,19 @@ /obj/effect/floor_decal/carpet, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"ow" = ( +"aow" = ( /obj/machinery/hologram/holopad, /obj/effect/floor_decal/carpet, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"ox" = ( +"aox" = ( /obj/machinery/light_switch{ dir = 8; pixel_x = 28 }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"oy" = ( +"aoy" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -9361,13 +9391,13 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"oz" = ( +"aoz" = ( /turf/simulated/wall, /area/security/evidence_storage) -"oA" = ( +"aoA" = ( /turf/simulated/wall, /area/security/security_processing) -"oB" = ( +"aoB" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 }, @@ -9383,7 +9413,7 @@ /obj/item/device/taperecorder, /turf/simulated/floor/tiled, /area/security/security_processing) -"oC" = ( +"aoC" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -9396,7 +9426,7 @@ /obj/machinery/camera/network/security, /turf/simulated/floor/tiled, /area/security/security_processing) -"oD" = ( +"aoD" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -9415,7 +9445,7 @@ /obj/item/weapon/pen, /turf/simulated/floor/tiled, /area/security/security_processing) -"oE" = ( +"aoE" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -9427,7 +9457,7 @@ /obj/structure/table/steel, /turf/simulated/floor/tiled, /area/security/security_processing) -"oF" = ( +"aoF" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 }, @@ -9437,7 +9467,7 @@ /obj/structure/table/steel, /turf/simulated/floor/tiled, /area/security/security_processing) -"oG" = ( +"aoG" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -9460,7 +9490,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"oH" = ( +"aoH" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 }, @@ -9475,12 +9505,12 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"oI" = ( +"aoI" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /turf/simulated/floor/tiled, /area/security/briefing_room) -"oJ" = ( +"aoJ" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/light, @@ -9490,7 +9520,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"oK" = ( +"aoK" = ( /obj/machinery/requests_console{ department = "Cargo Bay"; departmentType = 2; @@ -9506,7 +9536,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"oL" = ( +"aoL" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/item/device/radio/intercom{ @@ -9514,7 +9544,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"oM" = ( +"aoM" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -9522,7 +9552,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"oN" = ( +"aoN" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 }, @@ -9542,7 +9572,7 @@ /obj/structure/table/reinforced, /turf/simulated/floor/tiled, /area/security/briefing_room) -"oO" = ( +"aoO" = ( /obj/structure/disposalpipe/segment{ dir = 4; icon_state = "pipe-c" @@ -9551,7 +9581,7 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/cargo) -"oP" = ( +"aoP" = ( /obj/structure/disposalpipe/tagger{ dir = 8; name = "package tagger - Trash"; @@ -9563,7 +9593,7 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"oQ" = ( +"aoQ" = ( /obj/structure/disposalpipe/segment{ dir = 2; icon_state = "pipe-c" @@ -9571,30 +9601,30 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/cargo) -"oR" = ( +"aoR" = ( /obj/random/trash_pile, /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/cargo) -"oS" = ( +"aoS" = ( /obj/random/action_figure, /obj/structure/table/steel, /turf/simulated/floor, /area/maintenance/cargo) -"oT" = ( +"aoT" = ( /obj/random/mouseremains, /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/station/ai) -"oU" = ( +"aoU" = ( /obj/structure/table/bench, /turf/simulated/floor, /area/maintenance/station/ai) -"oV" = ( +"aoV" = ( /obj/item/weapon/stool, /turf/simulated/floor, /area/maintenance/cargo) -"oW" = ( +"aoW" = ( /obj/structure/table/woodentable, /obj/structure/cable/green{ d1 = 4; @@ -9610,7 +9640,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"oX" = ( +"aoX" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -9628,7 +9658,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"oY" = ( +"aoY" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -9656,7 +9686,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"oZ" = ( +"aoZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, @@ -9675,26 +9705,37 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"pa" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +"apa" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /obj/structure/cable/green{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/wood, -/area/crew_quarters/heads/hos) -"pb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/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/hallway) +"apb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -9709,9 +9750,28 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/security/hallway) -"pc" = ( +"apc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -9734,7 +9794,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"pd" = ( +"apd" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -9764,7 +9824,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"pe" = ( +"ape" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/structure/cable/green{ @@ -9778,7 +9838,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"pf" = ( +"apf" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -9805,7 +9865,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"pg" = ( +"apg" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -9829,7 +9889,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"ph" = ( +"aph" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 1 }, @@ -9861,7 +9921,7 @@ /obj/structure/disposalpipe/junction, /turf/simulated/floor/tiled, /area/security/hallway) -"pi" = ( +"api" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -9885,7 +9945,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"pj" = ( +"apj" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 }, @@ -9898,7 +9958,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"pk" = ( +"apk" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 5 }, @@ -9910,7 +9970,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"pl" = ( +"apl" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -9923,7 +9983,7 @@ /obj/effect/floor_decal/corner/brown/bordercorner2, /turf/simulated/floor/tiled, /area/quartermaster/office) -"pm" = ( +"apm" = ( /obj/structure/bed/chair/office/dark{ dir = 8 }, @@ -9948,7 +10008,7 @@ }, /turf/simulated/floor/carpet, /area/security/breakroom) -"pn" = ( +"apn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -9956,7 +10016,7 @@ /obj/structure/table/steel, /turf/simulated/floor/tiled, /area/security/security_processing) -"po" = ( +"apo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -9966,7 +10026,7 @@ }, /turf/simulated/floor/tiled, /area/security/security_processing) -"pp" = ( +"app" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -9976,7 +10036,7 @@ /obj/structure/table/steel, /turf/simulated/floor/tiled, /area/security/security_processing) -"pq" = ( +"apq" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -10006,10 +10066,10 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"pr" = ( +"apr" = ( /turf/simulated/wall, /area/security/briefing_room) -"ps" = ( +"aps" = ( /obj/structure/disposalpipe/junction{ icon_state = "pipe-j2"; dir = 2 @@ -10019,14 +10079,14 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"pt" = ( +"apt" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/cargo) -"pu" = ( +"apu" = ( /obj/structure/disposalpipe/sortjunction/wildcard/flipped{ dir = 1 }, @@ -10036,13 +10096,13 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"pv" = ( +"apv" = ( /obj/structure/railing, /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/cargo) -"pw" = ( +"apw" = ( /obj/structure/railing, /obj/machinery/light/small{ dir = 1 @@ -10050,7 +10110,7 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/cargo) -"px" = ( +"apx" = ( /obj/structure/railing, /obj/machinery/power/apc{ dir = 1; @@ -10064,7 +10124,7 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/cargo) -"py" = ( +"apy" = ( /obj/structure/railing, /obj/structure/cable/green{ d1 = 2; @@ -10082,16 +10142,16 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/cargo) -"pz" = ( +"apz" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"pA" = ( +"apA" = ( /obj/random/trash, /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/station/ai) -"pB" = ( +"apB" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 4; @@ -10114,14 +10174,12 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"pC" = ( -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/simulated/floor/wood, -/area/crew_quarters/heads/hos) -"pD" = ( +"apC" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"apD" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -10147,7 +10205,7 @@ /obj/machinery/camera/network/security, /turf/simulated/floor/tiled, /area/security/hallway) -"pE" = ( +"apE" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -10179,7 +10237,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"pF" = ( +"apF" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/effect/floor_decal/borderfloor/corner2{ @@ -10193,12 +10251,12 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"pG" = ( +"apG" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /turf/simulated/floor/tiled, /area/security/hallway) -"pH" = ( +"apH" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -10217,7 +10275,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"pI" = ( +"apI" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 8 }, @@ -10240,7 +10298,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"pJ" = ( +"apJ" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -10248,7 +10306,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"pK" = ( +"apK" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -10256,13 +10314,13 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"pL" = ( +"apL" = ( /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"pM" = ( +"apM" = ( /turf/simulated/floor/tiled, /area/security/security_processing) -"pN" = ( +"apN" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/paleblue/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -10274,12 +10332,12 @@ /obj/machinery/light, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"pO" = ( +"apO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/security/security_processing) -"pP" = ( +"apP" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -10294,7 +10352,7 @@ }, /turf/simulated/floor/tiled, /area/security/security_processing) -"pQ" = ( +"apQ" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -10314,7 +10372,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"pR" = ( +"apR" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -10331,7 +10389,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"pS" = ( +"apS" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/paleblue/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -10343,7 +10401,7 @@ /obj/machinery/computer/timeclock/premade/south, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"pT" = ( +"apT" = ( /obj/structure/catwalk, /obj/structure/cable{ d1 = 4; @@ -10354,7 +10412,7 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"pU" = ( +"apU" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -10362,7 +10420,7 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor, /area/maintenance/cargo) -"pV" = ( +"apV" = ( /obj/structure/disposalpipe/tagger/partial{ name = "partial tagger - Sorting Office"; sort_tag = "Sorting Office" @@ -10373,7 +10431,7 @@ /obj/structure/railing, /turf/simulated/floor, /area/maintenance/cargo) -"pW" = ( +"apW" = ( /obj/structure/disposalpipe/segment{ dir = 1; icon_state = "pipe-c" @@ -10381,7 +10439,7 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/cargo) -"pX" = ( +"apX" = ( /obj/structure/disposalpipe/junction{ dir = 8; icon_state = "pipe-j2" @@ -10389,7 +10447,7 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/cargo) -"pY" = ( +"apY" = ( /obj/structure/disposalpipe/segment{ dir = 2; icon_state = "pipe-c" @@ -10402,40 +10460,40 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"pZ" = ( +"apZ" = ( /obj/random/junk, /turf/simulated/floor, /area/maintenance/station/ai) -"qa" = ( +"aqa" = ( /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"qb" = ( +"aqb" = ( /obj/structure/railing{ dir = 8 }, /obj/structure/railing, /turf/simulated/floor, /area/maintenance/cargo) -"qc" = ( +"aqc" = ( /turf/simulated/wall/r_wall, /area/security/forensics) -"qd" = ( +"aqd" = ( /turf/simulated/wall, /area/security/forensics) -"qe" = ( +"aqe" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/detectives_office) -"qf" = ( +"aqf" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/disposalpipe/segment, /turf/simulated/floor, /area/security/detectives_office) -"qg" = ( +"aqg" = ( /obj/structure/table/woodentable, /obj/item/device/taperecorder{ pixel_x = -4; @@ -10446,7 +10504,7 @@ }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"qh" = ( +"aqh" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -10471,7 +10529,7 @@ /obj/item/weapon/storage/box/evidence, /turf/simulated/floor/tiled, /area/security/security_processing) -"qi" = ( +"aqi" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -10479,7 +10537,7 @@ }, /turf/simulated/floor/tiled, /area/security/security_processing) -"qj" = ( +"aqj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -10489,7 +10547,7 @@ }, /turf/simulated/floor/tiled, /area/security/security_processing) -"qk" = ( +"aqk" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 4; @@ -10502,7 +10560,7 @@ }, /turf/simulated/floor/tiled, /area/security/security_processing) -"ql" = ( +"aql" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -10514,7 +10572,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"qm" = ( +"aqm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 @@ -10536,34 +10594,34 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"qn" = ( +"aqn" = ( /obj/machinery/door/firedoor/glass, /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk, /obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"qo" = ( +"aqo" = ( /obj/structure/cable{ icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/cargo) -"qp" = ( +"aqp" = ( /obj/structure/disposalpipe/segment, /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/cargo) -"qq" = ( +"aqq" = ( /obj/structure/catwalk, /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/cargo) -"qr" = ( +"aqr" = ( /turf/simulated/wall, /area/quartermaster/delivery) -"qs" = ( +"aqs" = ( /obj/machinery/disposal/deliveryChute, /obj/structure/disposalpipe/trunk{ dir = 1 @@ -10574,7 +10632,7 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/quartermaster/delivery) -"qt" = ( +"aqt" = ( /obj/machinery/door/airlock/maintenance/cargo{ req_access = list(50); req_one_access = list(48) @@ -10588,10 +10646,10 @@ }, /turf/simulated/floor, /area/quartermaster/delivery) -"qu" = ( +"aqu" = ( /turf/simulated/wall, /area/quartermaster/office) -"qv" = ( +"aqv" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d2 = 2; @@ -10612,7 +10670,7 @@ }, /turf/simulated/floor, /area/security/forensics) -"qw" = ( +"aqw" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 9 }, @@ -10623,7 +10681,7 @@ /obj/item/weapon/forensics/sample_kit, /turf/simulated/floor/tiled/white, /area/security/forensics) -"qx" = ( +"aqx" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, @@ -10634,7 +10692,7 @@ /obj/machinery/microscope, /turf/simulated/floor/tiled/white, /area/security/forensics) -"qy" = ( +"aqy" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, @@ -10644,7 +10702,7 @@ /obj/machinery/dnaforensics, /turf/simulated/floor/tiled/white, /area/security/forensics) -"qz" = ( +"aqz" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 9 }, @@ -10666,7 +10724,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"qA" = ( +"aqA" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, @@ -10683,7 +10741,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"qB" = ( +"aqB" = ( /obj/machinery/disposal, /obj/effect/floor_decal/borderfloorwhite{ dir = 5 @@ -10700,45 +10758,45 @@ /obj/structure/disposalpipe/trunk, /turf/simulated/floor/tiled/white, /area/security/forensics) -"qC" = ( +"aqC" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/forensics) -"qD" = ( +"aqD" = ( /obj/structure/filingcabinet/chestdrawer, /turf/simulated/floor/lino, /area/security/detectives_office) -"qE" = ( +"aqE" = ( /obj/structure/table/woodentable, /turf/simulated/floor/lino, /area/security/detectives_office) -"qF" = ( +"aqF" = ( /obj/structure/table/woodentable, /obj/machinery/alarm{ pixel_y = 22 }, /turf/simulated/floor/lino, /area/security/detectives_office) -"qG" = ( +"aqG" = ( /obj/structure/bookcase, /obj/item/weapon/book/manual/security_space_law, /obj/item/weapon/book/manual/security_space_law, /turf/simulated/floor/lino, /area/security/detectives_office) -"qH" = ( +"aqH" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ dir = 1 }, /turf/simulated/floor/lino, /area/security/detectives_office) -"qI" = ( +"aqI" = ( /obj/structure/flora/pottedplant, /turf/simulated/floor/lino, /area/security/detectives_office) -"qJ" = ( +"aqJ" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -10763,7 +10821,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"qK" = ( +"aqK" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -10775,7 +10833,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"qL" = ( +"aqL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -10784,7 +10842,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"qM" = ( +"aqM" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -10801,13 +10859,13 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"qN" = ( +"aqN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled, /area/security/security_processing) -"qO" = ( +"aqO" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -10816,7 +10874,7 @@ }, /turf/simulated/floor/tiled, /area/security/security_processing) -"qP" = ( +"aqP" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -10841,7 +10899,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"qQ" = ( +"aqQ" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/paleblue/border, /obj/effect/floor_decal/borderfloor/corner2{ @@ -10858,7 +10916,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"qR" = ( +"aqR" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/effect/floor_decal/borderfloor/corner2{ @@ -10872,7 +10930,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"qS" = ( +"aqS" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; dir = 9 @@ -10884,19 +10942,19 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"qT" = ( +"aqT" = ( /turf/simulated/floor, /area/maintenance/station/elevator) -"qU" = ( +"aqU" = ( /obj/machinery/portable_atmospherics/powered/pump/filled, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"qV" = ( +"aqV" = ( /obj/effect/floor_decal/rust, /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor, /area/maintenance/station/elevator) -"qW" = ( +"aqW" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -10910,7 +10968,7 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/cargo) -"qX" = ( +"aqX" = ( /obj/machinery/door/firedoor/glass, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/maintenance/cargo{ @@ -10919,7 +10977,7 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"qY" = ( +"aqY" = ( /obj/machinery/conveyor{ dir = 1; id = "packageSort1" @@ -10927,7 +10985,7 @@ /obj/structure/plasticflaps, /turf/simulated/floor, /area/quartermaster/delivery) -"qZ" = ( +"aqZ" = ( /obj/structure/flora/pottedplant/stoutbush, /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -10938,7 +10996,7 @@ /obj/machinery/camera/network/cargo, /turf/simulated/floor/tiled, /area/quartermaster/office) -"ra" = ( +"ara" = ( /obj/structure/disposalpipe/sortjunction/untagged/flipped{ dir = 1 }, @@ -10955,7 +11013,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"rb" = ( +"arb" = ( /obj/machinery/photocopier, /obj/effect/floor_decal/borderfloor{ dir = 9 @@ -10965,7 +11023,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"rc" = ( +"arc" = ( /obj/structure/closet/emcloset, /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -10975,7 +11033,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"rd" = ( +"ard" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green, /obj/structure/cable/green{ @@ -10996,7 +11054,7 @@ }, /turf/simulated/floor, /area/security/forensics) -"re" = ( +"are" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11017,7 +11075,7 @@ /obj/item/weapon/forensics/sample_kit/powder, /turf/simulated/floor/tiled/white, /area/security/forensics) -"rf" = ( +"arf" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11026,7 +11084,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled/white, /area/security/forensics) -"rg" = ( +"arg" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11034,7 +11092,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"rh" = ( +"arh" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11048,7 +11106,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"ri" = ( +"ari" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11061,7 +11119,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"rj" = ( +"arj" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/structure/cable/green{ d1 = 4; @@ -11070,7 +11128,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"rk" = ( +"ark" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11088,7 +11146,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"rl" = ( +"arl" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 @@ -11096,7 +11154,7 @@ /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"rm" = ( +"arm" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11113,7 +11171,7 @@ }, /turf/simulated/floor/lino, /area/security/detectives_office) -"rn" = ( +"arn" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11130,7 +11188,7 @@ }, /turf/simulated/floor/lino, /area/security/detectives_office) -"ro" = ( +"aro" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11147,7 +11205,7 @@ }, /turf/simulated/floor/lino, /area/security/detectives_office) -"rp" = ( +"arp" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11169,14 +11227,14 @@ }, /turf/simulated/floor/lino, /area/security/detectives_office) -"rq" = ( +"arq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/steeldecal/steel_decals6, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"rr" = ( +"arr" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -11200,7 +11258,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"rs" = ( +"ars" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -11216,7 +11274,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"rt" = ( +"art" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 10 }, @@ -11233,7 +11291,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"ru" = ( +"aru" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 }, @@ -11243,7 +11301,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"rv" = ( +"arv" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 }, @@ -11258,12 +11316,12 @@ /obj/structure/filingcabinet/chestdrawer, /turf/simulated/floor/tiled, /area/security/security_processing) -"rw" = ( +"arw" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /turf/simulated/floor/tiled, /area/security/security_processing) -"rx" = ( +"arx" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/effect/floor_decal/borderfloor/corner2{ @@ -11274,7 +11332,7 @@ }, /turf/simulated/floor/tiled, /area/security/security_processing) -"ry" = ( +"ary" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 }, @@ -11286,7 +11344,7 @@ /obj/structure/table/steel, /turf/simulated/floor/tiled, /area/security/security_processing) -"rz" = ( +"arz" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -11311,7 +11369,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"rA" = ( +"arA" = ( /obj/effect/floor_decal/borderfloorblack/full, /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 8 @@ -11337,7 +11395,7 @@ /obj/structure/cable/green, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"rB" = ( +"arB" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 4; @@ -11362,7 +11420,7 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/security/hallway) -"rC" = ( +"arC" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/paleblue/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -11375,18 +11433,18 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner2, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"rD" = ( +"arD" = ( /obj/structure/railing, /turf/simulated/floor, /area/maintenance/station/elevator) -"rE" = ( +"arE" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/railing{ dir = 4 }, /turf/simulated/floor, /area/maintenance/station/elevator) -"rF" = ( +"arF" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -11394,15 +11452,15 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/cargo) -"rG" = ( +"arG" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/cargo) -"rH" = ( +"arH" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor, /area/maintenance/cargo) -"rI" = ( +"arI" = ( /obj/structure/closet, /obj/random/maintenance/cargo, /obj/random/maintenance/clean, @@ -11412,14 +11470,14 @@ /obj/random/maintenance/clean, /turf/simulated/floor, /area/maintenance/cargo) -"rJ" = ( +"arJ" = ( /obj/machinery/conveyor{ dir = 1; id = "packageSort1" }, /turf/simulated/floor, /area/quartermaster/delivery) -"rK" = ( +"arK" = ( /obj/structure/disposalpipe/junction{ icon_state = "pipe-j2"; dir = 2 @@ -11437,7 +11495,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"rL" = ( +"arL" = ( /obj/structure/disposalpipe/sortjunction/flipped{ dir = 1; name = "Sorting Office"; @@ -11456,7 +11514,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"rM" = ( +"arM" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; dir = 5 @@ -11471,7 +11529,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"rN" = ( +"arN" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11495,7 +11553,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"rO" = ( +"arO" = ( /obj/machinery/door/airlock/glass_mining{ name = "Delivery Office"; req_access = list(50); @@ -11520,7 +11578,7 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/delivery) -"rP" = ( +"arP" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11544,7 +11602,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"rQ" = ( +"arQ" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -11561,7 +11619,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"rR" = ( +"arR" = ( /obj/machinery/light{ dir = 1 }, @@ -11578,7 +11636,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"rS" = ( +"arS" = ( /obj/structure/railing{ dir = 8 }, @@ -11589,13 +11647,13 @@ }, /turf/simulated/open, /area/maintenance/station/ai) -"rT" = ( +"arT" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment, /turf/simulated/floor, /area/maintenance/station/ai) -"rU" = ( +"arU" = ( /obj/structure/catwalk, /obj/structure/disposalpipe/segment{ dir = 4; @@ -11603,7 +11661,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"rV" = ( +"arV" = ( /obj/structure/catwalk, /obj/structure/disposalpipe/segment{ dir = 8; @@ -11611,7 +11669,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"rW" = ( +"arW" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 1 }, @@ -11620,7 +11678,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"rX" = ( +"arX" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 4 }, @@ -11629,7 +11687,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"rY" = ( +"arY" = ( /obj/structure/table/steel, /obj/item/weapon/paper_bin{ pixel_x = -3; @@ -11643,11 +11701,11 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"rZ" = ( +"arZ" = ( /obj/structure/noticeboard, /turf/simulated/wall, /area/quartermaster/office) -"sa" = ( +"asa" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -11674,7 +11732,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"sb" = ( +"asb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, @@ -11686,7 +11744,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"sc" = ( +"asc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -11707,7 +11765,7 @@ /obj/item/weapon/hand_labeler, /turf/simulated/floor/tiled/white, /area/security/forensics) -"sd" = ( +"asd" = ( /obj/effect/floor_decal/borderfloorwhite/corner2{ dir = 10 }, @@ -11741,14 +11799,14 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"se" = ( +"ase" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/security/forensics) -"sf" = ( +"asf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, @@ -11780,14 +11838,14 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"sg" = ( +"asg" = ( /obj/machinery/light{ icon_state = "tube1"; dir = 8 }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"sh" = ( +"ash" = ( /obj/structure/table/woodentable, /obj/item/weapon/paper_bin, /obj/item/clothing/glasses/sunglasses, @@ -11797,7 +11855,7 @@ }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"si" = ( +"asi" = ( /obj/structure/table/woodentable, /obj/item/device/flashlight/lamp/green, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -11805,7 +11863,7 @@ }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"sj" = ( +"asj" = ( /obj/structure/table/woodentable, /obj/item/weapon/handcuffs, /obj/item/weapon/storage/fancy/cigarettes/dromedaryco, @@ -11814,7 +11872,7 @@ }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"sk" = ( +"ask" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -11829,7 +11887,7 @@ }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"sl" = ( +"asl" = ( /obj/machinery/light{ dir = 4 }, @@ -11839,7 +11897,7 @@ }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"sm" = ( +"asm" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -11867,7 +11925,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"sn" = ( +"asn" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -11878,18 +11936,18 @@ }, /turf/simulated/floor/tiled, /area/security/security_processing) -"so" = ( +"aso" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/elevator) -"sp" = ( +"asp" = ( /turf/simulated/wall/r_wall, /area/hallway/station/upper) -"sq" = ( +"asq" = ( /turf/simulated/wall, /area/hallway/station/upper) -"sr" = ( +"asr" = ( /obj/structure/cable{ d1 = 1; d2 = 4; @@ -11906,7 +11964,7 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/cargo) -"ss" = ( +"ass" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -11916,7 +11974,7 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"st" = ( +"ast" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ d1 = 2; @@ -11925,7 +11983,7 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"su" = ( +"asu" = ( /obj/structure/closet/crate, /obj/random/maintenance/cargo, /obj/random/maintenance/cargo, @@ -11936,14 +11994,14 @@ /obj/random/maintenance/clean, /turf/simulated/floor, /area/maintenance/cargo) -"sv" = ( +"asv" = ( /obj/item/weapon/stool, /obj/effect/floor_decal/industrial/warning{ dir = 9 }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/delivery) -"sw" = ( +"asw" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -11953,20 +12011,20 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"sx" = ( +"asx" = ( /obj/structure/disposalpipe/segment{ dir = 1; icon_state = "pipe-c" }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"sy" = ( +"asy" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"sz" = ( +"asz" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -11978,7 +12036,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals4, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"sA" = ( +"asA" = ( /obj/machinery/door/airlock/glass_mining{ name = "Delivery Office"; req_access = list(50); @@ -11990,7 +12048,7 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/delivery) -"sB" = ( +"asB" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -12007,7 +12065,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"sC" = ( +"asC" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -12028,7 +12086,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"sD" = ( +"asD" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -12046,7 +12104,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"sE" = ( +"asE" = ( /obj/machinery/newscaster{ layer = 3.3; pixel_x = -27; @@ -12069,7 +12127,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"sF" = ( +"asF" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -12089,7 +12147,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"sG" = ( +"asG" = ( /obj/machinery/door/airlock/glass_mining{ id_tag = "cargodoor"; name = "Cargo Office"; @@ -12105,7 +12163,7 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/office) -"sH" = ( +"asH" = ( /obj/effect/floor_decal/rust, /obj/structure/disposalpipe/segment{ dir = 4; @@ -12113,17 +12171,17 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"sI" = ( +"asI" = ( /obj/structure/disposalpipe/segment{ dir = 2; icon_state = "pipe-c" }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"sJ" = ( +"asJ" = ( /turf/simulated/floor/tiled, /area/quartermaster/office) -"sK" = ( +"asK" = ( /obj/structure/bed/chair/comfy/brown, /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -12133,7 +12191,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"sL" = ( +"asL" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d2 = 2; @@ -12157,20 +12215,20 @@ }, /turf/simulated/floor, /area/security/forensics) -"sM" = ( +"asM" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"sN" = ( +"asN" = ( /turf/simulated/floor/tiled/white, /area/security/forensics) -"sO" = ( +"asO" = ( /obj/machinery/door/window/eastright, /turf/simulated/floor/tiled/white, /area/security/forensics) -"sP" = ( +"asP" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -12178,7 +12236,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"sQ" = ( +"asQ" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 4 }, @@ -12190,10 +12248,10 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"sR" = ( +"asR" = ( /turf/simulated/floor/carpet, /area/security/detectives_office) -"sS" = ( +"asS" = ( /obj/structure/bed/chair/office/dark{ dir = 4 }, @@ -12202,11 +12260,11 @@ }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"sT" = ( +"asT" = ( /obj/structure/table/woodentable, /turf/simulated/floor/carpet, /area/security/detectives_office) -"sU" = ( +"asU" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -12220,7 +12278,7 @@ }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"sV" = ( +"asV" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -12244,7 +12302,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"sW" = ( +"asW" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -12275,7 +12333,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"sX" = ( +"asX" = ( /obj/structure/cable{ d1 = 2; d2 = 8; @@ -12294,7 +12352,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"sY" = ( +"asY" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -12322,7 +12380,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"sZ" = ( +"asZ" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/structure/disposalpipe/segment{ @@ -12330,7 +12388,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"ta" = ( +"ata" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -12358,14 +12416,14 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"tb" = ( +"atb" = ( /obj/machinery/camera/network/security{ icon_state = "camera"; dir = 10 }, /turf/simulated/mineral/floor/vacuum, /area/security/nuke_storage) -"tc" = ( +"atc" = ( /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 5 }, @@ -12383,7 +12441,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"td" = ( +"atd" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -12413,7 +12471,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"te" = ( +"ate" = ( /obj/structure/cable/green{ icon_state = "32-2" }, @@ -12421,7 +12479,7 @@ /obj/structure/railing, /turf/simulated/open, /area/maintenance/station/elevator) -"tf" = ( +"atf" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/structure/cable/green{ @@ -12435,7 +12493,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"tg" = ( +"atg" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -12453,7 +12511,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"th" = ( +"ath" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 1 }, @@ -12477,7 +12535,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"ti" = ( +"ati" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -12495,7 +12553,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"tj" = ( +"atj" = ( /obj/effect/floor_decal/borderfloor{ dir = 4; pixel_x = -16 @@ -12524,25 +12582,25 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"tk" = ( +"atk" = ( /obj/structure/catwalk, /obj/structure/disposalpipe/segment, /turf/simulated/floor, /area/maintenance/station/elevator) -"tl" = ( +"atl" = ( /turf/simulated/wall/r_wall, /area/maintenance/station/elevator) -"tm" = ( +"atm" = ( /obj/machinery/atmospherics/pipe/cap/hidden, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/station/elevator) -"tn" = ( +"atn" = ( /turf/simulated/shuttle/wall/voidcraft/green{ hard_corner = 1 }, /area/tether/elevator) -"to" = ( +"ato" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -12568,7 +12626,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"tp" = ( +"atp" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -12585,7 +12643,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"tq" = ( +"atq" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 }, @@ -12601,7 +12659,7 @@ /obj/structure/flora/pottedplant/stoutbush, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"tr" = ( +"atr" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 6 }, @@ -12624,7 +12682,7 @@ /obj/machinery/vending/cola, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"ts" = ( +"ats" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 6 }, @@ -12644,7 +12702,7 @@ /obj/machinery/vending/snack, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"tt" = ( +"att" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/paleblue/border, /obj/machinery/door/firedoor/glass/hidden/steel{ @@ -12661,7 +12719,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"tu" = ( +"atu" = ( /obj/machinery/conveyor{ dir = 1; id = "packageSort1" @@ -12671,25 +12729,25 @@ }, /turf/simulated/floor/plating, /area/quartermaster/delivery) -"tv" = ( +"atv" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/delivery) -"tw" = ( +"atw" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"tx" = ( +"atx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"ty" = ( +"aty" = ( /obj/structure/table/steel, /obj/item/weapon/storage/box, /obj/item/weapon/storage/box, @@ -12712,7 +12770,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"tz" = ( +"atz" = ( /obj/machinery/door/airlock/glass_mining{ id_tag = "cargodoor"; name = "Cargo Office"; @@ -12724,15 +12782,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/office) -"tA" = ( +"atA" = ( /obj/structure/sign/department/cargo, /turf/simulated/wall, /area/quartermaster/office) -"tB" = ( +"atB" = ( /obj/machinery/status_display/supply_display, /turf/simulated/wall, /area/quartermaster/office) -"tC" = ( +"atC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, @@ -12744,20 +12802,20 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"tD" = ( +"atD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"tE" = ( +"atE" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"tF" = ( +"atF" = ( /obj/structure/table/standard, /obj/item/weapon/material/ashtray/glass, /obj/machinery/newscaster{ @@ -12773,7 +12831,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"tG" = ( +"atG" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green, /obj/machinery/door/blast/regular{ @@ -12791,7 +12849,7 @@ }, /turf/simulated/floor, /area/security/forensics) -"tH" = ( +"atH" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 10 }, @@ -12808,13 +12866,13 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"tI" = ( +"atI" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/white/border, /obj/machinery/chem_master, /turf/simulated/floor/tiled/white, /area/security/forensics) -"tJ" = ( +"atJ" = ( /obj/structure/window/reinforced{ dir = 4 }, @@ -12839,7 +12897,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"tK" = ( +"atK" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 10 }, @@ -12867,7 +12925,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"tL" = ( +"atL" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/red/border, /obj/structure/cable/green{ @@ -12877,7 +12935,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"tM" = ( +"atM" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 6 }, @@ -12889,7 +12947,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/forensics) -"tN" = ( +"atN" = ( /obj/structure/closet/secure_closet/detective, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/gun/energy/taser, @@ -12902,7 +12960,7 @@ }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"tO" = ( +"atO" = ( /obj/machinery/computer/security/wooden_tv, /obj/machinery/firealarm{ dir = 1; @@ -12911,14 +12969,14 @@ }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"tP" = ( +"atP" = ( /obj/item/device/radio/intercom{ dir = 4; pixel_x = 24 }, /turf/simulated/floor/wood, /area/security/breakroom) -"tQ" = ( +"atQ" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 }, @@ -12930,7 +12988,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_equiptment_storage) -"tR" = ( +"atR" = ( /obj/machinery/power/apc{ dir = 2; name = "south bump"; @@ -12940,7 +12998,7 @@ /obj/machinery/computer/security/wooden_tv, /turf/simulated/floor/carpet, /area/security/detectives_office) -"tS" = ( +"atS" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 }, @@ -12949,7 +13007,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"tT" = ( +"atT" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/effect/floor_decal/borderfloor/corner2{ @@ -12960,12 +13018,12 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"tU" = ( +"atU" = ( /obj/structure/reagent_dispensers/watertank, /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, /area/maintenance/station/cargo) -"tV" = ( +"atV" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/effect/floor_decal/borderfloor/corner2, @@ -12975,7 +13033,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"tW" = ( +"atW" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -12983,7 +13041,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"tX" = ( +"atX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -12994,14 +13052,14 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallway) -"tY" = ( +"atY" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/effect/floor_decal/borderfloor/corner2, /obj/effect/floor_decal/corner/red/bordercorner2, /turf/simulated/floor/tiled, /area/security/hallway) -"tZ" = ( +"atZ" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -13036,7 +13094,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"ua" = ( +"aua" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -13049,14 +13107,14 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"ub" = ( +"aub" = ( /obj/structure/mopbucket, /obj/item/weapon/reagent_containers/glass/bucket, /obj/item/weapon/mop, /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, /area/maintenance/station/cargo) -"uc" = ( +"auc" = ( /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 8 }, @@ -13065,7 +13123,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"ud" = ( +"aud" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, @@ -13077,7 +13135,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"ue" = ( +"aue" = ( /obj/structure/table/rack{ dir = 8; layer = 2.9 @@ -13094,7 +13152,7 @@ }, /turf/simulated/floor, /area/maintenance/station/elevator) -"uf" = ( +"auf" = ( /obj/structure/cable{ d1 = 2; d2 = 4; @@ -13110,7 +13168,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor, /area/maintenance/station/elevator) -"ug" = ( +"aug" = ( /obj/machinery/door/airlock/maintenance/engi, /obj/structure/cable{ icon_state = "4-8" @@ -13124,7 +13182,7 @@ }, /turf/simulated/floor, /area/maintenance/station/elevator) -"uh" = ( +"auh" = ( /obj/structure/cable{ icon_state = "2-8" }, @@ -13138,21 +13196,21 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/station/elevator) -"ui" = ( +"aui" = ( /turf/simulated/floor/holofloor/tiled/dark, /area/tether/elevator) -"uj" = ( +"auj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 2 }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"uk" = ( +"auk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"ul" = ( +"aul" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -13167,10 +13225,10 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"um" = ( +"aum" = ( /turf/simulated/floor/wood, /area/hallway/station/upper) -"un" = ( +"aun" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -13183,7 +13241,7 @@ /obj/effect/floor_decal/corner/lightgrey/border, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"uo" = ( +"auo" = ( /obj/structure/disposalpipe/segment{ dir = 4; icon_state = "pipe-c" @@ -13196,7 +13254,7 @@ /obj/machinery/floodlight, /turf/simulated/floor, /area/storage/emergency_storage/emergency3) -"up" = ( +"aup" = ( /obj/structure/disposalpipe/segment{ dir = 8; icon_state = "pipe-c" @@ -13212,7 +13270,7 @@ }, /turf/simulated/floor, /area/storage/emergency_storage/emergency3) -"uq" = ( +"auq" = ( /obj/structure/table/rack{ dir = 1 }, @@ -13234,14 +13292,14 @@ }, /turf/simulated/floor/plating, /area/storage/emergency_storage/emergency3) -"ur" = ( +"aur" = ( /obj/machinery/conveyor{ dir = 1; id = "packageSort1" }, /turf/simulated/floor/plating, /area/quartermaster/delivery) -"us" = ( +"aus" = ( /obj/machinery/conveyor_switch/oneway{ id = "packageSort1" }, @@ -13250,14 +13308,14 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/delivery) -"ut" = ( +"aut" = ( /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"uu" = ( +"auu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"uv" = ( +"auv" = ( /obj/structure/table/steel, /obj/item/weapon/wrapping_paper, /obj/item/weapon/wrapping_paper, @@ -13278,13 +13336,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/universal, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"uw" = ( +"auw" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/quartermaster/delivery) -"ux" = ( +"aux" = ( /obj/machinery/computer/guestpass{ pixel_y = 32 }, @@ -13296,7 +13354,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"uy" = ( +"auy" = ( /obj/machinery/alarm{ pixel_y = 22 }, @@ -13318,7 +13376,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"uz" = ( +"auz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/floor_decal/steeldecal/steel_decals4{ @@ -13329,7 +13387,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"uA" = ( +"auA" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -13354,7 +13412,7 @@ /obj/item/weapon/pen, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"uB" = ( +"auB" = ( /obj/machinery/computer/supplycomp, /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -13370,7 +13428,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"uC" = ( +"auC" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -13379,12 +13437,12 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"uD" = ( +"auD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/quartermaster/office) -"uE" = ( +"auE" = ( /obj/structure/bed/chair/comfy/brown{ dir = 1 }, @@ -13400,11 +13458,11 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"uF" = ( +"auF" = ( /obj/structure/sign/warning/secure_area, /turf/simulated/wall/r_wall, /area/security/forensics) -"uG" = ( +"auG" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -13423,7 +13481,7 @@ /obj/structure/window/reinforced, /turf/simulated/floor, /area/security/forensics) -"uH" = ( +"auH" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -13442,7 +13500,7 @@ /obj/structure/cable/green, /turf/simulated/floor, /area/security/forensics) -"uI" = ( +"auI" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -13461,10 +13519,10 @@ /obj/structure/window/reinforced, /turf/simulated/floor, /area/security/forensics) -"uJ" = ( +"auJ" = ( /turf/simulated/wall/r_wall, /area/security/detectives_office) -"uK" = ( +"auK" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/paleblue/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -13480,14 +13538,14 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner2, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"uL" = ( +"auL" = ( /obj/machinery/washing_machine, /obj/machinery/light{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"uM" = ( +"auM" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 1; @@ -13520,7 +13578,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"uN" = ( +"auN" = ( /obj/machinery/alarm{ dir = 8; icon_state = "alarm0"; @@ -13542,13 +13600,13 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"uO" = ( +"auO" = ( /turf/simulated/wall/r_wall, /area/lawoffice) -"uP" = ( +"auP" = ( /turf/simulated/wall/r_wall, /area/security/lobby) -"uQ" = ( +"auQ" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ icon_state = "0-4" @@ -13557,7 +13615,7 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/lobby) -"uR" = ( +"auR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -13582,7 +13640,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/lobby) -"uS" = ( +"auS" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d2 = 8; @@ -13592,7 +13650,7 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/lobby) -"uT" = ( +"auT" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ icon_state = "0-4" @@ -13609,7 +13667,7 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/hallway) -"uU" = ( +"auU" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -13634,7 +13692,7 @@ }, /turf/simulated/floor, /area/security/hallway) -"uV" = ( +"auV" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d2 = 8; @@ -13652,7 +13710,7 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/hallway) -"uW" = ( +"auW" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -13662,7 +13720,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor, /area/maintenance/station/elevator) -"uX" = ( +"auX" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/zpipe/down{ dir = 1 @@ -13679,20 +13737,20 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/open, /area/maintenance/station/elevator) -"uY" = ( +"auY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor/glass/hidden/steel, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"uZ" = ( +"auZ" = ( /obj/structure/table/bench/wooden, /turf/simulated/floor/wood, /area/hallway/station/upper) -"va" = ( +"ava" = ( /obj/structure/bed/chair/comfy/brown, /turf/simulated/floor/wood, /area/hallway/station/upper) -"vb" = ( +"avb" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -13700,11 +13758,11 @@ /obj/machinery/space_heater, /turf/simulated/floor, /area/storage/emergency_storage/emergency3) -"vc" = ( +"avc" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/storage/emergency_storage/emergency3) -"vd" = ( +"avd" = ( /obj/structure/closet/crate, /obj/random/junk, /obj/random/maintenance/medical, @@ -13721,7 +13779,7 @@ /obj/item/device/t_scanner, /turf/simulated/floor, /area/storage/emergency_storage/emergency3) -"ve" = ( +"ave" = ( /obj/machinery/conveyor{ dir = 1; id = "packageSort1" @@ -13729,7 +13787,7 @@ /obj/structure/plasticflaps, /turf/simulated/floor/plating, /area/quartermaster/delivery) -"vf" = ( +"avf" = ( /obj/machinery/requests_console{ department = "Cargo Bay"; departmentType = 2; @@ -13751,13 +13809,13 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"vg" = ( +"avg" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"vh" = ( +"avh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -13766,7 +13824,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"vi" = ( +"avi" = ( /obj/structure/table/steel, /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -13782,7 +13840,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"vj" = ( +"avj" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -13800,19 +13858,19 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"vk" = ( +"avk" = ( /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"vl" = ( +"avl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"vm" = ( +"avm" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"vn" = ( +"avn" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor/border_only, /obj/machinery/door/window/northright{ @@ -13822,7 +13880,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"vo" = ( +"avo" = ( /obj/random/trash, /obj/structure/disposalpipe/segment{ dir = 8; @@ -13830,7 +13888,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"vp" = ( +"avp" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -13840,13 +13898,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor, /area/maintenance/station/cargo) -"vq" = ( +"avq" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"vr" = ( +"avr" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ dir = 8 @@ -13862,16 +13920,16 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"vs" = ( +"avs" = ( /turf/simulated/floor/airless, /area/mine/explored/upper_level) -"vt" = ( +"avt" = ( /turf/simulated/mineral/floor/vacuum, /area/mine/explored/upper_level) -"vu" = ( +"avu" = ( /turf/simulated/wall, /area/lawoffice) -"vv" = ( +"avv" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/brown/border, /obj/effect/floor_decal/borderfloor/corner2{ @@ -13885,7 +13943,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"vw" = ( +"avw" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; dir = 1 @@ -13919,7 +13977,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"vx" = ( +"avx" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; dir = 1 @@ -13933,7 +13991,7 @@ /obj/item/weapon/book/manual/command_guide, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"vy" = ( +"avy" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; dir = 1 @@ -13953,7 +14011,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"vz" = ( +"avz" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; dir = 1 @@ -13966,7 +14024,7 @@ /obj/machinery/photocopier, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"vA" = ( +"avA" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; dir = 1 @@ -13979,7 +14037,7 @@ /obj/machinery/papershredder, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"vB" = ( +"avB" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -13991,7 +14049,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"vC" = ( +"avC" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; dir = 1 @@ -14002,7 +14060,7 @@ /obj/structure/filingcabinet/chestdrawer, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"vD" = ( +"avD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 @@ -14014,7 +14072,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"vE" = ( +"avE" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 }, @@ -14035,7 +14093,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"vF" = ( +"avF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -14046,7 +14104,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/lobby) -"vG" = ( +"avG" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 }, @@ -14072,7 +14130,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"vH" = ( +"avH" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 }, @@ -14099,7 +14157,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"vI" = ( +"avI" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -14110,7 +14168,7 @@ /obj/structure/bed/chair, /turf/simulated/floor/tiled, /area/security/lobby) -"vJ" = ( +"avJ" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -14126,7 +14184,7 @@ /obj/structure/flora/pottedplant/stoutbush, /turf/simulated/floor/tiled, /area/security/lobby) -"vK" = ( +"avK" = ( /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 4 }, @@ -14135,7 +14193,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"vL" = ( +"avL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, @@ -14147,7 +14205,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"vM" = ( +"avM" = ( /obj/machinery/power/apc{ cell_type = /obj/item/weapon/cell/super; dir = 8; @@ -14166,7 +14224,7 @@ }, /turf/simulated/floor, /area/maintenance/station/elevator) -"vN" = ( +"avN" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -14182,15 +14240,15 @@ }, /turf/simulated/floor, /area/maintenance/station/elevator) -"vO" = ( +"avO" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/station/elevator) -"vP" = ( +"avP" = ( /obj/structure/table/woodentable, /turf/simulated/floor/wood, /area/hallway/station/upper) -"vQ" = ( +"avQ" = ( /obj/structure/table/woodentable, /obj/item/device/radio/intercom{ dir = 4; @@ -14198,25 +14256,25 @@ }, /turf/simulated/floor/wood, /area/hallway/station/upper) -"vR" = ( +"avR" = ( /obj/structure/cable{ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, /turf/simulated/floor, /area/storage/emergency_storage/emergency3) -"vS" = ( +"avS" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/rust, /obj/machinery/light/small, /turf/simulated/floor, /area/storage/emergency_storage/emergency3) -"vT" = ( +"avT" = ( /obj/effect/floor_decal/rust, /obj/machinery/portable_atmospherics/powered/pump/filled, /turf/simulated/floor, /area/storage/emergency_storage/emergency3) -"vU" = ( +"avU" = ( /obj/structure/disposalpipe/trunk, /obj/structure/disposaloutlet{ dir = 1 @@ -14228,7 +14286,7 @@ }, /turf/simulated/floor/plating, /area/quartermaster/delivery) -"vV" = ( +"avV" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 5 @@ -14238,7 +14296,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"vW" = ( +"avW" = ( /obj/structure/filingcabinet/filingcabinet, /obj/machinery/light, /obj/effect/floor_decal/borderfloor, @@ -14247,7 +14305,7 @@ /obj/effect/floor_decal/corner/brown/bordercorner2, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"vX" = ( +"avX" = ( /obj/structure/bed/chair, /obj/effect/landmark/start{ name = "Cargo Technician" @@ -14258,7 +14316,7 @@ /obj/effect/floor_decal/corner/brown/border, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"vY" = ( +"avY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, @@ -14290,25 +14348,25 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"vZ" = ( +"avZ" = ( /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"wa" = ( +"awa" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/quartermaster/office) -"wb" = ( +"awb" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor, /area/maintenance/station/ai) -"wc" = ( +"awc" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/quartermaster/office) -"wd" = ( +"awd" = ( /obj/machinery/autolathe, /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -14321,25 +14379,25 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"we" = ( +"awe" = ( /turf/space/cracked_asteroid, /area/mine/explored/upper_level) -"wf" = ( +"awf" = ( /obj/effect/floor_decal/rust, /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"wg" = ( +"awg" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; dir = 8 }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"wh" = ( +"awh" = ( /turf/simulated/floor/tiled/dark, /area/lawoffice) -"wi" = ( +"awi" = ( /obj/effect/floor_decal/spline/plain{ dir = 4 }, @@ -14350,7 +14408,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"wj" = ( +"awj" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -14368,7 +14426,7 @@ /obj/machinery/photocopier, /turf/simulated/floor/tiled, /area/security/lobby) -"wk" = ( +"awk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ d1 = 1; @@ -14386,7 +14444,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"wl" = ( +"awl" = ( /obj/structure/bed/chair/office/dark{ dir = 4 }, @@ -14398,7 +14456,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"wm" = ( +"awm" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -14417,22 +14475,22 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"wn" = ( +"awn" = ( /turf/simulated/floor/tiled, /area/security/lobby) -"wo" = ( +"awo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, /turf/simulated/floor/tiled, /area/security/lobby) -"wp" = ( +"awp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled, /area/security/lobby) -"wq" = ( +"awq" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -14444,7 +14502,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"wr" = ( +"awr" = ( /obj/structure/disposalpipe/segment, /obj/structure/closet/crate, /obj/random/maintenance/cargo, @@ -14458,7 +14516,7 @@ /obj/item/weapon/storage/box/lights/mixed, /turf/simulated/floor, /area/maintenance/station/elevator) -"ws" = ( +"aws" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -14471,7 +14529,7 @@ }, /turf/simulated/floor, /area/maintenance/station/elevator) -"wt" = ( +"awt" = ( /obj/machinery/door/airlock/maintenance/engi, /obj/machinery/door/firedoor/glass, /obj/structure/disposalpipe/segment{ @@ -14479,7 +14537,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/station/elevator) -"wu" = ( +"awu" = ( /obj/structure/disposalpipe/down{ dir = 8 }, @@ -14487,20 +14545,20 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/open, /area/maintenance/station/elevator) -"wv" = ( +"awv" = ( /obj/structure/sign/deck3, /turf/simulated/shuttle/wall/voidcraft/green{ hard_corner = 1 }, /area/tether/elevator) -"ww" = ( +"aww" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 1 }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"wx" = ( +"awx" = ( /obj/structure/sign/directions/cargo{ dir = 4 }, @@ -14513,13 +14571,13 @@ }, /turf/simulated/wall, /area/hallway/station/upper) -"wy" = ( +"awy" = ( /obj/structure/bed/chair/comfy/brown{ dir = 1 }, /turf/simulated/floor/wood, /area/hallway/station/upper) -"wz" = ( +"awz" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -14530,15 +14588,15 @@ }, /turf/simulated/floor, /area/storage/emergency_storage/emergency3) -"wA" = ( +"awA" = ( /obj/structure/disposalpipe/segment, /turf/simulated/wall, /area/quartermaster/delivery) -"wB" = ( +"awB" = ( /obj/structure/sign/department/mail, /turf/simulated/wall, /area/quartermaster/delivery) -"wC" = ( +"awC" = ( /obj/machinery/door/airlock/glass_mining{ name = "Delivery Office"; req_access = list(50); @@ -14548,13 +14606,13 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/delivery) -"wD" = ( +"awD" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/border_only, /turf/simulated/floor/plating, /area/quartermaster/delivery) -"wE" = ( +"awE" = ( /obj/structure/cable/green{ icon_state = "32-2" }, @@ -14564,7 +14622,7 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/open, /area/tether/exploration) -"wF" = ( +"awF" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 }, @@ -14577,13 +14635,13 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"wG" = ( +"awG" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"wH" = ( +"awH" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 @@ -14593,13 +14651,13 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"wI" = ( +"awI" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"wJ" = ( +"awJ" = ( /obj/machinery/door/airlock/maintenance/cargo{ req_access = list(50); req_one_access = list(48) @@ -14607,7 +14665,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor, /area/quartermaster/office) -"wK" = ( +"awK" = ( /obj/structure/table/standard, /obj/fiftyspawner/steel, /obj/item/device/multitool, @@ -14624,17 +14682,17 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"wL" = ( +"awL" = ( /obj/structure/flora/pottedplant/flower, /turf/simulated/floor/wood, /area/hallway/station/upper) -"wM" = ( +"awM" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/structure/table/reinforced, /obj/item/device/flashlight/lamp, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"wN" = ( +"awN" = ( /obj/effect/floor_decal/spline/plain{ dir = 4 }, @@ -14643,7 +14701,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"wO" = ( +"awO" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -14660,7 +14718,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"wP" = ( +"awP" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -14670,7 +14728,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/security/lobby) -"wQ" = ( +"awQ" = ( /obj/effect/floor_decal/borderfloor/corner2{ dir = 6 }, @@ -14701,7 +14759,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"wR" = ( +"awR" = ( /obj/effect/floor_decal/borderfloor/shifted, /obj/effect/floor_decal/corner/red/border/shifted, /obj/effect/floor_decal/corner/red{ @@ -14713,7 +14771,7 @@ }, /turf/simulated/floor/tiled, /area/security/observation) -"wS" = ( +"awS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -14740,7 +14798,7 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/white, /area/security/forensics) -"wT" = ( +"awT" = ( /obj/structure/table/reinforced, /obj/item/weapon/storage/box/cups, /obj/item/weapon/storage/box/cups{ @@ -14749,13 +14807,13 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"wU" = ( +"awU" = ( /obj/structure/table/reinforced, /obj/item/weapon/book/manual/security_space_law, /obj/item/weapon/book/manual/security_space_law, /turf/simulated/floor/tiled, /area/security/lobby) -"wV" = ( +"awV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, @@ -14769,24 +14827,24 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"wW" = ( +"awW" = ( /obj/structure/reagent_dispensers/watertank, /obj/structure/railing, /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/elevator) -"wX" = ( +"awX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, /area/maintenance/station/elevator) -"wY" = ( +"awY" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"wZ" = ( +"awZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment{ dir = 4; @@ -14794,7 +14852,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xa" = ( +"axa" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -14810,7 +14868,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xb" = ( +"axb" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -14826,7 +14884,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xc" = ( +"axc" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -14846,7 +14904,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/office) -"xd" = ( +"axd" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -14871,7 +14929,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xe" = ( +"axe" = ( /obj/machinery/status_display{ pixel_y = 30 }, @@ -14896,7 +14954,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xf" = ( +"axf" = ( /obj/machinery/atm{ pixel_y = 30 }, @@ -14922,14 +14980,14 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xg" = ( +"axg" = ( /obj/structure/table/bench/wooden, /obj/machinery/camera/network/tether{ dir = 1 }, /turf/simulated/floor/wood, /area/hallway/station/upper) -"xh" = ( +"axh" = ( /obj/structure/sign/directions/cargo{ dir = 4; pixel_y = -8 @@ -14946,7 +15004,7 @@ }, /turf/simulated/wall, /area/teleporter/departing) -"xi" = ( +"axi" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -14974,7 +15032,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xj" = ( +"axj" = ( /obj/structure/disposalpipe/segment{ dir = 8; icon_state = "pipe-c" @@ -14993,7 +15051,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xk" = ( +"axk" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -15018,7 +15076,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"xl" = ( +"axl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/floor_decal/borderfloor{ @@ -15033,7 +15091,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"xm" = ( +"axm" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -15046,7 +15104,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"xn" = ( +"axn" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 1 }, @@ -15061,14 +15119,14 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"xo" = ( +"axo" = ( /obj/effect/floor_decal/steeldecal/steel_decals4, /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 10 }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"xp" = ( +"axp" = ( /obj/machinery/door/airlock/glass_mining{ id_tag = "cargodoor"; name = "Cargo Office"; @@ -15078,7 +15136,7 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/office) -"xq" = ( +"axq" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -15096,7 +15154,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"xr" = ( +"axr" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -15104,13 +15162,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/quartermaster/office) -"xs" = ( +"axs" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"xt" = ( +"axt" = ( /obj/structure/table/standard, /obj/item/weapon/folder/yellow, /obj/machinery/light{ @@ -15130,7 +15188,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"xu" = ( +"axu" = ( /obj/structure/sign/directions/security{ dir = 1; icon_state = "direction_sec"; @@ -15147,14 +15205,14 @@ }, /turf/simulated/wall/r_wall, /area/tether/station/stairs_three) -"xv" = ( +"axv" = ( /obj/structure/sign/warning/secure_area, /turf/simulated/wall/r_wall, /area/security/nuke_storage) -"xw" = ( +"axw" = ( /turf/simulated/wall/r_wall, /area/security/nuke_storage) -"xx" = ( +"axx" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -15173,7 +15231,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xy" = ( +"axy" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; dir = 8 @@ -15191,7 +15249,7 @@ /obj/item/weapon/folder/yellow, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"xz" = ( +"axz" = ( /obj/structure/bed/chair/office/dark{ dir = 4 }, @@ -15200,7 +15258,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"xA" = ( +"axA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, @@ -15215,7 +15273,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"xB" = ( +"axB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -15227,7 +15285,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"xC" = ( +"axC" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, @@ -15236,7 +15294,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"xD" = ( +"axD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -15248,7 +15306,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"xE" = ( +"axE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -15263,7 +15321,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"xF" = ( +"axF" = ( /obj/structure/bed/chair/office/dark{ dir = 8 }, @@ -15272,7 +15330,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"xG" = ( +"axG" = ( /obj/effect/floor_decal/spline/plain{ dir = 4 }, @@ -15289,7 +15347,7 @@ /obj/item/weapon/folder/yellow, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"xH" = ( +"axH" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -15315,7 +15373,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"xI" = ( +"axI" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -15330,7 +15388,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"xJ" = ( +"axJ" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -15349,19 +15407,19 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"xK" = ( +"axK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, /turf/simulated/floor/tiled, /area/security/lobby) -"xL" = ( +"axL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /turf/simulated/floor/tiled, /area/security/lobby) -"xM" = ( +"axM" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -15387,7 +15445,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xN" = ( +"axN" = ( /obj/structure/lattice, /obj/machinery/door/firedoor/glass, /obj/machinery/light/small{ @@ -15398,7 +15456,7 @@ }, /turf/simulated/open, /area/maintenance/station/elevator) -"xO" = ( +"axO" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -15411,7 +15469,7 @@ }, /turf/simulated/floor, /area/maintenance/station/elevator) -"xP" = ( +"axP" = ( /obj/structure/table/standard, /obj/item/weapon/paper_bin{ pixel_x = -3; @@ -15420,7 +15478,7 @@ /obj/item/device/megaphone, /turf/simulated/floor/wood, /area/quartermaster/qm) -"xQ" = ( +"axQ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -15428,7 +15486,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xR" = ( +"axR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -15437,7 +15495,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xS" = ( +"axS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -15449,7 +15507,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xT" = ( +"axT" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -15462,13 +15520,13 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xU" = ( +"axU" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xV" = ( +"axV" = ( /obj/structure/table/steel, /obj/item/weapon/storage/box/lights/mixed, /obj/item/weapon/storage/box/lights/mixed, @@ -15481,20 +15539,20 @@ }, /turf/simulated/floor/tiled, /area/maintenance/station/cargo) -"xW" = ( +"axW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xX" = ( +"axX" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"xY" = ( +"axY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, @@ -15503,12 +15561,12 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"xZ" = ( +"axZ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"ya" = ( +"aya" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -15517,7 +15575,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"yb" = ( +"ayb" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, @@ -15526,7 +15584,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"yc" = ( +"ayc" = ( /obj/structure/cable/green{ d1 = 2; d2 = 4; @@ -15544,7 +15602,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"yd" = ( +"ayd" = ( /obj/machinery/door/airlock/glass_mining{ id_tag = "cargodoor"; name = "Cargo Office"; @@ -15568,7 +15626,7 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/office) -"ye" = ( +"aye" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -15590,7 +15648,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"yf" = ( +"ayf" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -15603,7 +15661,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"yg" = ( +"ayg" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -15611,7 +15669,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"yh" = ( +"ayh" = ( /obj/structure/table/standard, /obj/item/weapon/storage/belt/utility, /obj/item/weapon/storage/belt/utility, @@ -15632,7 +15690,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"yi" = ( +"ayi" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; dir = 10 @@ -15650,7 +15708,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"yj" = ( +"ayj" = ( /obj/structure/table/reinforced, /obj/machinery/computer/skills{ icon_state = "laptop"; @@ -15658,7 +15716,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"yk" = ( +"ayk" = ( /obj/effect/floor_decal/spline/plain, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -15678,21 +15736,21 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"yl" = ( +"ayl" = ( /obj/structure/sign/department/medbay, /turf/simulated/wall/r_wall, /area/medical/chemistry) -"ym" = ( +"aym" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"yn" = ( +"ayn" = ( /obj/effect/floor_decal/spline/plain, /obj/structure/flora/pottedplant/stoutbush, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"yo" = ( +"ayo" = ( /obj/effect/floor_decal/spline/plain, /obj/structure/table/reinforced, /obj/machinery/computer/skills{ @@ -15701,7 +15759,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"yp" = ( +"ayp" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; dir = 6 @@ -15719,7 +15777,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"yq" = ( +"ayq" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 }, @@ -15737,7 +15795,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"yr" = ( +"ayr" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/structure/cable/green{ @@ -15750,7 +15808,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"ys" = ( +"ays" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 }, @@ -15773,7 +15831,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"yt" = ( +"ayt" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 }, @@ -15795,7 +15853,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"yu" = ( +"ayu" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -15806,7 +15864,7 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"yv" = ( +"ayv" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/effect/floor_decal/borderfloor/corner2{ @@ -15820,30 +15878,30 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"yw" = ( +"ayw" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 8 }, /turf/simulated/floor/tiled, /area/security/lobby) -"yx" = ( +"ayx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/steeldecal/steel_decals6, /turf/simulated/floor/tiled, /area/security/lobby) -"yy" = ( +"ayy" = ( /obj/structure/reagent_dispensers/fueltank, /obj/structure/railing{ dir = 1 }, /turf/simulated/floor, /area/maintenance/station/elevator) -"yz" = ( +"ayz" = ( /turf/simulated/wall, /area/maintenance/station/elevator) -"yA" = ( +"ayA" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -15865,14 +15923,14 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"yB" = ( +"ayB" = ( /obj/machinery/camera/network/security{ icon_state = "camera"; dir = 8 }, /turf/space, /area/security/nuke_storage) -"yC" = ( +"ayC" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 6 }, @@ -15888,7 +15946,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"yD" = ( +"ayD" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 }, @@ -15904,7 +15962,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"yE" = ( +"ayE" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 6 }, @@ -15926,7 +15984,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"yF" = ( +"ayF" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 }, @@ -15940,7 +15998,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"yG" = ( +"ayG" = ( /obj/machinery/light{ icon_state = "tube1"; dir = 8 @@ -15966,7 +16024,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"yH" = ( +"ayH" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -15975,7 +16033,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"yI" = ( +"ayI" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -15995,10 +16053,10 @@ }, /turf/simulated/floor/plating, /area/medical/chemistry) -"yJ" = ( +"ayJ" = ( /turf/simulated/wall/r_wall, /area/medical/chemistry) -"yK" = ( +"ayK" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/blast/shutters{ @@ -16017,7 +16075,7 @@ }, /turf/simulated/floor, /area/medical/reception) -"yL" = ( +"ayL" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -16029,7 +16087,7 @@ dir = 4 }, /area/security/lobby) -"yM" = ( +"ayM" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/multi_tile/glass{ name = "Medbay Lobby" @@ -16049,11 +16107,11 @@ dir = 8 }, /area/medical/reception) -"yN" = ( +"ayN" = ( /obj/structure/sign/department/medbay, /turf/simulated/wall, /area/medical/medbay_emt_bay) -"yO" = ( +"ayO" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -16069,7 +16127,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"yP" = ( +"ayP" = ( /obj/machinery/alarm{ dir = 1; icon_state = "alarm0"; @@ -16080,7 +16138,7 @@ }, /turf/simulated/floor/tiled, /area/maintenance/station/cargo) -"yQ" = ( +"ayQ" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -16091,7 +16149,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"yR" = ( +"ayR" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -16101,7 +16159,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"yS" = ( +"ayS" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/brown/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -16112,10 +16170,10 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"yT" = ( +"ayT" = ( /turf/simulated/wall, /area/medical/medbay_emt_bay) -"yU" = ( +"ayU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/floor_decal/steeldecal/steel_decals4{ @@ -16126,7 +16184,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"yV" = ( +"ayV" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/brown/border, /obj/effect/floor_decal/borderfloor/corner2, @@ -16139,14 +16197,14 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"yW" = ( +"ayW" = ( /obj/effect/floor_decal/techfloor{ dir = 5 }, /obj/machinery/porta_turret, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"yX" = ( +"ayX" = ( /obj/structure/cable/green{ d2 = 4; icon_state = "0-4" @@ -16167,7 +16225,7 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"yY" = ( +"ayY" = ( /obj/structure/disposalpipe/segment{ dir = 4; icon_state = "pipe-c" @@ -16181,7 +16239,7 @@ /obj/machinery/camera/network/cargo, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"yZ" = ( +"ayZ" = ( /obj/machinery/door/airlock/glass_mining{ id_tag = "cargodoor"; name = "Cargo Office"; @@ -16199,7 +16257,7 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/office) -"za" = ( +"aza" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 5 @@ -16209,7 +16267,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"zb" = ( +"azb" = ( /obj/machinery/conveyor{ dir = 1; id = "packageSort1" @@ -16219,7 +16277,7 @@ }, /turf/simulated/floor, /area/quartermaster/delivery) -"zc" = ( +"azc" = ( /obj/structure/table/standard, /obj/item/weapon/hand_labeler, /obj/machinery/recharger, @@ -16227,7 +16285,7 @@ /obj/effect/floor_decal/corner/brown/border, /turf/simulated/floor/tiled, /area/quartermaster/office) -"zd" = ( +"azd" = ( /obj/structure/table/standard, /obj/item/weapon/tape_roll, /obj/item/weapon/storage/firstaid/regular{ @@ -16242,7 +16300,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"ze" = ( +"aze" = ( /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, @@ -16256,7 +16314,7 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"zf" = ( +"azf" = ( /obj/item/stack/material/gold, /obj/item/weapon/storage/belt/champion, /obj/effect/floor_decal/industrial/outline/yellow, @@ -16272,7 +16330,7 @@ /obj/item/weapon/coin/gold, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"zg" = ( +"azg" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/item/clothing/suit/space/void/wizard, /obj/item/clothing/head/helmet/space/void/wizard, @@ -16282,14 +16340,14 @@ }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"zh" = ( +"azh" = ( /obj/structure/filingcabinet/security{ name = "Security Records" }, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"zi" = ( +"azi" = ( /obj/structure/filingcabinet/medical{ desc = "A large cabinet with hard copy medical records."; name = "Medical Records" @@ -16300,13 +16358,13 @@ }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"zj" = ( +"azj" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/simulated/wall/r_wall, /area/security/nuke_storage) -"zk" = ( +"azk" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -16325,7 +16383,7 @@ }, /turf/simulated/floor/plating, /area/hallway/station/upper) -"zl" = ( +"azl" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -16339,7 +16397,7 @@ /obj/structure/sign/warning/high_voltage, /turf/simulated/floor/plating, /area/hallway/station/upper) -"zm" = ( +"azm" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -16349,7 +16407,7 @@ }, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"zn" = ( +"azn" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -16366,7 +16424,7 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/lobby) -"zo" = ( +"azo" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -16391,7 +16449,7 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/lobby) -"zp" = ( +"azp" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -16409,13 +16467,13 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/lobby) -"zq" = ( +"azq" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/lobby) -"zr" = ( +"azr" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/shutters{ density = 0; @@ -16435,7 +16493,7 @@ dir = 4 }, /area/medical/reception) -"zs" = ( +"azs" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/medical{ name = "EMT Bay" @@ -16450,10 +16508,10 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"zt" = ( +"azt" = ( /turf/simulated/wall, /area/security/lobby) -"zu" = ( +"azu" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -16464,7 +16522,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor, /area/maintenance/station/elevator) -"zv" = ( +"azv" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 }, @@ -16479,7 +16537,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zw" = ( +"azw" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 }, @@ -16490,7 +16548,7 @@ /obj/structure/table/reinforced, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zx" = ( +"azx" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 6 }, @@ -16501,7 +16559,7 @@ /obj/structure/table/reinforced, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zy" = ( +"azy" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 6 }, @@ -16516,7 +16574,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zz" = ( +"azz" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 }, @@ -16531,7 +16589,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zA" = ( +"azA" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -16546,14 +16604,14 @@ /obj/machinery/door/firedoor/glass/hidden/steel, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zB" = ( +"azB" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 1 }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zC" = ( +"azC" = ( /obj/machinery/alarm{ dir = 4; icon_state = "alarm0"; @@ -16564,13 +16622,13 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"zD" = ( +"azD" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/rust, /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"zE" = ( +"azE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -16580,7 +16638,7 @@ }, /turf/simulated/floor/tiled, /area/maintenance/station/cargo) -"zF" = ( +"azF" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ dir = 8 @@ -16594,7 +16652,7 @@ /obj/machinery/light, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zG" = ( +"azG" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 }, @@ -16616,7 +16674,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zH" = ( +"azH" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 }, @@ -16638,7 +16696,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zI" = ( +"azI" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 }, @@ -16660,14 +16718,14 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zJ" = ( +"azJ" = ( /obj/structure/sign/poster{ pixel_x = 0; pixel_y = 0 }, /turf/simulated/wall, /area/quartermaster/qm) -"zK" = ( +"azK" = ( /obj/structure/grille, /obj/machinery/door/firedoor/glass, /obj/structure/window/reinforced/polarized/full{ @@ -16675,10 +16733,10 @@ }, /turf/simulated/floor/plating, /area/quartermaster/qm) -"zL" = ( +"azL" = ( /turf/simulated/wall, /area/quartermaster/qm) -"zM" = ( +"azM" = ( /obj/machinery/door/airlock/mining{ name = "Quartermaster"; req_access = list(41); @@ -16689,14 +16747,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/qm) -"zN" = ( +"azN" = ( /obj/structure/symbol/pr, /turf/simulated/wall, /area/quartermaster/qm) -"zO" = ( +"azO" = ( /turf/simulated/wall, /area/quartermaster/storage) -"zP" = ( +"azP" = ( /obj/structure/cable/green{ d1 = 2; d2 = 8; @@ -16720,7 +16778,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"zQ" = ( +"azQ" = ( /obj/machinery/door/airlock/glass_mining{ name = "Cargo Bay"; req_access = list(31); @@ -16732,13 +16790,13 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/office) -"zR" = ( +"azR" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/border_only, /turf/simulated/floor/plating, /area/quartermaster/office) -"zS" = ( +"azS" = ( /obj/machinery/alarm{ dir = 4; icon_state = "alarm0"; @@ -16747,10 +16805,10 @@ }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"zT" = ( +"azT" = ( /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"zU" = ( +"azU" = ( /obj/structure/cable{ d1 = 1; d2 = 2; @@ -16758,7 +16816,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"zV" = ( +"azV" = ( /obj/structure/closet/emcloset, /obj/effect/floor_decal/borderfloor{ dir = 9 @@ -16782,7 +16840,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zW" = ( +"azW" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -16795,7 +16853,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zX" = ( +"azX" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -16816,7 +16874,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zY" = ( +"azY" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -16829,7 +16887,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"zZ" = ( +"azZ" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -16847,7 +16905,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Aa" = ( +"aAa" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -16866,7 +16924,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ab" = ( +"aAb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -16887,12 +16945,12 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ac" = ( +"aAc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ad" = ( +"aAd" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -16914,7 +16972,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ae" = ( +"aAe" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -16927,7 +16985,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Af" = ( +"aAf" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -16946,7 +17004,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ag" = ( +"aAg" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -16968,7 +17026,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ah" = ( +"aAh" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -16983,26 +17041,26 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ai" = ( +"aAi" = ( /obj/effect/decal/cleanable/dirt, /obj/random/junk, /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Aj" = ( +"aAj" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Ak" = ( +"aAk" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Al" = ( +"aAl" = ( /obj/structure/table/reinforced, /obj/machinery/chemical_dispenser/full, /obj/effect/floor_decal/borderfloorwhite{ @@ -17013,7 +17071,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Am" = ( +"aAm" = ( /obj/machinery/chem_master, /obj/effect/floor_decal/borderfloorwhite{ dir = 1 @@ -17023,13 +17081,13 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"An" = ( +"aAn" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"Ao" = ( +"aAo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/floor_decal/borderfloor{ @@ -17051,7 +17109,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ap" = ( +"aAp" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -17073,7 +17131,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Aq" = ( +"aAq" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -17092,7 +17150,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ar" = ( +"aAr" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -17109,7 +17167,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"As" = ( +"aAs" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -17125,7 +17183,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"At" = ( +"aAt" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -17144,7 +17202,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Au" = ( +"aAu" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -17159,7 +17217,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Av" = ( +"aAv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -17182,7 +17240,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Aw" = ( +"aAw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -17197,7 +17255,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ax" = ( +"aAx" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -17209,14 +17267,14 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ay" = ( +"aAy" = ( /obj/structure/disposalpipe/segment{ dir = 8; icon_state = "pipe-c" }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Az" = ( +"aAz" = ( /obj/structure/table/reinforced, /obj/machinery/chemical_dispenser/full, /obj/machinery/requests_console{ @@ -17239,7 +17297,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"AA" = ( +"aAA" = ( /obj/machinery/disposal, /obj/machinery/alarm{ dir = 4; @@ -17261,7 +17319,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"AB" = ( +"aAB" = ( /obj/structure/flora/pottedplant/stoutbush, /obj/structure/disposalpipe/segment{ dir = 4 @@ -17280,7 +17338,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"AC" = ( +"aAC" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -17289,7 +17347,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"AD" = ( +"aAD" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, @@ -17300,7 +17358,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"AE" = ( +"aAE" = ( /obj/machinery/computer/transhuman/designer, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -17319,7 +17377,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"AF" = ( +"aAF" = ( /obj/structure/window/reinforced{ dir = 8 }, @@ -17338,7 +17396,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"AG" = ( +"aAG" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock{ name = "Secondary Janitorial Closet"; @@ -17353,14 +17411,14 @@ }, /turf/simulated/floor/tiled, /area/maintenance/station/cargo) -"AH" = ( +"aAH" = ( /turf/simulated/wall, /area/maintenance/station/cargo) -"AI" = ( +"aAI" = ( /obj/structure/filingcabinet, /turf/simulated/floor/wood, /area/quartermaster/qm) -"AJ" = ( +"aAJ" = ( /obj/machinery/requests_console{ department = "Cargo Bay"; departmentType = 2; @@ -17370,7 +17428,7 @@ /obj/machinery/computer/security/mining, /turf/simulated/floor/wood, /area/quartermaster/qm) -"AK" = ( +"aAK" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -17381,21 +17439,21 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"AL" = ( +"aAL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/wood, /area/quartermaster/qm) -"AM" = ( +"aAM" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk, /turf/simulated/floor/wood, /area/quartermaster/qm) -"AN" = ( +"aAN" = ( /obj/machinery/status_display/supply_display, /turf/simulated/wall, /area/quartermaster/qm) -"AO" = ( +"aAO" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/brown/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -17408,7 +17466,7 @@ /obj/machinery/light, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"AP" = ( +"aAP" = ( /obj/machinery/light{ dir = 1 }, @@ -17417,7 +17475,7 @@ /obj/item/weapon/storage/backpack/dufflebag, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"AQ" = ( +"aAQ" = ( /obj/machinery/light_switch{ dir = 2; name = "light switch "; @@ -17428,7 +17486,7 @@ /obj/item/weapon/stamp/cargo, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"AR" = ( +"aAR" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -17452,7 +17510,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/office) -"AS" = ( +"aAS" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 4 @@ -17462,7 +17520,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"AT" = ( +"aAT" = ( /obj/structure/cable/green{ icon_state = "0-4" }, @@ -17476,7 +17534,7 @@ /obj/item/weapon/stamp/cargo, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"AU" = ( +"aAU" = ( /obj/structure/table/standard, /obj/item/weapon/hand_labeler, /obj/item/weapon/folder/yellow, @@ -17486,18 +17544,18 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"AV" = ( +"aAV" = ( /obj/structure/closet/emcloset, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"AW" = ( +"aAW" = ( /obj/structure/closet/emcloset, /obj/machinery/status_display/supply_display{ pixel_y = 32 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"AX" = ( +"aAX" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -17506,7 +17564,7 @@ }, /turf/simulated/floor/plating, /area/quartermaster/storage) -"AY" = ( +"aAY" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -17517,7 +17575,7 @@ }, /turf/simulated/floor/tiled, /area/teleporter/departing) -"AZ" = ( +"aAZ" = ( /obj/structure/table/glass, /obj/item/weapon/storage/firstaid/regular, /obj/effect/floor_decal/borderfloorwhite{ @@ -17528,26 +17586,27 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Ba" = ( +"aBa" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled, /area/tether/station/stairs_three) -"Bb" = ( +"aBb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, +/obj/structure/barricade/cutout/ntsec, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"Bc" = ( +"aBc" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"Bd" = ( +"aBd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -17561,7 +17620,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"Be" = ( +"aBe" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -17583,7 +17642,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"Bf" = ( +"aBf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, @@ -17595,7 +17654,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Bg" = ( +"aBg" = ( /obj/structure/disposalpipe/segment{ dir = 4; icon_state = "pipe-c" @@ -17623,7 +17682,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bh" = ( +"aBh" = ( /obj/structure/filingcabinet/medical{ desc = "A large cabinet with hard copy medical records."; name = "Medical Records" @@ -17643,7 +17702,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Bi" = ( +"aBi" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, @@ -17658,7 +17717,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bj" = ( +"aBj" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -17675,7 +17734,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bk" = ( +"aBk" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -17693,7 +17752,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bl" = ( +"aBl" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -17707,7 +17766,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bm" = ( +"aBm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, @@ -17722,7 +17781,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bn" = ( +"aBn" = ( /obj/structure/cable{ icon_state = "2-4" }, @@ -17738,7 +17797,7 @@ /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bo" = ( +"aBo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -17755,7 +17814,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bp" = ( +"aBp" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -17772,7 +17831,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bq" = ( +"aBq" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -17786,7 +17845,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Br" = ( +"aBr" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -17806,7 +17865,7 @@ /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bs" = ( +"aBs" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -17823,7 +17882,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bt" = ( +"aBt" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -17841,7 +17900,7 @@ /obj/machinery/door/firedoor/glass/hidden/steel, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bu" = ( +"aBu" = ( /obj/structure/table/rack, /obj/item/device/gps/medical{ pixel_y = 3 @@ -17874,7 +17933,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals9, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Bv" = ( +"aBv" = ( /obj/machinery/light{ dir = 1 }, @@ -17892,10 +17951,10 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Bw" = ( +"aBw" = ( /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Bx" = ( +"aBx" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 5 }, @@ -17910,7 +17969,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"By" = ( +"aBy" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/structure/cable{ @@ -17923,7 +17982,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Bz" = ( +"aBz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -17937,7 +17996,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"BA" = ( +"aBA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -17952,7 +18011,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"BB" = ( +"aBB" = ( /obj/machinery/suit_cycler/medical, /obj/effect/floor_decal/corner/paleblue{ dir = 6 @@ -17976,7 +18035,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"BC" = ( +"aBC" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/machinery/door/firedoor/glass/hidden/steel{ @@ -17984,10 +18043,10 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"BD" = ( +"aBD" = ( /turf/simulated/wall, /area/maintenance/substation/medical) -"BE" = ( +"aBE" = ( /obj/structure/table/reinforced, /obj/item/weapon/reagent_containers/glass/beaker/large, /obj/item/weapon/reagent_containers/dropper, @@ -18004,7 +18063,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"BF" = ( +"aBF" = ( /obj/structure/table/reinforced, /obj/machinery/light{ dir = 1 @@ -18018,7 +18077,7 @@ /obj/machinery/chemical_dispenser/biochemistry/full, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"BG" = ( +"aBG" = ( /obj/structure/table/reinforced, /obj/item/weapon/reagent_containers/glass/beaker/large, /obj/item/weapon/reagent_containers/dropper, @@ -18030,7 +18089,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"BH" = ( +"aBH" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -18039,7 +18098,7 @@ }, /turf/simulated/floor, /area/maintenance/station/cargo) -"BI" = ( +"aBI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -18054,7 +18113,7 @@ }, /turf/simulated/floor, /area/maintenance/station/cargo) -"BJ" = ( +"aBJ" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -18066,12 +18125,12 @@ }, /turf/simulated/floor/plating, /area/medical/chemistry) -"BK" = ( +"aBK" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/hidden, /turf/simulated/floor/tiled, /area/security/eva) -"BL" = ( +"aBL" = ( /obj/machinery/camera/network/cargo{ icon_state = "camera"; dir = 8 @@ -18079,7 +18138,7 @@ /obj/effect/floor_decal/industrial/warning/corner, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"BM" = ( +"aBM" = ( /obj/machinery/button/windowtint{ id = "qm_office"; pixel_x = 26; @@ -18093,7 +18152,7 @@ }, /turf/simulated/floor/wood, /area/quartermaster/qm) -"BN" = ( +"aBN" = ( /obj/structure/table/standard, /obj/item/weapon/folder/yellow, /obj/item/weapon/pen{ @@ -18106,7 +18165,7 @@ }, /turf/simulated/floor/wood, /area/quartermaster/qm) -"BO" = ( +"aBO" = ( /obj/structure/bed/chair{ dir = 8 }, @@ -18114,7 +18173,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/wood, /area/quartermaster/qm) -"BP" = ( +"aBP" = ( /obj/structure/cable/green{ d2 = 2; icon_state = "0-2" @@ -18127,7 +18186,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/wood, /area/quartermaster/qm) -"BQ" = ( +"aBQ" = ( /obj/structure/table/reinforced, /obj/machinery/reagentgrinder, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -18146,7 +18205,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"BR" = ( +"aBR" = ( /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -18158,7 +18217,7 @@ }, /turf/simulated/floor/wood, /area/quartermaster/qm) -"BS" = ( +"aBS" = ( /obj/structure/table/standard, /obj/structure/cable/green{ d1 = 1; @@ -18180,33 +18239,33 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/office) -"BT" = ( +"aBT" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"BU" = ( +"aBU" = ( /turf/simulated/floor/tiled, /area/quartermaster/storage) -"BV" = ( +"aBV" = ( /obj/machinery/firealarm{ dir = 8; pixel_x = -26 }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"BW" = ( +"aBW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"BX" = ( +"aBX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"BY" = ( +"aBY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, @@ -18215,7 +18274,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"BZ" = ( +"aBZ" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 }, @@ -18234,7 +18293,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ca" = ( +"aCa" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -18245,7 +18304,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Cb" = ( +"aCb" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/machinery/firealarm{ @@ -18264,7 +18323,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Cc" = ( +"aCc" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/paleblue/border, /obj/machinery/door/firedoor/glass/hidden/steel{ @@ -18272,7 +18331,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Cd" = ( +"aCd" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/effect/floor_decal/borderfloor/corner2{ @@ -18289,7 +18348,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ce" = ( +"aCe" = ( /obj/structure/cable{ d1 = 1; d2 = 2; @@ -18306,7 +18365,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Cf" = ( +"aCf" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/effect/floor_decal/borderfloor/corner2, @@ -18319,7 +18378,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Cg" = ( +"aCg" = ( /obj/structure/table/rack{ dir = 8; layer = 2.9 @@ -18329,13 +18388,13 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"Ch" = ( +"aCh" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 8 }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ci" = ( +"aCi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ d1 = 1; @@ -18347,7 +18406,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals6, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Cj" = ( +"aCj" = ( /obj/machinery/light, /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 8 @@ -18361,7 +18420,7 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner2, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ck" = ( +"aCk" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/paleblue/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -18372,16 +18431,16 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Cl" = ( +"aCl" = ( /turf/simulated/floor/tiled/white, /area/medical/reception) -"Cm" = ( +"aCm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Cn" = ( +"aCn" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 4 }, @@ -18396,7 +18455,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Co" = ( +"aCo" = ( /obj/structure/window/reinforced{ dir = 8 }, @@ -18417,7 +18476,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Cp" = ( +"aCp" = ( /obj/structure/bed/chair/office/light{ dir = 8 }, @@ -18426,14 +18485,14 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Cq" = ( +"aCq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Cr" = ( +"aCr" = ( /obj/structure/filingcabinet/chestdrawer{ name = "Medical Forms" }, @@ -18452,7 +18511,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Cs" = ( +"aCs" = ( /obj/structure/table/rack, /obj/item/weapon/storage/toolbox/mechanical, /obj/item/device/multitool, @@ -18474,7 +18533,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals9, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Ct" = ( +"aCt" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -18483,11 +18542,11 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Cu" = ( +"aCu" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/dark, /area/lawoffice) -"Cv" = ( +"aCv" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -18496,7 +18555,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Cw" = ( +"aCw" = ( /obj/structure/table/rack, /obj/item/clothing/shoes/magboots, /obj/item/clothing/suit/space/void/medical/emt, @@ -18525,7 +18584,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Cx" = ( +"aCx" = ( /obj/effect/floor_decal/rust, /obj/structure/railing{ icon_state = "railing0"; @@ -18535,13 +18594,13 @@ /obj/random/maintenance/clean, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Cy" = ( +"aCy" = ( /obj/machinery/power/breakerbox/activated{ RCon_tag = "Medical Substation Bypass" }, /turf/simulated/floor/plating, /area/maintenance/substation/medical) -"Cz" = ( +"aCz" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -18557,10 +18616,10 @@ }, /turf/simulated/floor/plating, /area/maintenance/substation/medical) -"CA" = ( +"aCA" = ( /turf/simulated/floor/outdoors/grass/forest, /area/quartermaster/qm) -"CB" = ( +"aCB" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -18573,7 +18632,7 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/maintenance/substation/medical) -"CC" = ( +"aCC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ icon_state = "1-8" @@ -18585,10 +18644,10 @@ }, /turf/simulated/floor, /area/maintenance/station/cargo) -"CD" = ( +"aCD" = ( /turf/simulated/floor/wood, /area/quartermaster/qm) -"CE" = ( +"aCE" = ( /obj/structure/table/standard, /obj/item/weapon/clipboard, /obj/item/weapon/stamp/qm, @@ -18597,14 +18656,14 @@ }, /turf/simulated/floor/wood, /area/quartermaster/qm) -"CF" = ( +"aCF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, /turf/simulated/floor/wood, /area/quartermaster/qm) -"CG" = ( +"aCG" = ( /obj/machinery/embedded_controller/radio/simple_docking_controller{ frequency = 1380; id_tag = "cargo_bay"; @@ -18617,7 +18676,7 @@ /obj/effect/floor_decal/industrial/warning/corner, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"CH" = ( +"aCH" = ( /obj/machinery/door/airlock/mining{ name = "Quartermaster"; req_access = list(41); @@ -18637,7 +18696,7 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/qm) -"CI" = ( +"aCI" = ( /obj/structure/cable/green{ d1 = 2; d2 = 8; @@ -18659,7 +18718,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"CJ" = ( +"aCJ" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -18670,7 +18729,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"CK" = ( +"aCK" = ( /obj/item/weapon/paper_bin{ pixel_x = -3; pixel_y = 7 @@ -18699,7 +18758,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/office) -"CL" = ( +"aCL" = ( /obj/structure/disposalpipe/sortjunction{ dir = 1; icon_state = "pipe-j1s"; @@ -18709,17 +18768,17 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/quartermaster/office) -"CM" = ( +"aCM" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"CN" = ( +"aCN" = ( /obj/effect/floor_decal/industrial/warning/corner, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"CO" = ( +"aCO" = ( /obj/machinery/conveyor_switch/oneway{ convdir = -1; id = "QMLoad2" @@ -18733,13 +18792,13 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"CP" = ( +"aCP" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/quartermaster/storage) -"CQ" = ( +"aCQ" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -18748,7 +18807,7 @@ }, /turf/simulated/floor/plating, /area/quartermaster/storage) -"CR" = ( +"aCR" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -18767,7 +18826,7 @@ }, /turf/simulated/floor/plating, /area/quartermaster/storage) -"CS" = ( +"aCS" = ( /obj/effect/shuttle_landmark{ base_area = /area/space; base_turf = /turf/simulated/floor/airless; @@ -18777,7 +18836,7 @@ }, /turf/simulated/floor/airless, /area/space) -"CT" = ( +"aCT" = ( /obj/structure/safe, /obj/item/clothing/under/color/yellow, /obj/item/toy/katana, @@ -18788,7 +18847,7 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"CU" = ( +"aCU" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/structure/closet/crate/secure/large/reinforced{ anchored = 1; @@ -18801,7 +18860,7 @@ /obj/item/ammo_magazine/s44, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"CV" = ( +"aCV" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -18819,7 +18878,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"CW" = ( +"aCW" = ( /obj/machinery/power/apc{ dir = 2; name = "south bump"; @@ -18829,14 +18888,14 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"CX" = ( +"aCX" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/structure/cable{ icon_state = "1-4" }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"CY" = ( +"aCY" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -18853,7 +18912,7 @@ /obj/structure/window/reinforced, /turf/simulated/floor/plating, /area/hallway/station/upper) -"CZ" = ( +"aCZ" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -18865,16 +18924,16 @@ /obj/structure/window/reinforced, /turf/simulated/floor/plating, /area/hallway/station/upper) -"Da" = ( +"aDa" = ( /turf/simulated/wall, /area/teleporter/departing) -"Db" = ( +"aDb" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/teleporter/departing) -"Dc" = ( +"aDc" = ( /obj/structure/cable{ d1 = 1; d2 = 2; @@ -18889,7 +18948,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/steel_grid, /area/teleporter/departing) -"Dd" = ( +"aDd" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/apc{ dir = 1; @@ -18903,7 +18962,7 @@ }, /turf/simulated/floor, /area/maintenance/station/cargo) -"De" = ( +"aDe" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/rack{ dir = 1 @@ -18912,10 +18971,10 @@ /obj/random/maintenance/clean, /turf/simulated/floor, /area/maintenance/station/cargo) -"Df" = ( +"aDf" = ( /turf/simulated/wall, /area/tether/station/stairs_three) -"Dg" = ( +"aDg" = ( /obj/machinery/door/airlock/multi_tile/glass{ name = "Stairwell" }, @@ -18927,7 +18986,7 @@ dir = 8 }, /area/tether/station/stairs_three) -"Dh" = ( +"aDh" = ( /obj/structure/cable{ d1 = 1; d2 = 2; @@ -18944,7 +19003,7 @@ dir = 4 }, /area/tether/station/stairs_three) -"Di" = ( +"aDi" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet, /obj/random/junk, @@ -18953,11 +19012,11 @@ /obj/random/tech_supply, /turf/simulated/floor, /area/maintenance/station/cargo) -"Dj" = ( +"aDj" = ( /obj/structure/sign/department/medbay, /turf/simulated/wall, /area/medical/reception) -"Dk" = ( +"aDk" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -18977,10 +19036,10 @@ }, /turf/simulated/floor/plating, /area/medical/reception) -"Dl" = ( +"aDl" = ( /turf/simulated/wall, /area/medical/reception) -"Dm" = ( +"aDm" = ( /obj/structure/table/rack, /obj/item/device/defib_kit/compact/loaded, /obj/effect/floor_decal/corner/paleblue{ @@ -19001,14 +19060,14 @@ /obj/effect/floor_decal/steeldecal/steel_decals9, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Dn" = ( +"aDn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 4 }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Do" = ( +"aDo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, @@ -19016,7 +19075,7 @@ /obj/structure/disposalpipe/trunk, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Dp" = ( +"aDp" = ( /obj/structure/table/reinforced, /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!'"; @@ -19036,7 +19095,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Dq" = ( +"aDq" = ( /obj/structure/bed/chair{ dir = 4 }, @@ -19054,14 +19113,14 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Dr" = ( +"aDr" = ( /obj/effect/floor_decal/steeldecal/steel_decals10, /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Ds" = ( +"aDs" = ( /obj/structure/table/glass, /obj/item/weapon/paper_bin, /obj/item/weapon/pen, @@ -19071,7 +19130,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Dt" = ( +"aDt" = ( /obj/structure/table/glass, /obj/item/weapon/folder/white{ pixel_y = 4 @@ -19084,7 +19143,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Du" = ( +"aDu" = ( /obj/machinery/photocopier, /obj/machinery/light{ dir = 4 @@ -19097,7 +19156,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Dv" = ( +"aDv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -19106,7 +19165,7 @@ }, /turf/simulated/floor/wood, /area/quartermaster/qm) -"Dw" = ( +"aDw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, @@ -19116,7 +19175,7 @@ }, /turf/simulated/floor/wood, /area/quartermaster/qm) -"Dx" = ( +"aDx" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -19124,19 +19183,19 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Dy" = ( +"aDy" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Dz" = ( +"aDz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"DA" = ( +"aDA" = ( /obj/structure/bed/chair/office/dark{ dir = 4 }, @@ -19157,20 +19216,20 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/office) -"DB" = ( +"aDB" = ( /obj/effect/floor_decal/industrial/loading{ dir = 8 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"DC" = ( +"aDC" = ( /obj/machinery/conveyor{ dir = 4; id = "QMLoad2" }, /turf/simulated/floor, /area/quartermaster/storage) -"DD" = ( +"aDD" = ( /obj/machinery/door/firedoor/border_only, /obj/machinery/door/airlock/glass_external, /obj/machinery/conveyor{ @@ -19180,7 +19239,7 @@ /obj/effect/map_helper/airlock/door/simple, /turf/simulated/floor/plating, /area/quartermaster/storage) -"DE" = ( +"aDE" = ( /obj/structure/table/standard, /obj/item/weapon/storage/fancy/cigarettes{ pixel_y = 2 @@ -19202,7 +19261,7 @@ /obj/effect/floor_decal/corner_steel_grid, /turf/simulated/floor/tiled, /area/teleporter/departing) -"DF" = ( +"aDF" = ( /obj/structure/table/glass, /obj/item/weapon/storage/box/cups, /obj/item/weapon/storage/box/cups{ @@ -19223,7 +19282,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"DG" = ( +"aDG" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -19237,7 +19296,7 @@ }, /turf/simulated/floor/tiled, /area/teleporter/departing) -"DH" = ( +"aDH" = ( /obj/structure/cable{ d1 = 1; d2 = 8; @@ -19261,7 +19320,7 @@ }, /turf/simulated/floor/tiled, /area/teleporter/departing) -"DI" = ( +"aDI" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 10 }, @@ -19270,7 +19329,7 @@ }, /turf/simulated/floor/tiled, /area/teleporter/departing) -"DJ" = ( +"aDJ" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 10 }, @@ -19280,7 +19339,7 @@ }, /turf/simulated/floor/tiled, /area/teleporter/departing) -"DK" = ( +"aDK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, @@ -19292,7 +19351,7 @@ }, /turf/simulated/floor/tiled, /area/tether/station/stairs_three) -"DL" = ( +"aDL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -19308,7 +19367,7 @@ /obj/structure/cable, /turf/simulated/floor/tiled, /area/tether/station/stairs_three) -"DM" = ( +"aDM" = ( /obj/machinery/mech_recharger, /obj/effect/floor_decal/corner/paleblue{ dir = 9 @@ -19333,7 +19392,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"DN" = ( +"aDN" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, @@ -19342,7 +19401,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"DO" = ( +"aDO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -19365,11 +19424,11 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"DP" = ( +"aDP" = ( /obj/structure/table/steel, /turf/simulated/floor/tiled, /area/security/security_processing) -"DQ" = ( +"aDQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, @@ -19378,7 +19437,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"DR" = ( +"aDR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -19390,7 +19449,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"DS" = ( +"aDS" = ( /obj/structure/table/rack, /obj/item/clothing/shoes/magboots, /obj/item/clothing/suit/space/void/medical/emt, @@ -19421,7 +19480,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"DT" = ( +"aDT" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/rust, /obj/random/maintenance/cargo, @@ -19437,7 +19496,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"DU" = ( +"aDU" = ( /obj/machinery/power/smes/buildable{ charge = 0; output_attempt = 0; @@ -19454,7 +19513,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/substation/medical) -"DV" = ( +"aDV" = ( /obj/structure/table/woodentable, /obj/item/device/taperecorder{ pixel_x = -4; @@ -19466,7 +19525,7 @@ }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"DW" = ( +"aDW" = ( /obj/machinery/power/terminal{ dir = 8 }, @@ -19477,7 +19536,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/substation/medical) -"DX" = ( +"aDX" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/alarm{ dir = 4; @@ -19496,7 +19555,7 @@ }, /turf/simulated/floor, /area/maintenance/station/cargo) -"DY" = ( +"aDY" = ( /obj/structure/cable{ d1 = 4; d2 = 8; @@ -19508,7 +19567,7 @@ }, /turf/simulated/floor, /area/maintenance/station/cargo) -"DZ" = ( +"aDZ" = ( /obj/structure/cable{ d1 = 2; d2 = 8; @@ -19523,14 +19582,14 @@ }, /turf/simulated/floor, /area/maintenance/station/cargo) -"Ea" = ( +"aEa" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor, /area/maintenance/station/cargo) -"Eb" = ( +"aEb" = ( /obj/structure/cable/green{ d1 = 2; d2 = 4; @@ -19541,7 +19600,7 @@ }, /turf/simulated/floor, /area/maintenance/station/cargo) -"Ec" = ( +"aEc" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/maintenance/cargo{ req_access = list(50); @@ -19557,7 +19616,7 @@ }, /turf/simulated/floor, /area/quartermaster/warehouse) -"Ed" = ( +"aEd" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -19568,7 +19627,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"Ee" = ( +"aEe" = ( /obj/machinery/light_switch{ dir = 2; name = "light switch "; @@ -19586,7 +19645,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"Ef" = ( +"aEf" = ( /obj/structure/table/reinforced, /obj/item/stack/material/phoron, /obj/item/stack/material/phoron, @@ -19610,7 +19669,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Eg" = ( +"aEg" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -19618,7 +19677,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Eh" = ( +"aEh" = ( /obj/machinery/hologram/holopad, /obj/structure/cable/green{ d1 = 2; @@ -19632,13 +19691,13 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Ei" = ( +"aEi" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Ej" = ( +"aEj" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/shutters{ @@ -19659,7 +19718,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Ek" = ( +"aEk" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -19671,20 +19730,20 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"El" = ( +"aEl" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Em" = ( +"aEm" = ( /obj/machinery/hologram/holopad, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"En" = ( +"aEn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/sortjunction{ @@ -19693,7 +19752,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Eo" = ( +"aEo" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 4 }, @@ -19708,7 +19767,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Ep" = ( +"aEp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, @@ -19719,7 +19778,7 @@ /obj/machinery/camera/network/cargo, /turf/simulated/floor/outdoors/grass/forest, /area/quartermaster/qm) -"Eq" = ( +"aEq" = ( /obj/structure/table/standard, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, @@ -19743,16 +19802,16 @@ /obj/item/weapon/cartridge/quartermaster, /turf/simulated/floor/wood, /area/quartermaster/qm) -"Er" = ( +"aEr" = ( /obj/structure/closet/secure_closet/quartermaster, /turf/simulated/floor/wood, /area/quartermaster/qm) -"Es" = ( +"aEs" = ( /obj/structure/closet, /obj/item/weapon/storage/backpack/dufflebag, /turf/simulated/floor/wood, /area/quartermaster/qm) -"Et" = ( +"aEt" = ( /obj/structure/disposalpipe/sortjunction/flipped{ dir = 1; name = "QM Office"; @@ -19763,11 +19822,11 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Eu" = ( +"aEu" = ( /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Ev" = ( +"aEv" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -19785,30 +19844,30 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/office) -"Ew" = ( +"aEw" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Ex" = ( +"aEx" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Ey" = ( +"aEy" = ( /obj/effect/floor_decal/industrial/warning{ dir = 5 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Ez" = ( +"aEz" = ( /obj/machinery/door/firedoor/border_only, /obj/machinery/door/airlock/glass_external, /obj/effect/map_helper/airlock/door/simple, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"EA" = ( +"aEA" = ( /obj/structure/closet/wardrobe/xenos, /obj/machinery/firealarm{ dir = 8; @@ -19820,13 +19879,13 @@ }, /turf/simulated/floor/tiled, /area/teleporter/departing) -"EB" = ( +"aEB" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 9 }, /turf/simulated/floor/tiled/techfloor, /area/teleporter/departing) -"EC" = ( +"aEC" = ( /obj/effect/landmark{ name = "JoinLateGateway" }, @@ -19835,7 +19894,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/teleporter/departing) -"ED" = ( +"aED" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 5 }, @@ -19844,14 +19903,14 @@ }, /turf/simulated/floor/tiled/techfloor, /area/teleporter/departing) -"EE" = ( +"aEE" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled, /area/tether/station/stairs_three) -"EF" = ( +"aEF" = ( /obj/machinery/button/remote/blast_door{ id = "qm_warehouse"; name = "Warehouse Door Control"; @@ -19861,7 +19920,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"EG" = ( +"aEG" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, @@ -19876,7 +19935,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"EH" = ( +"aEH" = ( /obj/structure/window/reinforced{ dir = 8 }, @@ -19897,13 +19956,13 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"EI" = ( +"aEI" = ( /obj/effect/landmark/start{ name = "Cargo Technician" }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"EJ" = ( +"aEJ" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 4 }, @@ -19912,14 +19971,14 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"EK" = ( +"aEK" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/medical{ name = "EMT Bay" }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"EL" = ( +"aEL" = ( /obj/effect/floor_decal/corner/paleblue{ dir = 6 }, @@ -19928,7 +19987,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"EM" = ( +"aEM" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/landmark/start{ @@ -19936,12 +19995,12 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"EN" = ( +"aEN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/reception) -"EO" = ( +"aEO" = ( /obj/structure/table/rack, /obj/item/weapon/rig/medical/equipped, /obj/structure/fireaxecabinet{ @@ -19965,7 +20024,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"EP" = ( +"aEP" = ( /obj/effect/decal/cleanable/dirt, /obj/random/trash_pile, /obj/structure/railing{ @@ -19974,7 +20033,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"EQ" = ( +"aEQ" = ( /obj/machinery/alarm{ dir = 8; icon_state = "alarm0"; @@ -19984,7 +20043,7 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"ER" = ( +"aER" = ( /obj/structure/bed/chair/office/dark{ dir = 1 }, @@ -19993,7 +20052,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"ES" = ( +"aES" = ( /obj/structure/cable/green, /obj/structure/cable/green{ d2 = 4; @@ -20005,7 +20064,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/substation/medical) -"ET" = ( +"aET" = ( /obj/structure/cable/green{ d2 = 8; icon_state = "0-8" @@ -20021,7 +20080,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/substation/medical) -"EU" = ( +"aEU" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -20040,7 +20099,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/substation/medical) -"EV" = ( +"aEV" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, /obj/structure/cable/green{ @@ -20050,7 +20109,7 @@ }, /turf/simulated/floor, /area/maintenance/station/cargo) -"EW" = ( +"aEW" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/engineering{ name = "Cargo Substation"; @@ -20063,7 +20122,7 @@ }, /turf/simulated/floor, /area/maintenance/substation/cargo) -"EX" = ( +"aEX" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/engineering{ name = "Cargo Substation"; @@ -20076,7 +20135,7 @@ }, /turf/simulated/floor, /area/maintenance/substation/cargo) -"EY" = ( +"aEY" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -20085,7 +20144,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"EZ" = ( +"aEZ" = ( /obj/structure/table/reinforced, /obj/item/device/mass_spectrometer/adv, /obj/item/device/mass_spectrometer/adv, @@ -20108,13 +20167,13 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Fa" = ( +"aFa" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Fb" = ( +"aFb" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -20126,7 +20185,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Fc" = ( +"aFc" = ( /obj/structure/table/reinforced, /obj/item/weapon/hand_labeler, /obj/item/weapon/packageWrap, @@ -20144,10 +20203,10 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Fd" = ( +"aFd" = ( /turf/simulated/wall/r_wall, /area/tether/station/stairs_three) -"Fe" = ( +"aFe" = ( /obj/structure/bed/chair{ dir = 4 }, @@ -20165,7 +20224,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Ff" = ( +"aFf" = ( /obj/structure/window/reinforced{ dir = 8 }, @@ -20187,12 +20246,12 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Fg" = ( +"aFg" = ( /obj/structure/table/glass, /obj/item/weapon/storage/firstaid/regular, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Fh" = ( +"aFh" = ( /obj/structure/table/glass, /obj/item/roller, /obj/item/roller{ @@ -20213,7 +20272,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Fi" = ( +"aFi" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ dir = 8 @@ -20224,10 +20283,10 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"Fj" = ( +"aFj" = ( /turf/simulated/wall, /area/quartermaster/warehouse) -"Fk" = ( +"aFk" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/vehicle/train/engine{ dir = 1 @@ -20239,7 +20298,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Fl" = ( +"aFl" = ( /obj/structure/filingcabinet/filingcabinet, /obj/machinery/light{ icon_state = "tube1"; @@ -20265,14 +20324,14 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/office) -"Fm" = ( +"aFm" = ( /obj/structure/closet/secure_closet/medical3, /obj/item/weapon/soap/nanotrasen, /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Fn" = ( +"aFn" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -20292,7 +20351,7 @@ }, /turf/simulated/floor/plating, /area/quartermaster/storage) -"Fo" = ( +"aFo" = ( /obj/structure/closet/wardrobe/black, /obj/machinery/alarm{ dir = 1; @@ -20312,20 +20371,20 @@ }, /turf/simulated/floor/tiled, /area/teleporter/departing) -"Fp" = ( +"aFp" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 8 }, /turf/simulated/floor/tiled/techfloor, /area/teleporter/departing) -"Fq" = ( +"aFq" = ( /obj/machinery/cryopod/robot/door/gateway, /turf/simulated/floor/tiled/techfloor, /area/teleporter/departing) -"Fr" = ( +"aFr" = ( /turf/simulated/floor/tiled/techfloor, /area/teleporter/departing) -"Fs" = ( +"aFs" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 4 }, @@ -20334,7 +20393,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/teleporter/departing) -"Ft" = ( +"aFt" = ( /obj/machinery/alarm{ dir = 4; icon_state = "alarm0"; @@ -20343,13 +20402,13 @@ }, /turf/simulated/open, /area/tether/station/stairs_three) -"Fu" = ( +"aFu" = ( /obj/structure/sign/deck3{ pixel_x = 32 }, /turf/simulated/open, /area/tether/station/stairs_three) -"Fv" = ( +"aFv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -20359,7 +20418,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Fw" = ( +"aFw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 4 @@ -20372,7 +20431,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Fx" = ( +"aFx" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -20383,7 +20442,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"Fy" = ( +"aFy" = ( /obj/structure/table/rack, /obj/item/device/suit_cooling_unit{ pixel_y = -5 @@ -20416,10 +20475,10 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Fz" = ( +"aFz" = ( /turf/simulated/wall/r_wall, /area/crew_quarters/heads/cmo) -"FA" = ( +"aFA" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/green{ d1 = 1; @@ -20428,7 +20487,7 @@ }, /turf/simulated/floor, /area/maintenance/station/cargo) -"FB" = ( +"aFB" = ( /obj/effect/floor_decal/industrial/warning, /obj/structure/cable{ d1 = 1; @@ -20442,7 +20501,7 @@ }, /turf/simulated/floor, /area/maintenance/substation/cargo) -"FC" = ( +"aFC" = ( /obj/machinery/power/terminal, /obj/structure/cable{ icon_state = "0-8" @@ -20456,7 +20515,7 @@ }, /turf/simulated/floor, /area/maintenance/substation/cargo) -"FD" = ( +"aFD" = ( /obj/effect/floor_decal/industrial/warning/corner{ icon_state = "warningcorner"; dir = 8 @@ -20473,7 +20532,7 @@ }, /turf/simulated/floor, /area/maintenance/substation/cargo) -"FE" = ( +"aFE" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -20491,7 +20550,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/office) -"FF" = ( +"aFF" = ( /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -20503,10 +20562,10 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"FG" = ( +"aFG" = ( /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"FH" = ( +"aFH" = ( /obj/structure/closet/secure_closet/medical1, /obj/machinery/light{ dir = 8; @@ -20520,7 +20579,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"FI" = ( +"aFI" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -20530,14 +20589,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"FJ" = ( +"aFJ" = ( /obj/structure/bed/chair/office/dark, /obj/effect/landmark/start{ name = "Chemist" }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"FK" = ( +"aFK" = ( /obj/structure/bed/chair{ dir = 4 }, @@ -20549,7 +20608,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"FL" = ( +"aFL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/junction{ @@ -20558,7 +20617,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"FM" = ( +"aFM" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -20568,7 +20627,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"FN" = ( +"aFN" = ( /obj/machinery/door/window/westright{ name = "Medbay Reception"; req_one_access = list(5) @@ -20578,14 +20637,14 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"FO" = ( +"aFO" = ( /obj/structure/disposalpipe/segment{ dir = 2; icon_state = "pipe-c" }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"FP" = ( +"aFP" = ( /obj/structure/table/glass, /obj/item/device/radio{ pixel_x = 4; @@ -20608,7 +20667,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"FQ" = ( +"aFQ" = ( /obj/structure/closet/secure_closet/paramedic, /obj/effect/floor_decal/corner/paleblue{ dir = 9 @@ -20628,12 +20687,12 @@ /obj/effect/floor_decal/steeldecal/steel_decals9, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"FR" = ( +"aFR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"FS" = ( +"aFS" = ( /obj/structure/dispenser{ phorontanks = 0 }, @@ -20659,7 +20718,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"FT" = ( +"aFT" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/paleblue/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -20676,7 +20735,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"FU" = ( +"aFU" = ( /obj/machinery/requests_console{ announcementConsole = 1; department = "Chief Medical Officer's Desk"; @@ -20687,7 +20746,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"FV" = ( +"aFV" = ( /obj/machinery/light{ dir = 1 }, @@ -20699,13 +20758,13 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"FW" = ( +"aFW" = ( /obj/machinery/keycard_auth{ pixel_y = 28 }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"FX" = ( +"aFX" = ( /obj/item/modular_computer/console/preset/command{ dir = 8 }, @@ -20715,7 +20774,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"FY" = ( +"aFY" = ( /obj/machinery/power/sensor{ name = "Powernet Sensor - Cargo Subgrid"; name_tag = "Cargo Subgrid" @@ -20736,7 +20795,7 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/substation/cargo) -"FZ" = ( +"aFZ" = ( /obj/structure/closet/wardrobe/chemistry_white, /obj/item/weapon/storage/box/pillbottles, /obj/item/weapon/storage/box/pillbottles, @@ -20757,13 +20816,13 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Ga" = ( +"aGa" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"Gb" = ( +"aGb" = ( /obj/structure/table/rack{ dir = 8; layer = 2.9 @@ -20774,7 +20833,7 @@ }, /turf/simulated/floor/tiled/steel, /area/quartermaster/warehouse) -"Gc" = ( +"aGc" = ( /obj/structure/table/glass, /obj/machinery/recharger, /obj/item/weapon/tool/screwdriver, @@ -20786,10 +20845,10 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Gd" = ( +"aGd" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/vehicle/train/trolley{ - dir = 1 + dir = 8 }, /obj/machinery/alarm{ dir = 4; @@ -20804,36 +20863,36 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Ge" = ( +"aGe" = ( /obj/effect/floor_decal/industrial/warning{ dir = 6 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Gf" = ( +"aGf" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 10 }, /turf/simulated/floor/tiled/techfloor, /area/teleporter/departing) -"Gg" = ( +"aGg" = ( /obj/effect/floor_decal/techfloor/orange, /obj/effect/floor_decal/techfloor/hole, /turf/simulated/floor/tiled/techfloor, /area/teleporter/departing) -"Gh" = ( +"aGh" = ( /obj/effect/floor_decal/techfloor/orange, /obj/machinery/camera/network/tether{ dir = 1 }, /turf/simulated/floor/tiled/techfloor, /area/teleporter/departing) -"Gi" = ( +"aGi" = ( /obj/effect/floor_decal/techfloor/orange, /obj/effect/floor_decal/techfloor/hole/right, /turf/simulated/floor/tiled/techfloor, /area/teleporter/departing) -"Gj" = ( +"aGj" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 6 }, @@ -20844,10 +20903,10 @@ }, /turf/simulated/floor/tiled/techfloor, /area/teleporter/departing) -"Gk" = ( +"aGk" = ( /turf/simulated/open, /area/tether/station/stairs_three) -"Gl" = ( +"aGl" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -20863,7 +20922,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Gm" = ( +"aGm" = ( /obj/machinery/chem_master{ dir = 1 }, @@ -20881,7 +20940,7 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner2, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Gn" = ( +"aGn" = ( /obj/structure/table/reinforced, /obj/machinery/chemical_dispenser/full{ dir = 1 @@ -20902,7 +20961,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Go" = ( +"aGo" = ( /obj/structure/reagent_dispensers/water_cooler/full{ dir = 1 }, @@ -20919,7 +20978,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Gp" = ( +"aGp" = ( /obj/structure/table/glass, /obj/item/weapon/storage/box/body_record_disk, /obj/item/device/sleevemate, @@ -20942,13 +21001,13 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Gq" = ( +"aGq" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 8 }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Gr" = ( +"aGr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 @@ -20957,7 +21016,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals6, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Gs" = ( +"aGs" = ( /obj/structure/closet/emcloset, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -20979,7 +21038,7 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner2, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Gt" = ( +"aGt" = ( /obj/structure/window/reinforced{ dir = 8 }, @@ -21010,7 +21069,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Gu" = ( +"aGu" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ dir = 1 @@ -21019,7 +21078,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Gv" = ( +"aGv" = ( /obj/machinery/power/apc{ dir = 2; name = "south bump"; @@ -21039,7 +21098,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Gw" = ( +"aGw" = ( /obj/structure/cable/green{ d1 = 2; d2 = 8; @@ -21063,7 +21122,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/reception) -"Gx" = ( +"aGx" = ( /obj/item/roller, /obj/item/roller{ pixel_y = 8 @@ -21080,7 +21139,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Gy" = ( +"aGy" = ( /obj/machinery/power/apc{ dir = 2; name = "south bump"; @@ -21104,7 +21163,7 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Gz" = ( +"aGz" = ( /obj/structure/cable/green{ d1 = 2; d2 = 8; @@ -21114,7 +21173,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"GA" = ( +"aGA" = ( /obj/machinery/light, /obj/effect/floor_decal/borderfloorblack{ dir = 6 @@ -21126,7 +21185,7 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner2, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"GB" = ( +"aGB" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/floor_decal/corner/paleblue{ dir = 6 @@ -21146,10 +21205,10 @@ }, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"GC" = ( +"aGC" = ( /turf/simulated/wall, /area/maintenance/substation/cargo) -"GD" = ( +"aGD" = ( /obj/machinery/photocopier, /obj/machinery/firealarm{ dir = 8; @@ -21158,7 +21217,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"GE" = ( +"aGE" = ( /obj/structure/bed/chair/office/light, /obj/machinery/button/remote/blast_door{ desc = "A remote control-switch for shutters."; @@ -21193,19 +21252,19 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"GF" = ( +"aGF" = ( /obj/structure/closet/crate, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"GG" = ( +"aGG" = ( /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"GH" = ( +"aGH" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"GI" = ( +"aGI" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -21236,7 +21295,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/office) -"GJ" = ( +"aGJ" = ( /obj/machinery/power/apc{ dir = 4; name = "east bump"; @@ -21247,10 +21306,10 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"GK" = ( +"aGK" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/vehicle/train/trolley{ - dir = 1 + dir = 8 }, /obj/machinery/light{ dir = 8 @@ -21262,31 +21321,31 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"GL" = ( +"aGL" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"GM" = ( +"aGM" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"GN" = ( +"aGN" = ( /obj/structure/flora/pottedplant, /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"GO" = ( +"aGO" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"GP" = ( +"aGP" = ( /obj/machinery/conveyor{ dir = 10; icon_state = "conveyor0"; @@ -21294,7 +21353,7 @@ }, /turf/simulated/floor, /area/quartermaster/storage) -"GQ" = ( +"aGQ" = ( /obj/machinery/door/firedoor/border_only, /obj/machinery/door/airlock/glass_external, /obj/machinery/conveyor{ @@ -21304,14 +21363,14 @@ /obj/effect/map_helper/airlock/door/simple, /turf/simulated/floor/plating, /area/quartermaster/storage) -"GR" = ( +"aGR" = ( /obj/machinery/conveyor{ dir = 4; id = "QMLoad" }, /turf/simulated/floor, /area/quartermaster/storage) -"GS" = ( +"aGS" = ( /obj/structure/filingcabinet, /obj/item/device/radio/intercom/department/medbay{ dir = 4; @@ -21319,7 +21378,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"GT" = ( +"aGT" = ( /obj/structure/table/glass, /obj/machinery/photocopier/faxmachine{ department = "CMO's Office" @@ -21337,7 +21396,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"GU" = ( +"aGU" = ( /obj/structure/medical_stand, /obj/machinery/power/apc{ dir = 1; @@ -21361,11 +21420,11 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"GV" = ( +"aGV" = ( /obj/machinery/smartfridge/chemistry/chemvator, /turf/simulated/floor/plating, /area/medical/chemistry) -"GW" = ( +"aGW" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_medical{ name = "Chemistry"; @@ -21381,7 +21440,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"GX" = ( +"aGX" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/multi_tile/glass{ id_tag = "MedbayFoyer"; @@ -21396,7 +21455,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"GY" = ( +"aGY" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -21409,7 +21468,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"GZ" = ( +"aGZ" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_medical{ name = "Medbay Reception"; @@ -21424,7 +21483,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ha" = ( +"aHa" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/medical{ name = "EMT Bay" @@ -21438,19 +21497,19 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/medical/medbay_emt_bay) -"Hb" = ( +"aHb" = ( /obj/structure/table/glass, /obj/item/weapon/folder/white_cmo, /obj/item/weapon/stamp/cmo, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"Hc" = ( +"aHc" = ( /obj/structure/table/glass, /obj/item/weapon/paper_bin, /obj/item/weapon/pen, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"Hd" = ( +"aHd" = ( /obj/structure/table/glass, /obj/machinery/computer/skills{ dir = 8; @@ -21465,7 +21524,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"He" = ( +"aHe" = ( /obj/machinery/camera/network/cargo{ dir = 4 }, @@ -21474,11 +21533,11 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Hf" = ( +"aHf" = ( /obj/machinery/recharge_station, /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/medical_restroom) -"Hg" = ( +"aHg" = ( /obj/machinery/firealarm{ dir = 1; pixel_x = 0; @@ -21487,7 +21546,7 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"Hh" = ( +"aHh" = ( /obj/machinery/portable_atmospherics/canister/oxygen/prechilled, /obj/item/weapon/tool/wrench, /obj/machinery/atmospherics/portables_connector{ @@ -21501,7 +21560,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Hi" = ( +"aHi" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -21519,7 +21578,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Hj" = ( +"aHj" = ( /obj/structure/table/glass, /obj/item/weapon/packageWrap, /obj/item/weapon/hand_labeler, @@ -21537,7 +21596,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Hk" = ( +"aHk" = ( /obj/structure/table/glass, /obj/item/weapon/storage/box/nifsofts_medical, /obj/item/device/flashlight/pen, @@ -21557,7 +21616,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Hl" = ( +"aHl" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -21567,7 +21626,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Hm" = ( +"aHm" = ( /obj/item/weapon/storage/box/gloves{ pixel_x = 4; pixel_y = 4 @@ -21594,7 +21653,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Hn" = ( +"aHn" = ( /obj/item/roller, /obj/item/roller{ pixel_y = 8 @@ -21616,7 +21675,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Ho" = ( +"aHo" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -21625,7 +21684,7 @@ }, /turf/simulated/floor/plating, /area/medical/medbay_primary_storage) -"Hp" = ( +"aHp" = ( /obj/machinery/portable_atmospherics/canister/oxygen/prechilled, /obj/machinery/atmospherics/portables_connector{ dir = 4 @@ -21644,7 +21703,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Hq" = ( +"aHq" = ( /obj/machinery/button/remote/airlock{ desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; @@ -21664,15 +21723,16 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner2{ dir = 1 }, +/obj/machinery/vitals_monitor, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Hr" = ( +"aHr" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 1 }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Hs" = ( +"aHs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, @@ -21681,7 +21741,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ht" = ( +"aHt" = ( /obj/structure/table/glass, /obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{ pixel_x = 7; @@ -21713,7 +21773,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Hu" = ( +"aHu" = ( /obj/structure/table/glass, /obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{ pixel_x = -4; @@ -21739,7 +21799,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Hv" = ( +"aHv" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -21755,7 +21815,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Hw" = ( +"aHw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/floor_decal/industrial/outline/yellow, /obj/structure/disposalpipe/segment{ @@ -21768,7 +21828,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"Hx" = ( +"aHx" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -21785,7 +21845,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"Hy" = ( +"aHy" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -21800,7 +21860,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"Hz" = ( +"aHz" = ( /obj/machinery/door/blast/shutters{ dir = 8; id = "qm_warehouse"; @@ -21817,7 +21877,7 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/warehouse) -"HA" = ( +"aHA" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -21839,13 +21899,13 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"HB" = ( +"aHB" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"HC" = ( +"aHC" = ( /obj/machinery/door/airlock/glass_mining{ name = "Cargo Bay"; req_access = list(31); @@ -21863,7 +21923,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/office) -"HD" = ( +"aHD" = ( /obj/structure/disposalpipe/segment{ dir = 8; icon_state = "pipe-c" @@ -21873,27 +21933,27 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"HE" = ( +"aHE" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"HF" = ( +"aHF" = ( /obj/machinery/conveyor{ dir = 1; id = "QMLoad" }, /turf/simulated/floor, /area/quartermaster/storage) -"HG" = ( +"aHG" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /obj/structure/window/reinforced, /turf/simulated/floor/plating, /area/quartermaster/storage) -"HH" = ( +"aHH" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, @@ -21910,7 +21970,7 @@ /obj/structure/window/reinforced, /turf/simulated/floor/plating, /area/quartermaster/storage) -"HI" = ( +"aHI" = ( /obj/structure/extinguisher_cabinet{ dir = 1; icon_state = "extinguisher_closed"; @@ -21935,7 +21995,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"HJ" = ( +"aHJ" = ( /obj/machinery/power/apc{ dir = 1; name = "north bump"; @@ -21954,7 +22014,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"HK" = ( +"aHK" = ( /obj/structure/flora/pottedplant/stoutbush, /obj/machinery/light{ dir = 1 @@ -21977,7 +22037,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"HL" = ( +"aHL" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -21999,7 +22059,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"HM" = ( +"aHM" = ( /obj/structure/closet/l3closet/medical, /obj/effect/floor_decal/borderfloorwhite{ dir = 5 @@ -22015,7 +22075,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"HN" = ( +"aHN" = ( /obj/structure/grille, /obj/machinery/door/firedoor/glass, /obj/structure/window/reinforced/polarized/full{ @@ -22023,7 +22083,7 @@ }, /turf/simulated/floor/plating, /area/crew_quarters/heads/cmo) -"HO" = ( +"aHO" = ( /obj/machinery/light{ dir = 1 }, @@ -22041,7 +22101,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"HP" = ( +"aHP" = ( /obj/structure/window/reinforced{ dir = 1 }, @@ -22061,13 +22121,13 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"HQ" = ( +"aHQ" = ( /obj/structure/bed/chair{ dir = 1 }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"HR" = ( +"aHR" = ( /obj/machinery/alarm{ dir = 8; icon_state = "alarm0"; @@ -22075,7 +22135,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"HS" = ( +"aHS" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -22084,7 +22144,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"HT" = ( +"aHT" = ( /obj/machinery/atmospherics/unary/freezer{ dir = 4 }, @@ -22100,7 +22160,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"HU" = ( +"aHU" = ( /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -22109,7 +22169,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/cyan, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"HV" = ( +"aHV" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -22121,7 +22181,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"HW" = ( +"aHW" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, /obj/effect/floor_decal/borderfloorwhite/corner2{ @@ -22132,7 +22192,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"HX" = ( +"aHX" = ( /obj/structure/cable/green{ d1 = 2; d2 = 8; @@ -22151,7 +22211,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"HY" = ( +"aHY" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 4 }, @@ -22166,7 +22226,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"HZ" = ( +"aHZ" = ( /obj/structure/table/glass, /obj/item/weapon/reagent_containers/spray/cleaner{ pixel_x = 2; @@ -22190,19 +22250,19 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ia" = ( +"aIa" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ib" = ( +"aIb" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ic" = ( +"aIc" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ dir = 8; icon_state = "map" @@ -22212,7 +22272,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Id" = ( +"aId" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 9; icon_state = "intact" @@ -22222,7 +22282,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ie" = ( +"aIe" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, @@ -22235,7 +22295,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"If" = ( +"aIf" = ( /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -22245,7 +22305,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ig" = ( +"aIg" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -22270,7 +22330,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ih" = ( +"aIh" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -22287,7 +22347,7 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ii" = ( +"aIi" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -22304,7 +22364,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ij" = ( +"aIj" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -22325,7 +22385,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ik" = ( +"aIk" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -22335,7 +22395,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Il" = ( +"aIl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -22348,9 +22408,10 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 4 }, +/obj/machinery/vitals_monitor, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Im" = ( +"aIm" = ( /obj/structure/closet/crate, /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/camera/network/cargo{ @@ -22358,7 +22419,7 @@ }, /turf/simulated/floor/tiled/steel, /area/quartermaster/warehouse) -"In" = ( +"aIn" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -22380,7 +22441,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Io" = ( +"aIo" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -22391,7 +22452,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Ip" = ( +"aIp" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -22407,7 +22468,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Iq" = ( +"aIq" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -22415,20 +22476,20 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Ir" = ( +"aIr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Is" = ( +"aIs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/hologram/holopad, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"It" = ( +"aIt" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, @@ -22436,11 +22497,11 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Iu" = ( +"aIu" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Iv" = ( +"aIv" = ( /obj/machinery/conveyor_switch/oneway{ convdir = 1; id = "QMLoad" @@ -22450,7 +22511,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Iw" = ( +"aIw" = ( /obj/structure/window/reinforced, /obj/effect/floor_decal/borderfloorwhite{ dir = 8 @@ -22460,7 +22521,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"Ix" = ( +"aIx" = ( /obj/structure/window/reinforced{ dir = 4 }, @@ -22477,10 +22538,10 @@ /mob/living/simple_mob/animal/passive/cat/runtime, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"Iy" = ( +"aIy" = ( /turf/simulated/wall, /area/medical/sleeper) -"Iz" = ( +"aIz" = ( /obj/structure/cable/green{ d1 = 2; d2 = 4; @@ -22488,7 +22549,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"IA" = ( +"aIA" = ( /obj/machinery/power/apc{ dir = 4; name = "east bump"; @@ -22500,7 +22561,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"IB" = ( +"aIB" = ( /obj/machinery/vending/medical{ dir = 4 }, @@ -22512,13 +22573,13 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"IC" = ( +"aIC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"ID" = ( +"aID" = ( /obj/structure/table/glass, /obj/item/weapon/storage/toolbox/emergency, /obj/item/bodybag/cryobag, @@ -22530,7 +22591,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"IE" = ( +"aIE" = ( /obj/structure/table/glass, /obj/item/clothing/accessory/stethoscope, /obj/item/clothing/accessory/stethoscope, @@ -22546,7 +22607,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"IF" = ( +"aIF" = ( /obj/structure/table/glass, /obj/item/weapon/storage/firstaid/regular{ pixel_x = 5; @@ -22562,7 +22623,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"IG" = ( +"aIG" = ( /obj/machinery/hologram/holopad, /obj/structure/cable/green{ d1 = 1; @@ -22577,7 +22638,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"IH" = ( +"aIH" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -22600,7 +22661,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"II" = ( +"aII" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -22626,7 +22687,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"IJ" = ( +"aIJ" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_medical{ name = "Medbay Equipment"; @@ -22653,7 +22714,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"IK" = ( +"aIK" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -22681,7 +22742,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"IL" = ( +"aIL" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -22703,7 +22764,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"IM" = ( +"aIM" = ( /obj/structure/cable/green{ d1 = 2; d2 = 8; @@ -22725,7 +22786,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"IN" = ( +"aIN" = ( /obj/machinery/shower{ pixel_y = 10 }, @@ -22742,13 +22803,13 @@ /obj/structure/curtain/open/shower/medical, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"IO" = ( +"aIO" = ( /obj/machinery/power/breakerbox/activated{ RCon_tag = "Cargo Substation Bypass" }, /turf/simulated/floor, /area/maintenance/substation/cargo) -"IP" = ( +"aIP" = ( /obj/machinery/power/smes/buildable{ charge = 0; output_attempt = 0; @@ -22768,14 +22829,14 @@ }, /turf/simulated/floor, /area/maintenance/substation/cargo) -"IQ" = ( +"aIQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ icon_state = "intact"; dir = 4 }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"IR" = ( +"aIR" = ( /obj/structure/closet/crate, /obj/machinery/alarm{ dir = 4; @@ -22786,13 +22847,13 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/steel, /area/quartermaster/warehouse) -"IS" = ( +"aIS" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, /turf/simulated/floor/tiled/steel, /area/quartermaster/warehouse) -"IT" = ( +"aIT" = ( /obj/machinery/button/remote/blast_door{ id = "qm_warehouse"; name = "Warehouse Door Control"; @@ -22802,14 +22863,14 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"IU" = ( +"aIU" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, /obj/effect/floor_decal/borderfloorwhite/corner2, /obj/effect/floor_decal/corner/paleblue/bordercorner2, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"IV" = ( +"aIV" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 5; pixel_y = -32 @@ -22817,7 +22878,7 @@ /obj/machinery/light, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"IW" = ( +"aIW" = ( /obj/effect/floor_decal/industrial/loading{ dir = 4 }, @@ -22828,7 +22889,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"IX" = ( +"aIX" = ( /obj/machinery/status_display/supply_display{ pixel_y = -32 }, @@ -22838,7 +22899,7 @@ }, /turf/simulated/floor, /area/quartermaster/storage) -"IY" = ( +"aIY" = ( /obj/machinery/conveyor{ dir = 1; id = "QMLoad" @@ -22846,19 +22907,19 @@ /obj/machinery/light, /turf/simulated/floor, /area/quartermaster/storage) -"IZ" = ( +"aIZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 9; icon_state = "intact" }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ja" = ( +"aJa" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Jb" = ( +"aJb" = ( /obj/structure/closet/secure_closet/medical1, /obj/effect/floor_decal/borderfloorwhite{ dir = 4 @@ -22868,13 +22929,13 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Jc" = ( +"aJc" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/medical/sleeper) -"Jd" = ( +"aJd" = ( /obj/machinery/vending/medical{ dir = 4 }, @@ -22886,7 +22947,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Je" = ( +"aJe" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/borderfloorwhite{ @@ -22903,7 +22964,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Jf" = ( +"aJf" = ( /obj/structure/flora/pottedplant/stoutbush, /obj/effect/floor_decal/borderfloorwhite{ dir = 8 @@ -22919,7 +22980,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"Jg" = ( +"aJg" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 4 }, @@ -22928,16 +22989,16 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"Jh" = ( +"aJh" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"Ji" = ( +"aJi" = ( /obj/machinery/atmospherics/unary/cryo_cell, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/medical/sleeper) -"Jj" = ( +"aJj" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -22949,7 +23010,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"Jk" = ( +"aJk" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, @@ -22965,7 +23026,7 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"Jl" = ( +"aJl" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -22975,7 +23036,7 @@ /obj/random/junk, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Jm" = ( +"aJm" = ( /obj/machinery/vending/coffee{ dir = 4 }, @@ -22987,7 +23048,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Jn" = ( +"aJn" = ( /obj/structure/sign/goldenplaque{ desc = "Done No Harm."; name = "Best Doctor 2552"; @@ -23005,30 +23066,30 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Jo" = ( +"aJo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/landmark/start{ name = "Medical Doctor" }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Jp" = ( +"aJp" = ( /obj/effect/landmark/start{ name = "Chemist" }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Jq" = ( +"aJq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/landmark/start{ name = "Medical Doctor" }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Jr" = ( +"aJr" = ( /turf/simulated/wall, /area/medical/medbay_primary_storage) -"Js" = ( +"aJs" = ( /obj/structure/railing, /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, @@ -23040,7 +23101,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Jt" = ( +"aJt" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, @@ -23055,7 +23116,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Ju" = ( +"aJu" = ( /obj/structure/table/rack, /obj/item/weapon/storage/belt/medical, /obj/item/weapon/storage/belt/medical, @@ -23077,7 +23138,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Jv" = ( +"aJv" = ( /obj/structure/table/glass, /obj/item/device/defib_kit/loaded, /obj/effect/floor_decal/borderfloorwhite{ @@ -23094,7 +23155,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Jw" = ( +"aJw" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -23105,7 +23166,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Jx" = ( +"aJx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ icon_state = "map-scrubbers"; @@ -23115,7 +23176,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals10, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Jy" = ( +"aJy" = ( /obj/machinery/sleep_console{ dir = 4 }, @@ -23124,7 +23185,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Jz" = ( +"aJz" = ( /obj/machinery/sleeper{ dir = 4 }, @@ -23133,27 +23194,27 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"JA" = ( +"aJA" = ( /obj/structure/table/glass, /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 8 }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"JB" = ( +"aJB" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"JC" = ( +"aJC" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"JD" = ( +"aJD" = ( /obj/structure/table/glass, /obj/machinery/recharger, /obj/effect/floor_decal/borderfloorwhite{ @@ -23168,7 +23229,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"JE" = ( +"aJE" = ( /obj/machinery/vending/blood, /obj/effect/floor_decal/borderfloorwhite{ dir = 8 @@ -23178,7 +23239,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"JF" = ( +"aJF" = ( /obj/structure/cable/green{ d1 = 2; d2 = 4; @@ -23200,7 +23261,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"JG" = ( +"aJG" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/command{ id_tag = "cmodoor"; @@ -23225,7 +23286,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"JH" = ( +"aJH" = ( /obj/machinery/light/small{ dir = 8; pixel_y = 0 @@ -23234,13 +23295,13 @@ /obj/structure/closet/crate/freezer, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"JI" = ( +"aJI" = ( /obj/structure/closet/crate/internals, /obj/machinery/light/small, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/steel, /area/quartermaster/warehouse) -"JJ" = ( +"aJJ" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -23264,16 +23325,16 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"JK" = ( +"aJK" = ( /obj/structure/closet/crate/medical, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"JL" = ( +"aJL" = ( /obj/machinery/status_display/supply_display, /turf/simulated/wall, /area/quartermaster/warehouse) -"JM" = ( +"aJM" = ( /obj/machinery/alarm{ dir = 1; icon_state = "alarm0"; @@ -23281,7 +23342,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"JN" = ( +"aJN" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -23292,10 +23353,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"JO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +"aJO" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -23307,9 +23365,13 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"JP" = ( +"aJP" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -23333,7 +23395,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"JQ" = ( +"aJQ" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -23351,7 +23413,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"JR" = ( +"aJR" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -23369,14 +23431,14 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"JS" = ( +"aJS" = ( /obj/structure/filingcabinet/chestdrawer, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"JT" = ( +"aJT" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -23390,7 +23452,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"JU" = ( +"aJU" = ( /obj/machinery/door/firedoor/glass, /obj/structure/lattice, /obj/structure/cable/green{ @@ -23403,7 +23465,7 @@ }, /turf/simulated/open, /area/maintenance/station/cargo) -"JV" = ( +"aJV" = ( /obj/structure/closet/secure_closet/medical3, /obj/item/weapon/soap/nanotrasen, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -23418,14 +23480,14 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"JW" = ( +"aJW" = ( /obj/machinery/light{ dir = 4; icon_state = "tube1" }, /turf/space, /area/security/nuke_storage) -"JX" = ( +"aJX" = ( /obj/machinery/light{ dir = 8; icon_state = "tube1"; @@ -23433,13 +23495,13 @@ }, /turf/simulated/mineral/floor/vacuum, /area/security/nuke_storage) -"JY" = ( +"aJY" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor, /area/maintenance/station/cargo) -"JZ" = ( +"aJZ" = ( /obj/structure/table/standard, /obj/random/medical, /obj/machinery/power/apc{ @@ -23453,7 +23515,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) -"Ka" = ( +"aKa" = ( /obj/structure/closet/secure_closet/medical3, /obj/item/weapon/soap/nanotrasen, /obj/effect/floor_decal/borderfloorwhite{ @@ -23464,7 +23526,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Kb" = ( +"aKb" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -23482,7 +23544,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) -"Kc" = ( +"aKc" = ( /obj/structure/closet/wardrobe/virology_white, /obj/machinery/firealarm{ dir = 4; @@ -23496,7 +23558,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) -"Kd" = ( +"aKd" = ( /obj/structure/closet/secure_closet/medical3, /obj/item/weapon/soap/nanotrasen, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -23511,7 +23573,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Ke" = ( +"aKe" = ( /obj/structure/closet/secure_closet/medical3, /obj/item/weapon/soap/nanotrasen, /obj/effect/floor_decal/borderfloorwhite, @@ -23524,7 +23586,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Kf" = ( +"aKf" = ( /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 5 }, @@ -23533,24 +23595,24 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Kg" = ( +"aKg" = ( /turf/simulated/open, /area/medical/medbay_primary_storage) -"Kh" = ( +"aKh" = ( /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"Ki" = ( +"aKi" = ( /obj/machinery/light, /turf/simulated/open, /area/medical/medbay_primary_storage) -"Kj" = ( +"aKj" = ( /obj/machinery/vending/cola{ dir = 4 }, /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Kk" = ( +"aKk" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -23561,7 +23623,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Kl" = ( +"aKl" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, @@ -23574,7 +23636,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Km" = ( +"aKm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -23587,7 +23649,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Kn" = ( +"aKn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -23600,7 +23662,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ko" = ( +"aKo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9; pixel_y = 0 @@ -23611,17 +23673,17 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Kp" = ( +"aKp" = ( /obj/effect/landmark/start{ name = "Medical Doctor" }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Kq" = ( +"aKq" = ( /obj/machinery/camera/network/security, /turf/simulated/mineral/floor/vacuum, /area/security/nuke_storage) -"Kr" = ( +"aKr" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -23642,7 +23704,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"Ks" = ( +"aKs" = ( /obj/structure/table/glass, /obj/item/bodybag/cryobag, /obj/item/device/healthanalyzer, @@ -23654,7 +23716,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Kt" = ( +"aKt" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -23677,7 +23739,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ku" = ( +"aKu" = ( /obj/structure/flora/pottedplant/stoutbush, /obj/effect/floor_decal/borderfloorwhite{ dir = 10 @@ -23693,7 +23755,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"Kv" = ( +"aKv" = ( /obj/structure/closet/secure_closet/CMO, /obj/item/weapon/storage/belt/medical, /obj/item/device/flashlight/pen, @@ -23710,14 +23772,14 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"Kw" = ( +"aKw" = ( /obj/structure/bed/chair/comfy/brown{ dir = 1 }, /obj/machinery/light, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"Kx" = ( +"aKx" = ( /obj/structure/bed/psych{ name = "couch" }, @@ -23727,14 +23789,14 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"Ky" = ( +"aKy" = ( /obj/structure/table/glass, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"Kz" = ( +"aKz" = ( /obj/structure/railing{ dir = 8 }, @@ -23744,7 +23806,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"KA" = ( +"aKA" = ( /obj/structure/table/glass, /obj/item/weapon/storage/box/gloves{ pixel_x = 4; @@ -23758,7 +23820,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"KB" = ( +"aKB" = ( /obj/machinery/computer/arcade{ dir = 8 }, @@ -23772,7 +23834,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"KC" = ( +"aKC" = ( /obj/structure/dogbed{ desc = "Runtime's bed. Some of her disappointment seems to have rubbed off on it."; name = "cat bed" @@ -23789,7 +23851,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"KD" = ( +"aKD" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 2 }, @@ -23810,10 +23872,10 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"KE" = ( +"aKE" = ( /turf/simulated/wall, /area/crew_quarters/medical_restroom) -"KF" = ( +"aKF" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_medical{ name = "Medbay Equipment"; @@ -23821,11 +23883,11 @@ }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"KG" = ( +"aKG" = ( /obj/structure/sign/nosmoking_1, /turf/simulated/wall, /area/medical/medbay_primary_storage) -"KH" = ( +"aKH" = ( /obj/structure/filingcabinet/chestdrawer{ name = "Scan Records" }, @@ -23841,7 +23903,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"KI" = ( +"aKI" = ( /obj/machinery/hologram/holopad, /obj/structure/cable/green{ d1 = 1; @@ -23850,14 +23912,14 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"KJ" = ( +"aKJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/steeldecal/steel_decals10, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"KK" = ( +"aKK" = ( /obj/machinery/body_scanconsole{ dir = 4 }, @@ -23866,7 +23928,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"KL" = ( +"aKL" = ( /obj/machinery/bodyscanner{ dir = 4 }, @@ -23875,7 +23937,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"KM" = ( +"aKM" = ( /obj/structure/table/glass, /obj/random/medical, /obj/effect/floor_decal/steeldecal/steel_decals10{ @@ -23883,11 +23945,11 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"KN" = ( +"aKN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"KO" = ( +"aKO" = ( /obj/structure/sink{ dir = 4; icon_state = "sink"; @@ -23902,7 +23964,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"KP" = ( +"aKP" = ( /obj/structure/medical_stand, /obj/effect/floor_decal/borderfloorwhite{ dir = 8 @@ -23912,7 +23974,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"KQ" = ( +"aKQ" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -23929,7 +23991,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"KR" = ( +"aKR" = ( /obj/machinery/alarm{ dir = 8; icon_state = "alarm0"; @@ -23940,7 +24002,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"KS" = ( +"aKS" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -23951,7 +24013,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"KT" = ( +"aKT" = ( /obj/structure/table/steel_reinforced, /obj/item/weapon/folder/yellow, /obj/item/weapon/pen{ @@ -23968,21 +24030,24 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/quartermaster/delivery) -"KU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +"aKU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"KV" = ( +"aKV" = ( /obj/structure/undies_wardrobe, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"KW" = ( +"aKW" = ( /turf/simulated/wall, /area/crew_quarters/medbreak) -"KX" = ( +"aKX" = ( /obj/structure/bookcase/manuals/medical, /obj/item/weapon/book/manual/medical_diagnostics_manual{ pixel_y = 7 @@ -23991,7 +24056,7 @@ /obj/item/weapon/book/manual/resleeving, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"KY" = ( +"aKY" = ( /obj/structure/flora/skeleton{ name = "\proper Wilhelm" }, @@ -24008,7 +24073,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"KZ" = ( +"aKZ" = ( /obj/machinery/washing_machine, /obj/machinery/alarm{ pixel_y = 22 @@ -24017,26 +24082,23 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"La" = ( +"aLa" = ( /obj/machinery/washing_machine, /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Lb" = ( +"aLb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"Lc" = ( +"aLc" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 4 @@ -24046,11 +24108,11 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Ld" = ( +"aLd" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Le" = ( +"aLe" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 8 }, @@ -24069,23 +24131,23 @@ /obj/machinery/disposal, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Lf" = ( +"aLf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9; pixel_y = 0 }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Lg" = ( +"aLg" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/crew_quarters/medbreak) -"Lh" = ( +"aLh" = ( /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Li" = ( +"aLi" = ( /obj/structure/table/glass, /obj/item/weapon/storage/pill_bottle/tramadol, /obj/item/weapon/storage/pill_bottle/antitox, @@ -24098,7 +24160,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Lj" = ( +"aLj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, @@ -24107,7 +24169,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Lk" = ( +"aLk" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -24119,7 +24181,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ll" = ( +"aLl" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -24131,7 +24193,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Lm" = ( +"aLm" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -24143,7 +24205,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ln" = ( +"aLn" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -24155,19 +24217,19 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Lo" = ( +"aLo" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Lp" = ( +"aLp" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/medical/medbay_primary_storage) -"Lq" = ( +"aLq" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -24188,7 +24250,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Lr" = ( +"aLr" = ( /obj/machinery/vending/fitness{ dir = 4 }, @@ -24202,7 +24264,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Ls" = ( +"aLs" = ( /obj/structure/disposalpipe/segment{ dir = 2; icon_state = "pipe-c" @@ -24215,7 +24277,7 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"Lt" = ( +"aLt" = ( /obj/structure/closet/emcloset, /obj/effect/floor_decal/borderfloorwhite{ dir = 5 @@ -24225,17 +24287,17 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"Lu" = ( +"aLu" = ( /turf/simulated/wall, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"Lv" = ( +"aLv" = ( /obj/structure/railing, /obj/structure/closet, /obj/random/maintenance/medical, /obj/random/maintenance/medical, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Lw" = ( +"aLw" = ( /obj/structure/railing, /obj/structure/table/rack{ dir = 8; @@ -24246,11 +24308,11 @@ /obj/random/maintenance/cargo, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Lx" = ( +"aLx" = ( /obj/structure/railing, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Ly" = ( +"aLy" = ( /obj/structure/railing{ icon_state = "railing0"; dir = 4 @@ -24261,7 +24323,7 @@ /obj/random/maintenance/cargo, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Lz" = ( +"aLz" = ( /obj/structure/railing{ dir = 8 }, @@ -24270,31 +24332,31 @@ /obj/random/maintenance/cargo, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"LA" = ( +"aLA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/structure/disposalpipe/segment{ +/obj/effect/floor_decal/steeldecal/steel_decals6, +/obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 4 }, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) -"LB" = ( +"aLB" = ( /obj/structure/sign/nosmoking_1, /turf/simulated/wall/r_wall, /area/medical/chemistry) -"LC" = ( +"aLC" = ( /obj/machinery/vending/snack{ dir = 4 }, /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"LD" = ( +"aLD" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -24303,17 +24365,17 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"LE" = ( +"aLE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"LF" = ( +"aLF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"LG" = ( +"aLG" = ( /obj/structure/table/glass, /obj/random/medical, /obj/effect/floor_decal/borderfloorwhite{ @@ -24330,7 +24392,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"LH" = ( +"aLH" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -24341,7 +24403,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"LI" = ( +"aLI" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -24350,20 +24412,20 @@ /obj/effect/floor_decal/steeldecal/steel_decals10, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"LJ" = ( +"aLJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 5 }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"LK" = ( +"aLK" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"LL" = ( +"aLL" = ( /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -24377,7 +24439,7 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"LM" = ( +"aLM" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24387,19 +24449,19 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"LN" = ( +"aLN" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 5 }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"LO" = ( +"aLO" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 1 }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"LP" = ( +"aLP" = ( /obj/machinery/alarm{ dir = 1; icon_state = "alarm0"; @@ -24414,7 +24476,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"LQ" = ( +"aLQ" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24424,7 +24486,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"LR" = ( +"aLR" = ( /obj/machinery/vending/wallmed1{ pixel_y = -30 }, @@ -24437,18 +24499,18 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"LS" = ( +"aLS" = ( /obj/machinery/camera/network/security, /mob/living/simple_mob/animal/sif/shantak/scruffy, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"LT" = ( +"aLT" = ( /obj/effect/landmark/start{ name = "Paramedic" }, /turf/simulated/floor/tiled/white, /area/medical/medbay_primary_storage) -"LU" = ( +"aLU" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 1 }, @@ -24468,7 +24530,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"LV" = ( +"aLV" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24493,7 +24555,7 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"LW" = ( +"aLW" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24518,7 +24580,7 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"LX" = ( +"aLX" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/maintenance/medical, /obj/machinery/door/blast/shutters{ @@ -24539,7 +24601,7 @@ }, /turf/simulated/floor/plating, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"LY" = ( +"aLY" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24550,7 +24612,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"LZ" = ( +"aLZ" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24562,7 +24624,7 @@ /obj/random/junk, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Ma" = ( +"aMa" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -24574,7 +24636,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Mb" = ( +"aMb" = ( /obj/structure/railing{ dir = 8 }, @@ -24583,29 +24645,7 @@ /obj/random/maintenance/cargo, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Mc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/quartermaster/warehouse) -"Md" = ( -/obj/machinery/door/airlock/medical{ - name = "Rest Room" - }, -/turf/simulated/floor/tiled/white, -/area/crew_quarters/medical_restroom) -"Me" = ( +"aMc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -24618,18 +24658,30 @@ name = "Warehouse Shutters" }, /obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/warehouse) +"aMd" = ( +/obj/machinery/door/airlock/medical{ + name = "Rest Room" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/medical_restroom) +"aMe" = ( /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/effect/floor_decal/steeldecal/steel_decals6{ + dir = 1 }, -/turf/simulated/floor/tiled/steel_grid, -/area/quartermaster/warehouse) -"Mf" = ( +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aMf" = ( /obj/machinery/light/small{ dir = 8 }, @@ -24638,25 +24690,10 @@ }, /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/medical_restroom) -"Mg" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/quartermaster/storage) -"Mh" = ( +"aMg" = ( +/turf/simulated/floor/tiled/steel, +/area/quartermaster/warehouse) +"aMh" = ( /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -24676,7 +24713,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Mi" = ( +"aMi" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24690,7 +24727,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Mj" = ( +"aMj" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24703,7 +24740,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Mk" = ( +"aMk" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24719,7 +24756,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Ml" = ( +"aMl" = ( /obj/machinery/hologram/holopad, /obj/structure/cable/green{ d1 = 4; @@ -24736,7 +24773,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Mm" = ( +"aMm" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24756,7 +24793,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Mn" = ( +"aMn" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24779,7 +24816,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals4, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Mo" = ( +"aMo" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_medical{ name = "Staff Room"; @@ -24802,7 +24839,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Mp" = ( +"aMp" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24827,7 +24864,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Mq" = ( +"aMq" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24845,7 +24882,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Mr" = ( +"aMr" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24868,7 +24905,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ms" = ( +"aMs" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24895,7 +24932,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Mt" = ( +"aMt" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24909,7 +24946,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Mu" = ( +"aMu" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -24923,7 +24960,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Mv" = ( +"aMv" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -24935,7 +24972,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Mw" = ( +"aMw" = ( /obj/structure/flora/pottedplant/stoutbush, /obj/machinery/light{ dir = 4 @@ -24954,7 +24991,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Mx" = ( +"aMx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/light{ dir = 8; @@ -24971,7 +25008,7 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"My" = ( +"aMy" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -24993,7 +25030,7 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"Mz" = ( +"aMz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -25005,7 +25042,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"MA" = ( +"aMA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, @@ -25020,7 +25057,7 @@ /obj/effect/floor_decal/industrial/warning/corner, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"MB" = ( +"aMB" = ( /obj/machinery/light{ dir = 8; icon_state = "tube1" @@ -25036,7 +25073,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MC" = ( +"aMC" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -25047,22 +25084,21 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MD" = ( -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/steel, -/area/quartermaster/warehouse) -"ME" = ( +"aMD" = ( +/turf/simulated/wall, +/area/quartermaster/belterdock/refinery) +"aME" = ( /obj/structure/table/glass, /obj/item/weapon/deck/cards, /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MF" = ( +"aMF" = ( /obj/structure/table/glass, /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MG" = ( +"aMG" = ( /obj/structure/bed/chair{ dir = 8 }, @@ -25072,12 +25108,12 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MH" = ( +"aMH" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MI" = ( +"aMI" = ( /obj/structure/sink{ dir = 4; icon_state = "sink"; @@ -25087,7 +25123,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MJ" = ( +"aMJ" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -25097,10 +25133,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"MK" = ( +"aMK" = ( /turf/simulated/open, /area/medical/sleeper) -"ML" = ( +"aML" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/floor_decal/borderfloorwhite{ dir = 8 @@ -25115,7 +25151,7 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"MM" = ( +"aMM" = ( /obj/machinery/power/apc{ dir = 4; name = "east bump"; @@ -25131,19 +25167,10 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"MN" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/conveyor_switch{ - id = "gloriouscargopipeline"; - name = "Mining Supply conveyor switch"; - pixel_x = 0; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/steel, -/area/quartermaster/warehouse) -"MO" = ( +"aMN" = ( +/turf/simulated/wall, +/area/quartermaster/belterdock/gear) +"aMO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, @@ -25152,7 +25179,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"MP" = ( +"aMP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -25171,7 +25198,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"MQ" = ( +"aMQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -25186,7 +25213,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"MR" = ( +"aMR" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/medical{ name = "Rest Room" @@ -25210,7 +25237,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MS" = ( +"aMS" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -25232,7 +25259,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MT" = ( +"aMT" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -25248,7 +25275,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MU" = ( +"aMU" = ( /obj/structure/bed/chair{ dir = 4 }, @@ -25258,19 +25285,19 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MV" = ( +"aMV" = ( /obj/structure/table/glass, /obj/machinery/recharger, /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MW" = ( +"aMW" = ( /obj/structure/table/glass, /obj/item/device/universal_translator, /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MX" = ( +"aMX" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -25281,7 +25308,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"MY" = ( +"aMY" = ( /obj/structure/table/standard, /obj/machinery/microwave, /obj/machinery/light{ @@ -25290,7 +25317,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"MZ" = ( +"aMZ" = ( /obj/structure/flora/pottedplant/stoutbush, /obj/machinery/light, /obj/effect/floor_decal/borderfloorwhite{ @@ -25301,7 +25328,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Na" = ( +"aNa" = ( /obj/machinery/vending/wallmed1{ pixel_y = -30 }, @@ -25309,12 +25336,12 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Nb" = ( +"aNb" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Nc" = ( +"aNc" = ( /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 8 }, @@ -25343,7 +25370,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Nd" = ( +"aNd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -25355,7 +25382,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ne" = ( +"aNe" = ( /obj/structure/closet/crate/freezer, /obj/item/weapon/virusdish/random, /obj/item/weapon/virusdish/random, @@ -25366,7 +25393,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Nf" = ( +"aNf" = ( /obj/structure/bed/chair{ dir = 1 }, @@ -25374,7 +25401,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ng" = ( +"aNg" = ( /obj/structure/bed/chair{ dir = 1 }, @@ -25383,7 +25410,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Nh" = ( +"aNh" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 5; pixel_y = -32 @@ -25395,7 +25422,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ni" = ( +"aNi" = ( /obj/effect/floor_decal/borderfloorwhite/corner{ dir = 8 }, @@ -25404,7 +25431,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Nj" = ( +"aNj" = ( /obj/machinery/alarm{ dir = 4; icon_state = "alarm0"; @@ -25427,7 +25454,7 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"Nk" = ( +"aNk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -25443,10 +25470,10 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"Nl" = ( +"aNl" = ( /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Nm" = ( +"aNm" = ( /obj/structure/table/standard, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -25454,17 +25481,15 @@ /obj/machinery/light/small, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Nn" = ( -/obj/structure/plasticflaps, -/obj/structure/disposalpipe/trunk{ +"aNn" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/disposaloutlet{ dir = 4 }, -/obj/machinery/disposal/deliveryChute{ - dir = 4 - }, -/turf/simulated/floor, -/area/quartermaster/warehouse) -"No" = ( +/obj/structure/railing, +/turf/simulated/floor/tiled/dark, +/area/quartermaster/belterdock/refinery) +"aNo" = ( /obj/structure/table/standard, /obj/item/weapon/storage/box/cups, /obj/effect/floor_decal/corner/paleblue/diagonal, @@ -25474,7 +25499,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Np" = ( +"aNp" = ( /obj/structure/closet/secure_closet/detective, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/gun/energy/taser, @@ -25491,7 +25516,7 @@ }, /turf/simulated/floor/carpet, /area/security/detectives_office) -"Nq" = ( +"aNq" = ( /obj/structure/table/standard, /obj/item/weapon/storage/box/donkpockets, /obj/machinery/firealarm{ @@ -25501,10 +25526,10 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Nr" = ( +"aNr" = ( /turf/simulated/wall/r_wall, /area/medical/virologyaccess) -"Ns" = ( +"aNs" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/medical{ autoclose = 0; @@ -25541,11 +25566,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) -"Nt" = ( +"aNt" = ( /obj/structure/sign/department/virology, /turf/simulated/wall/r_wall, /area/medical/virologyaccess) -"Nu" = ( +"aNu" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 8 }, @@ -25571,7 +25596,7 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"Nv" = ( +"aNv" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 4 }, @@ -25586,7 +25611,7 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"Nw" = ( +"aNw" = ( /obj/machinery/hologram/holopad, /obj/structure/cable/cyan{ d1 = 1; @@ -25603,14 +25628,22 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ai_core_foyer) -"Nx" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +"aNx" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/vehicle/train/trolley{ + dir = 8 }, -/turf/simulated/floor/tiled/steel, -/area/quartermaster/warehouse) -"Ny" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aNy" = ( /obj/structure/table/standard, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -25623,12 +25656,12 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Nz" = ( +"aNz" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"NA" = ( +"aNA" = ( /obj/item/device/radio/intercom{ dir = 4; pixel_x = 24 @@ -25638,7 +25671,7 @@ /obj/item/weapon/storage/mre/random, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"NB" = ( +"aNB" = ( /obj/machinery/shower{ dir = 4; icon_state = "shower"; @@ -25652,7 +25685,7 @@ /obj/structure/curtain/open/shower/medical, /turf/simulated/floor/tiled/steel, /area/medical/virologyaccess) -"NC" = ( +"aNC" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -25670,7 +25703,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) -"ND" = ( +"aND" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -25678,7 +25711,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"NE" = ( +"aNE" = ( /obj/effect/floor_decal/borderfloor{ dir = 4; pixel_x = -16 @@ -25714,7 +25747,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"NF" = ( +"aNF" = ( /obj/machinery/door/airlock/glass_external, /obj/structure/cable/green{ d1 = 1; @@ -25725,18 +25758,18 @@ /obj/effect/map_helper/airlock/door/simple, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"NG" = ( +"aNG" = ( /obj/machinery/door/airlock/glass_external, /obj/effect/floor_decal/industrial/hatch/yellow, /obj/effect/map_helper/airlock/door/simple, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"NH" = ( +"aNH" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"NI" = ( +"aNI" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/camera/network/security{ @@ -25745,13 +25778,13 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"NJ" = ( +"aNJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"NK" = ( +"aNK" = ( /obj/structure/closet/l3closet/virology, /obj/machinery/alarm{ dir = 8; @@ -25766,10 +25799,10 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) -"NL" = ( +"aNL" = ( /turf/simulated/wall/rshull, /area/shuttle/medivac/engines) -"NM" = ( +"aNM" = ( /obj/machinery/door/airlock/glass_external, /obj/machinery/airlock_sensor/airlock_exterior/shuttle{ dir = 5; @@ -25784,7 +25817,7 @@ /obj/effect/map_helper/airlock/door/ext_door, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/general) -"NN" = ( +"aNN" = ( /obj/structure/sink{ dir = 8; icon_state = "sink"; @@ -25793,11 +25826,11 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) -"NO" = ( +"aNO" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"NP" = ( +"aNP" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -25814,7 +25847,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) -"NQ" = ( +"aNQ" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -25838,7 +25871,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) -"NR" = ( +"aNR" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 }, @@ -25847,7 +25880,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"NS" = ( +"aNS" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/atmospherics/portables_connector{ dir = 4 @@ -25855,7 +25888,7 @@ /obj/effect/floor_decal/industrial/outline/grey, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"NT" = ( +"aNT" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume, /obj/machinery/embedded_controller/radio/airlock/docking_port{ dir = 4; @@ -25879,15 +25912,24 @@ /obj/effect/map_helper/airlock/atmos/chamber_pump, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/general) -"NU" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "propulsion_l" +"aNU" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/floor/tiled/asteroid_steel/airless, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/belter) -"NV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aNV" = ( /obj/machinery/sleeper{ dir = 4 }, @@ -25899,10 +25941,10 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"NW" = ( +"aNW" = ( /turf/simulated/wall/r_wall, /area/medical/virology) -"NX" = ( +"aNX" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/medical{ autoclose = 0; @@ -25923,7 +25965,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/yellow, /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) -"NY" = ( +"aNY" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 @@ -25948,13 +25990,13 @@ /obj/machinery/camera/network/security, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"NZ" = ( +"aNZ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/yellow{ dir = 1 }, /turf/simulated/wall/rshull, /area/shuttle/medivac/engines) -"Oa" = ( +"aOa" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/structure/cable{ d1 = 1; @@ -25963,7 +26005,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"Ob" = ( +"aOb" = ( /obj/machinery/power/terminal{ icon_state = "term"; dir = 1 @@ -25973,14 +26015,23 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"Oc" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8 +"aOc" = ( +/obj/machinery/door/airlock/glass_mining{ + name = "Belter Shuttle"; + req_access = list(31); + req_one_access = list() }, -/turf/simulated/floor/tiled/asteroid_steel/airless, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/belter) -"Od" = ( +/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, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"aOd" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/structure/cable/green{ d1 = 1; @@ -25991,21 +26042,32 @@ /obj/effect/map_helper/airlock/door/int_door, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/general) -"Oe" = ( +"aOe" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/machinery/door/airlock/glass_external, /obj/effect/map_helper/airlock/door/int_door, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/general) -"Of" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "propulsion_r" +"aOf" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/floor/tiled/asteroid_steel/airless, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/belter) -"Og" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"aOg" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 8 }, @@ -26021,27 +26083,44 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"Oh" = ( +"aOh" = ( /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"Oj" = ( +"aOi" = ( +/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 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"aOj" = ( /obj/structure/bed/padded, /obj/machinery/alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Ok" = ( +"aOk" = ( /obj/structure/closet/secure_closet/personal/patient, /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Ol" = ( +"aOl" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor/plating, /area/medical/virology) -"Om" = ( +"aOm" = ( /obj/structure/table/glass, /obj/item/weapon/hand_labeler, /obj/item/device/radio{ @@ -26071,7 +26150,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"On" = ( +"aOn" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -26088,13 +26167,13 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Oo" = ( +"aOo" = ( /obj/structure/sink{ pixel_y = 26 }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Op" = ( +"aOp" = ( /obj/machinery/disease2/incubator, /obj/item/device/radio/intercom{ dir = 1; @@ -26103,7 +26182,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Oq" = ( +"aOq" = ( /obj/machinery/computer/diseasesplicer, /obj/item/device/radio/intercom/department/medbay{ dir = 1; @@ -26111,7 +26190,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Or" = ( +"aOr" = ( /obj/structure/closet/l3closet/virology, /obj/machinery/access_button{ command = "cycle_interior"; @@ -26133,7 +26212,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) -"Os" = ( +"aOs" = ( /obj/machinery/power/apc{ cell_type = /obj/item/weapon/cell/super; dir = 8; @@ -26156,7 +26235,7 @@ /obj/item/weapon/tank/phoron, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"Ot" = ( +"aOt" = ( /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -26172,23 +26251,46 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"Ov" = ( +"aOu" = ( +/obj/machinery/firealarm{ + dir = 4; + layer = 3.3; + pixel_x = 26 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"aOv" = ( /obj/effect/floor_decal/techfloor{ dir = 4 }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"Ox" = ( +"aOw" = ( +/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/atmospherics/pipe/simple/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera/network/mining{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"aOx" = ( /turf/simulated/open, /area/tether/exploration) -"Oy" = ( +"aOy" = ( /obj/machinery/light{ dir = 8; icon_state = "tube1" }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Oz" = ( +"aOz" = ( /obj/structure/table/rack/shelf, /obj/item/weapon/storage/backpack/parachute{ pixel_x = -4; @@ -26208,7 +26310,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"OA" = ( +"aOA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 5 }, @@ -26217,7 +26319,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"OB" = ( +"aOB" = ( /obj/machinery/door/window/eastright{ name = "Virology Isolation Room One"; req_one_access = list(39) @@ -26230,7 +26332,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"OC" = ( +"aOC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 4 }, @@ -26239,7 +26341,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"OD" = ( +"aOD" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -26254,10 +26356,10 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"OE" = ( +"aOE" = ( /turf/simulated/floor/tiled/white, /area/medical/virology) -"OF" = ( +"aOF" = ( /obj/structure/bed/chair/office/dark{ dir = 1 }, @@ -26266,7 +26368,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"OG" = ( +"aOG" = ( /obj/structure/table/glass, /obj/machinery/computer/med_data/laptop{ dir = 8; @@ -26283,19 +26385,19 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"OH" = ( +"aOH" = ( /obj/machinery/atmospherics/binary/pump{ dir = 1 }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"OI" = ( +"aOI" = ( /obj/structure/cable{ icon_state = "1-4" }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"OJ" = ( +"aOJ" = ( /obj/machinery/door/airlock/multi_tile/metal/mait{ dir = 2; icon_state = "door_closed"; @@ -26307,13 +26409,16 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/engines) -"OK" = ( +"aOK" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"OM" = ( +"aOL" = ( +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"aOM" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/blue/border, /obj/effect/floor_decal/borderfloorwhite/corner2, @@ -26323,7 +26428,7 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"ON" = ( +"aON" = ( /obj/effect/floor_decal/borderfloorwhite/corner{ dir = 8 }, @@ -26338,7 +26443,17 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"OP" = ( +"aOO" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/machinery/camera/network/mining{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock) +"aOP" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, /obj/item/device/radio/intercom/department/medbay{ dir = 4; @@ -26354,7 +26469,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"OQ" = ( +"aOQ" = ( /obj/structure/disposalpipe/trunk{ dir = 1 }, @@ -26365,7 +26480,7 @@ }, /turf/simulated/floor/wood, /area/security/breakroom) -"OR" = ( +"aOR" = ( /obj/structure/table/glass, /obj/item/weapon/storage/fancy/vials, /obj/item/weapon/reagent_containers/syringe/antiviral, @@ -26377,7 +26492,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"OS" = ( +"aOS" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -26390,15 +26505,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden/yellow, /turf/simulated/floor/tiled/white, /area/medical/virology) -"OT" = ( +"aOT" = ( /obj/machinery/disease2/isolator, /turf/simulated/floor/tiled/white, /area/medical/virology) -"OU" = ( +"aOU" = ( /obj/machinery/computer/centrifuge, /turf/simulated/floor/tiled/white, /area/medical/virology) -"OV" = ( +"aOV" = ( /obj/structure/table/glass, /obj/item/weapon/paper_bin{ pixel_x = 1; @@ -26423,7 +26538,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"OW" = ( +"aOW" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/camera/network/security{ @@ -26432,7 +26547,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"OX" = ( +"aOX" = ( /obj/effect/floor_decal/techfloor{ dir = 8 }, @@ -26442,20 +26557,20 @@ /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"OY" = ( +"aOY" = ( /obj/effect/landmark{ name = "morphspawn" }, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"OZ" = ( +"aOZ" = ( /obj/effect/floor_decal/industrial/warning, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"Pa" = ( +"aPa" = ( /obj/item/weapon/stool/padded, /obj/structure/cable/green{ d1 = 1; @@ -26467,11 +26582,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/yellow, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Pb" = ( +"aPb" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Pc" = ( +"aPc" = ( /obj/machinery/ai_slipper{ icon_state = "motion0" }, @@ -26480,7 +26595,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"Pd" = ( +"aPd" = ( /obj/structure/table/glass, /obj/item/device/antibody_scanner{ pixel_x = 2; @@ -26493,7 +26608,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Pe" = ( +"aPe" = ( /obj/structure/cable/cyan{ d1 = 1; d2 = 2; @@ -26507,7 +26622,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ai_core_foyer) -"Pf" = ( +"aPf" = ( /obj/structure/table/glass, /obj/item/weapon/storage/box/syringes{ pixel_x = 4; @@ -26519,7 +26634,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Pg" = ( +"aPg" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -26530,7 +26645,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/yellow, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Ph" = ( +"aPh" = ( /obj/machinery/ai_slipper{ icon_state = "motion0" }, @@ -26539,7 +26654,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"Pi" = ( +"aPi" = ( /obj/structure/disposalpipe/segment{ dir = 4; icon_state = "pipe-c" @@ -26549,7 +26664,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Pj" = ( +"aPj" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -26558,7 +26673,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Pk" = ( +"aPk" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -26574,7 +26689,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"Pl" = ( +"aPl" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -26584,7 +26699,7 @@ /obj/effect/floor_decal/industrial/warning/corner, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Pm" = ( +"aPm" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ dir = 8 @@ -26598,7 +26713,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Pn" = ( +"aPn" = ( /obj/machinery/door/window/eastright{ name = "Virology Isolation Room Two"; req_one_access = list(39) @@ -26611,7 +26726,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Po" = ( +"aPo" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -26632,7 +26747,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Pp" = ( +"aPp" = ( /obj/structure/cable/green{ d1 = 2; d2 = 8; @@ -26651,14 +26766,14 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Pq" = ( +"aPq" = ( /obj/machinery/camera/network/security{ icon_state = "camera"; dir = 10 }, /turf/simulated/open, /area/security/hallway) -"Pr" = ( +"aPr" = ( /obj/effect/floor_decal/techfloor, /obj/machinery/camera/network/command{ icon_state = "camera"; @@ -26666,7 +26781,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ai_core_foyer) -"Ps" = ( +"aPs" = ( /obj/machinery/atmospherics/tvalve/bypass, /obj/machinery/light{ dir = 4 @@ -26676,7 +26791,7 @@ }, /turf/simulated/floor/plating, /area/medical/virology) -"Pt" = ( +"aPt" = ( /obj/structure/bed/chair{ dir = 1 }, @@ -26688,7 +26803,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Pu" = ( +"aPu" = ( /obj/structure/table/glass, /obj/item/weapon/storage/box/monkeycubes, /obj/machinery/power/apc{ @@ -26699,7 +26814,7 @@ /obj/structure/cable/green, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Pv" = ( +"aPv" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -26716,7 +26831,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Pw" = ( +"aPw" = ( /obj/machinery/disease2/diseaseanalyser, /obj/machinery/alarm{ dir = 8; @@ -26726,20 +26841,20 @@ /obj/machinery/camera/network/medbay, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Px" = ( +"aPx" = ( /obj/machinery/camera/network/exploration{ icon_state = "camera"; dir = 5 }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"Py" = ( +"aPy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/black{ dir = 4 }, /turf/simulated/wall/r_wall, /area/medical/virology) -"Pz" = ( +"aPz" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 8; external_pressure_bound = 140; @@ -26751,7 +26866,7 @@ }, /turf/simulated/floor/airless, /area/medical/virology) -"PA" = ( +"aPA" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/structure/closet/secure_closet/freezer/money, /obj/item/weapon/storage/secure/briefcase/money{ @@ -26762,17 +26877,17 @@ /obj/item/weapon/storage/mrebag/pill/sleevingcure, /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) -"PB" = ( +"aPB" = ( /turf/simulated/wall/r_wall, /area/medical/virologyisolation) -"PC" = ( +"aPC" = ( /obj/effect/floor_decal/industrial/warning, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"PD" = ( +"aPD" = ( /obj/machinery/smartfridge/secure/virology, /obj/machinery/atmospherics/pipe/simple/hidden/black{ dir = 5 @@ -26783,7 +26898,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"PE" = ( +"aPE" = ( /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -26805,7 +26920,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PF" = ( +"aPF" = ( /obj/effect/floor_decal/techfloor{ dir = 4 }, @@ -26816,7 +26931,7 @@ /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"PG" = ( +"aPG" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -26827,7 +26942,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PH" = ( +"aPH" = ( /obj/structure/sink{ pixel_y = 26 }, @@ -26841,7 +26956,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PI" = ( +"aPI" = ( /obj/structure/reagent_dispensers/water_cooler/full{ dir = 4 }, @@ -26854,7 +26969,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PJ" = ( +"aPJ" = ( /obj/structure/bed/padded, /obj/item/weapon/bedsheet/green, /obj/machinery/power/apc{ @@ -26875,13 +26990,13 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PK" = ( +"aPK" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/wall/r_wall, /area/medical/virologyisolation) -"PL" = ( +"aPL" = ( /obj/structure/disposalpipe/trunk{ dir = 8 }, @@ -26890,7 +27005,7 @@ }, /turf/simulated/floor/airless, /area/medical/virologyisolation) -"PM" = ( +"aPM" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ @@ -26898,7 +27013,7 @@ }, /turf/simulated/floor/plating, /area/medical/virologyisolation) -"PN" = ( +"aPN" = ( /obj/structure/table/standard, /obj/item/weapon/soap/nanotrasen, /obj/item/weapon/storage/box/cups, @@ -26907,7 +27022,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PO" = ( +"aPO" = ( /obj/item/weapon/stool/padded, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ @@ -26915,7 +27030,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PP" = ( +"aPP" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -26925,10 +27040,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor, /area/tether/exploration) -"PQ" = ( +"aPQ" = ( /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PR" = ( +"aPR" = ( /obj/structure/bed/padded, /obj/item/weapon/bedsheet/green, /obj/machinery/firealarm{ @@ -26937,21 +27052,21 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PS" = ( +"aPS" = ( /obj/machinery/vending/snack{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PT" = ( +"aPT" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PU" = ( +"aPU" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PV" = ( +"aPV" = ( /obj/structure/bed/padded, /obj/item/weapon/bedsheet/green, /obj/item/device/radio/intercom{ @@ -26960,7 +27075,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PW" = ( +"aPW" = ( /obj/machinery/disposal, /obj/machinery/alarm{ dir = 1; @@ -26980,18 +27095,18 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PX" = ( +"aPX" = ( /obj/structure/disposalpipe/segment{ dir = 8; icon_state = "pipe-c" }, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PY" = ( +"aPY" = ( /obj/item/weapon/stool/padded, /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) -"PZ" = ( +"aPZ" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -27005,20 +27120,20 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"Qa" = ( +"aQa" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced, /turf/simulated/floor/plating, /area/medical/virologyisolation) -"Qb" = ( +"aQb" = ( /obj/machinery/camera/network/exploration{ icon_state = "camera"; dir = 9 }, /turf/simulated/open, /area/tether/exploration) -"Qc" = ( +"aQc" = ( /obj/structure/table/standard, /obj/machinery/light_switch{ pixel_x = -12; @@ -27037,14 +27152,14 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"Qd" = ( +"aQd" = ( /obj/structure/table/standard, /obj/machinery/photocopier/faxmachine{ department = "Quartermaster-Office" }, /turf/simulated/floor/wood, /area/quartermaster/qm) -"Qe" = ( +"aQe" = ( /obj/machinery/conveyor{ dir = 1; id = "QMLoad" @@ -27055,13 +27170,13 @@ }, /turf/simulated/floor, /area/quartermaster/storage) -"Qf" = ( +"aQf" = ( /obj/structure/toilet{ pixel_y = 15 }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Qg" = ( +"aQg" = ( /obj/machinery/light/small{ dir = 1 }, @@ -27070,22 +27185,16 @@ }, /turf/simulated/floor/tiled, /area/maintenance/station/cargo) -"Qh" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/vehicle/train/trolley{ - dir = 1 +"aQh" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "miningops" }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 - }, -/turf/simulated/floor/tiled, -/area/quartermaster/storage) -"Qi" = ( +/obj/structure/plasticflaps, +/obj/structure/railing, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aQi" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -27099,7 +27208,7 @@ /obj/machinery/camera/network/tether, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Qj" = ( +"aQj" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/paleblue/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -27113,7 +27222,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Qk" = ( +"aQk" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -27127,14 +27236,14 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ql" = ( +"aQl" = ( /obj/machinery/camera/network/security{ icon_state = "camera"; dir = 10 }, /turf/simulated/open, /area/security/brig) -"Qm" = ( +"aQm" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -27148,7 +27257,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"Qn" = ( +"aQn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -27158,7 +27267,7 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"Qo" = ( +"aQo" = ( /obj/item/weapon/storage/secure/safe{ pixel_x = -28 }, @@ -27171,13 +27280,13 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Qp" = ( +"aQp" = ( /obj/effect/landmark{ name = "morphspawn" }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Qq" = ( +"aQq" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/green{ d1 = 1; @@ -27188,17 +27297,18 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor, /area/maintenance/station/cargo) -"Qr" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +"aQr" = ( +/obj/machinery/mineral/input, +/obj/structure/sign/warning/moving_parts{ + pixel_y = 32 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "miningops" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, -/area/quartermaster/storage) -"Qs" = ( +/area/quartermaster/belterdock/refinery) +"aQs" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_medical{ name = "Virology Laboratory"; @@ -27214,16 +27324,16 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/white, /area/medical/virology) -"Qt" = ( +"aQt" = ( /turf/simulated/wall, /area/tether/exploration) -"Qu" = ( +"aQu" = ( /obj/structure/railing, /obj/structure/closet, /obj/random/maintenance/medical, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Qv" = ( +"aQv" = ( /obj/structure/railing, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, @@ -27231,7 +27341,7 @@ /obj/random/maintenance/clean, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Qw" = ( +"aQw" = ( /obj/effect/floor_decal/techfloor{ dir = 8 }, @@ -27240,14 +27350,14 @@ }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"Qx" = ( +"aQx" = ( /obj/machinery/light/small{ icon_state = "bulb1"; dir = 1 }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Qy" = ( +"aQy" = ( /obj/structure/table/standard, /obj/machinery/camera/network/cargo{ dir = 1; @@ -27256,27 +27366,15 @@ /obj/machinery/cell_charger, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Qz" = ( +"aQz" = ( /obj/structure/railing, /turf/simulated/floor, /area/maintenance/cargo) -"QA" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/quartermaster/storage) -"QB" = ( +"aQA" = ( +/obj/machinery/mineral/unloading_machine, +/turf/simulated/floor/tiled/dark, +/area/quartermaster/belterdock/refinery) +"aQB" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -27288,15 +27386,15 @@ }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"QC" = ( +"aQC" = ( /obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"QD" = ( +"aQD" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"QE" = ( +"aQE" = ( /obj/effect/landmark/start{ name = "Medical Doctor" }, @@ -27306,7 +27404,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"QF" = ( +"aQF" = ( /obj/machinery/alarm{ dir = 8; icon_state = "alarm0"; @@ -27315,25 +27413,30 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"QG" = ( +"aQG" = ( /turf/simulated/wall, /area/quartermaster/belterdock) -"QH" = ( -/obj/machinery/door/airlock/glass_mining{ - name = "Belter Shuttle"; - req_access = list(31); - req_one_access = list() +"aQH" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -32 }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/structure/table/rack, +/obj/item/weapon/pickaxe, +/obj/item/weapon/tool/wrench, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/shovel, +/obj/machinery/camera/network/mining{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/item/device/suit_cooling_unit, /turf/simulated/floor/tiled, -/area/quartermaster/belterdock) -"QI" = ( +/area/quartermaster/belterdock/gear) +"aQI" = ( /obj/structure/cable/cyan{ icon_state = "32-1" }, @@ -27345,7 +27448,7 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ai_core_foyer) -"QJ" = ( +"aQJ" = ( /obj/effect/floor_decal/techfloor{ dir = 4 }, @@ -27354,7 +27457,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"QK" = ( +"aQK" = ( /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -27368,7 +27471,7 @@ }, /turf/simulated/floor, /area/tether/exploration) -"QL" = ( +"aQL" = ( /obj/machinery/alarm{ dir = 1; icon_state = "alarm0"; @@ -27376,12 +27479,12 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"QM" = ( +"aQM" = ( /obj/effect/decal/cleanable/dirt, /obj/random/junk, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"QN" = ( +"aQN" = ( /obj/machinery/light/small{ dir = 1 }, @@ -27391,7 +27494,7 @@ /obj/structure/railing, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"QO" = ( +"aQO" = ( /obj/structure/railing, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, @@ -27399,7 +27502,7 @@ /obj/random/maintenance/clean, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"QP" = ( +"aQP" = ( /obj/structure/railing, /obj/effect/decal/cleanable/dirt, /obj/structure/table/rack{ @@ -27411,19 +27514,19 @@ /obj/random/maintenance/clean, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"QQ" = ( +"aQQ" = ( /obj/structure/railing, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"QR" = ( +"aQR" = ( /obj/machinery/light/small{ dir = 1 }, /obj/structure/railing, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"QS" = ( +"aQS" = ( /obj/effect/floor_decal/techfloor{ dir = 10 }, @@ -27432,11 +27535,11 @@ }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"QT" = ( +"aQT" = ( /obj/effect/landmark/map_data/virgo3b, /turf/space, /area/space) -"QU" = ( +"aQU" = ( /obj/effect/floor_decal/borderfloorblack/full, /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/deployable/barrier, @@ -27445,7 +27548,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) -"QV" = ( +"aQV" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/machinery/light/small{ icon_state = "bulb1"; @@ -27505,7 +27608,7 @@ }, /turf/simulated/floor/tiled, /area/security/observation) -"QW" = ( +"aQW" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -27520,17 +27623,17 @@ }, /turf/simulated/floor/tiled, /area/security/hallway) -"QX" = ( +"aQX" = ( /obj/structure/railing, /turf/simulated/floor, /area/maintenance/station/ai) -"QY" = ( +"aQY" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"QZ" = ( +"aQZ" = ( /obj/machinery/alarm{ pixel_y = 22 }, @@ -27541,14 +27644,14 @@ /obj/random/maintenance/cargo, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Ra" = ( +"aRa" = ( /obj/structure/railing, /obj/structure/railing{ dir = 8 }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"Rb" = ( +"aRb" = ( /obj/machinery/light/small{ dir = 4; pixel_y = 0 @@ -27556,7 +27659,7 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"Rc" = ( +"aRc" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/railing{ dir = 8 @@ -27567,14 +27670,14 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"Rd" = ( +"aRd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/railing{ dir = 8 }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"Re" = ( +"aRe" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/railing{ dir = 4 @@ -27582,7 +27685,7 @@ /obj/structure/railing, /turf/simulated/floor, /area/maintenance/station/elevator) -"Rf" = ( +"aRf" = ( /obj/effect/floor_decal/borderfloor/corner2{ dir = 8 }, @@ -27600,35 +27703,35 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/security/lobby) -"Rg" = ( +"aRg" = ( /obj/structure/catwalk, /turf/space, /area/space) -"Rh" = ( +"aRh" = ( /obj/structure/lattice, /obj/structure/railing{ dir = 8 }, /turf/space, /area/space) -"Ri" = ( +"aRi" = ( /obj/structure/railing{ dir = 8 }, /turf/space, /area/space) -"Rj" = ( +"aRj" = ( /obj/structure/railing, /obj/structure/railing{ dir = 8 }, /turf/space, /area/space) -"Rk" = ( +"aRk" = ( /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/elevator) -"Rl" = ( +"aRl" = ( /obj/structure/railing, /obj/effect/decal/cleanable/dirt, /obj/structure/table/rack{ @@ -27639,7 +27742,7 @@ /obj/random/tech_supply, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Rm" = ( +"aRm" = ( /obj/effect/floor_decal/techfloor{ dir = 6 }, @@ -27648,7 +27751,7 @@ }, /turf/simulated/floor/bluegrid, /area/ai_core_foyer) -"Rn" = ( +"aRn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -27667,7 +27770,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"Ro" = ( +"aRo" = ( /obj/machinery/door/airlock/maintenance/common, /obj/structure/cable/green{ d1 = 1; @@ -27679,7 +27782,7 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor, /area/tether/exploration) -"Rp" = ( +"aRp" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -27699,7 +27802,7 @@ }, /turf/simulated/floor, /area/tether/exploration) -"Rq" = ( +"aRq" = ( /obj/structure/table/woodentable, /obj/item/device/flashlight/lamp/green{ dir = 2; @@ -27708,7 +27811,7 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"Rr" = ( +"aRr" = ( /obj/random/tech_supply, /obj/random/tech_supply, /obj/random/tool, @@ -27719,7 +27822,7 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/ai) -"Rs" = ( +"aRs" = ( /obj/machinery/button/windowtint{ id = "sec_processing"; pixel_x = 26; @@ -27728,20 +27831,20 @@ }, /turf/simulated/floor/tiled, /area/security/security_processing) -"Rt" = ( +"aRt" = ( /obj/random/obstruction, /turf/simulated/floor, /area/maintenance/station/ai) -"Ru" = ( +"aRu" = ( /turf/simulated/mineral/vacuum, /area/quartermaster/office) -"Rv" = ( +"aRv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 10 }, /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"Rw" = ( +"aRw" = ( /obj/structure/catwalk, /obj/machinery/light/small{ dir = 8 @@ -27751,7 +27854,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"Rx" = ( +"aRx" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -27761,7 +27864,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"Ry" = ( +"aRy" = ( /obj/structure/railing{ dir = 4 }, @@ -27776,7 +27879,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"Rz" = ( +"aRz" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk, /obj/structure/cable{ @@ -27787,7 +27890,7 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"RA" = ( +"aRA" = ( /obj/structure/catwalk, /obj/structure/cable{ d1 = 1; @@ -27797,7 +27900,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"RB" = ( +"aRB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, @@ -27806,7 +27909,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"RC" = ( +"aRC" = ( /obj/structure/catwalk, /obj/effect/floor_decal/rust, /obj/effect/decal/cleanable/dirt, @@ -27818,7 +27921,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"RD" = ( +"aRD" = ( /obj/structure/catwalk, /obj/effect/floor_decal/rust, /obj/structure/cable{ @@ -27829,7 +27932,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"RE" = ( +"aRE" = ( /obj/machinery/door/firedoor/glass, /obj/structure/catwalk, /obj/machinery/door/airlock/maintenance/common, @@ -27841,7 +27944,7 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"RF" = ( +"aRF" = ( /obj/structure/catwalk, /obj/structure/cable{ d1 = 1; @@ -27854,7 +27957,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"RG" = ( +"aRG" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -27865,7 +27968,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"RH" = ( +"aRH" = ( /obj/structure/catwalk, /obj/structure/cable{ d1 = 1; @@ -27875,11 +27978,11 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"RI" = ( +"aRI" = ( /obj/random/trash_pile, /turf/simulated/floor, /area/maintenance/station/ai) -"RJ" = ( +"aRJ" = ( /obj/structure/railing{ dir = 8 }, @@ -27887,7 +27990,7 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/station/ai) -"RK" = ( +"aRK" = ( /obj/structure/railing, /obj/structure/railing{ dir = 8 @@ -27896,25 +27999,15 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/station/ai) -"RL" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +"aRL" = ( +/obj/machinery/mineral/output, +/obj/machinery/conveyor{ + dir = 4; + id = "miningops" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/quartermaster/belterdock) -"RM" = ( +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aRM" = ( /obj/structure/catwalk, /obj/structure/cable{ d1 = 2; @@ -27923,14 +28016,14 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"RN" = ( +"aRN" = ( /obj/structure/railing{ dir = 8 }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/ai) -"RO" = ( +"aRO" = ( /obj/structure/catwalk, /obj/structure/cable{ d1 = 1; @@ -27939,7 +28032,7 @@ }, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"RP" = ( +"aRP" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -27951,7 +28044,7 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/elevator) -"RQ" = ( +"aRQ" = ( /obj/structure/closet/crate, /obj/random/drinkbottle, /obj/random/contraband, @@ -27960,7 +28053,7 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/station/ai) -"RR" = ( +"aRR" = ( /obj/structure/railing{ dir = 4 }, @@ -27972,7 +28065,7 @@ /obj/random/maintenance/cargo, /turf/simulated/floor, /area/maintenance/station/ai) -"RS" = ( +"aRS" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk, /obj/structure/cable{ @@ -27982,60 +28075,60 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"RT" = ( +"aRT" = ( /obj/structure/catwalk, /obj/structure/cable{ icon_state = "2-8" }, /turf/simulated/floor, /area/maintenance/cargo) -"RU" = ( +"aRU" = ( /obj/structure/railing{ dir = 8 }, /obj/random/junk, /turf/simulated/floor, /area/maintenance/cargo) -"RV" = ( +"aRV" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/ai) -"RW" = ( +"aRW" = ( /obj/item/stack/material/steel{ amount = 6 }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/ai) -"RX" = ( +"aRX" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/station/ai) -"RY" = ( +"aRY" = ( /obj/structure/railing, /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/cargo) -"RZ" = ( +"aRZ" = ( /obj/structure/railing, /obj/random/junk, /turf/simulated/floor, /area/maintenance/station/ai) -"Sa" = ( +"aSa" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, /turf/simulated/floor/tiled, /area/security/eva) -"Sb" = ( +"aSb" = ( /obj/structure/railing, /obj/random/trash, /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/station/ai) -"Sc" = ( +"aSc" = ( /obj/structure/table/woodentable, /obj/item/device/megaphone, /obj/structure/cable/green{ @@ -28045,7 +28138,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"Sd" = ( +"aSd" = ( /obj/structure/railing, /obj/structure/railing{ dir = 4 @@ -28057,7 +28150,7 @@ /obj/random/maintenance/engineering, /turf/simulated/floor, /area/maintenance/station/ai) -"Se" = ( +"aSe" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -28067,7 +28160,7 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"Sf" = ( +"aSf" = ( /obj/structure/catwalk, /obj/effect/floor_decal/rust, /obj/structure/cable{ @@ -28077,7 +28170,7 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"Sg" = ( +"aSg" = ( /obj/structure/catwalk, /obj/structure/cable{ d1 = 4; @@ -28086,7 +28179,7 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"Sh" = ( +"aSh" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -28096,7 +28189,7 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"Si" = ( +"aSi" = ( /obj/structure/catwalk, /obj/structure/cable{ d1 = 4; @@ -28105,31 +28198,31 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"Sj" = ( +"aSj" = ( /obj/structure/closet/emcloset, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"Sk" = ( +"aSk" = ( /obj/structure/railing{ dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/ai) -"Sl" = ( +"aSl" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/ai) -"Sm" = ( +"aSm" = ( /obj/random/toy, /obj/structure/closet, /turf/simulated/floor, /area/maintenance/station/ai) -"Sn" = ( +"aSn" = ( /obj/structure/catwalk, /obj/machinery/light/small{ icon_state = "bulb1"; @@ -28138,14 +28231,14 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/ai) -"So" = ( +"aSo" = ( /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Sp" = ( +"aSp" = ( /obj/machinery/light, /turf/simulated/open, /area/tether/exploration) -"Sq" = ( +"aSq" = ( /obj/machinery/firealarm{ dir = 1; pixel_x = 0; @@ -28153,7 +28246,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"Sr" = ( +"aSr" = ( /obj/structure/railing, /obj/structure/table/rack{ dir = 8; @@ -28166,7 +28259,7 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"Ss" = ( +"aSs" = ( /obj/effect/floor_decal/rust, /obj/machinery/light/small{ dir = 8; @@ -28174,7 +28267,7 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"St" = ( +"aSt" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -28190,7 +28283,7 @@ }, /turf/simulated/floor, /area/maintenance/station/elevator) -"Su" = ( +"aSu" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -28199,7 +28292,7 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/elevator) -"Sv" = ( +"aSv" = ( /obj/structure/catwalk, /obj/effect/floor_decal/rust, /obj/structure/cable{ @@ -28214,7 +28307,7 @@ }, /turf/simulated/floor, /area/maintenance/cargo) -"Sw" = ( +"aSw" = ( /obj/structure/catwalk, /obj/structure/cable{ d1 = 4; @@ -28225,7 +28318,7 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor, /area/maintenance/cargo) -"Sx" = ( +"aSx" = ( /obj/structure/catwalk, /obj/structure/cable{ d1 = 4; @@ -28239,21 +28332,21 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) -"Sy" = ( +"aSy" = ( /obj/effect/landmark/start{ name = "Cargo Technician" }, /turf/simulated/floor/tiled, /area/quartermaster/storage) -"Sz" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +"aSz" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 }, -/turf/simulated/floor/wood, -/area/crew_quarters/heads/hos) -"SA" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/hallway) +"aSA" = ( /obj/machinery/door/airlock/maintenance/cargo{ name = "Belter Shuttle Access"; req_access = list(); @@ -28261,7 +28354,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"SB" = ( +"aSB" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 6; icon_state = "intact" @@ -28271,7 +28364,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"SC" = ( +"aSC" = ( /obj/structure/bed/chair/office/dark{ dir = 1 }, @@ -28280,7 +28373,7 @@ }, /turf/simulated/floor/carpet, /area/security/breakroom) -"SD" = ( +"aSD" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, @@ -28290,7 +28383,7 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"SE" = ( +"aSE" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -28306,7 +28399,7 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) -"SF" = ( +"aSF" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -28320,7 +28413,7 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) -"SG" = ( +"aSG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, @@ -28332,10 +28425,10 @@ }, /turf/simulated/floor/tiled, /area/security/security_processing) -"SH" = ( +"aSH" = ( /turf/simulated/wall, /area/storage/emergency_storage/emergency3) -"SI" = ( +"aSI" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -28347,7 +28440,7 @@ /obj/machinery/light, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"SJ" = ( +"aSJ" = ( /obj/machinery/door/airlock/maintenance/cargo{ name = "Belter Shuttle Access"; req_access = list(); @@ -28361,7 +28454,7 @@ }, /turf/simulated/floor/plating, /area/quartermaster/belterdock) -"SK" = ( +"aSK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/embedded_controller/radio/simple_docking_controller{ @@ -28378,7 +28471,7 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"SL" = ( +"aSL" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -28387,17 +28480,17 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/elevator) -"SM" = ( +"aSM" = ( /obj/effect/floor_decal/rust, /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/elevator) -"SN" = ( +"aSN" = ( /obj/structure/disposalpipe/segment, /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/elevator) -"SO" = ( +"aSO" = ( /obj/structure/closet/walllocker/emerglocker{ pixel_x = 32 }, @@ -28411,13 +28504,13 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"SP" = ( +"aSP" = ( /obj/item/modular_computer/console/preset/command{ dir = 1 }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"SQ" = ( +"aSQ" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ @@ -28434,41 +28527,29 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/shuttle/excursion/general) -"SR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/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, -/area/quartermaster/belterdock) -"SS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 10; - icon_state = "intact" - }, -/obj/machinery/firealarm{ +"aSR" = ( +/obj/structure/plasticflaps/mining, +/obj/machinery/conveyor{ dir = 4; - layer = 3.3; - pixel_x = 26 + id = "miningops" }, -/turf/simulated/floor/tiled, -/area/quartermaster/belterdock) -"ST" = ( +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aSS" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "miningops" + }, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aST" = ( /obj/machinery/firealarm{ dir = 8; pixel_x = -26 }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"SU" = ( +"aSU" = ( /obj/machinery/door/airlock/maintenance/cargo{ name = "Belter Shuttle Access"; req_access = list(); @@ -28478,39 +28559,36 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"SV" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +"aSV" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/gear) +"aSW" = ( +/obj/structure/closet/secure_closet/miner, +/obj/effect/floor_decal/borderfloor{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled, -/area/quartermaster/belterdock) -"SW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" +/obj/effect/floor_decal/corner/brown/border{ + dir = 9 }, /turf/simulated/floor/tiled, -/area/quartermaster/belterdock) -"SX" = ( +/area/quartermaster/belterdock/gear) +"aSX" = ( /obj/machinery/door/airlock/security{ name = "Security Restroom"; req_one_access = list(1,38) }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"SY" = ( +"aSY" = ( /obj/machinery/portable_atmospherics/canister/air/airlock, /obj/machinery/atmospherics/portables_connector{ dir = 4 }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"SZ" = ( +"aSZ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 1; icon_state = "map" @@ -28518,7 +28596,7 @@ /obj/machinery/meter, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Ta" = ( +"aTa" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9; icon_state = "intact" @@ -28529,7 +28607,7 @@ }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Tb" = ( +"aTb" = ( /obj/structure/window/reinforced{ dir = 8; health = 1e+006 @@ -28538,7 +28616,7 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor/plating, /area/crew_quarters/medical_restroom) -"Tc" = ( +"aTc" = ( /obj/structure/handrail{ dir = 4 }, @@ -28547,7 +28625,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"Td" = ( +"aTd" = ( /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -28561,13 +28639,13 @@ }, /turf/simulated/floor/carpet, /area/security/breakroom) -"Te" = ( +"aTe" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Tf" = ( +"aTf" = ( /obj/structure/table/standard, /obj/random/soap, /obj/random/soap, @@ -28576,23 +28654,17 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Tg" = ( -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22; - pixel_y = 0 +"aTg" = ( +/obj/structure/closet/secure_closet/miner, +/obj/effect/floor_decal/borderfloor{ + dir = 1 }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, -/area/quartermaster/belterdock) -"Th" = ( +/area/quartermaster/belterdock/gear) +"aTh" = ( /obj/effect/landmark/start{ name = "Medical Doctor" }, @@ -28602,7 +28674,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Ti" = ( +"aTi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/handrail{ @@ -28615,11 +28687,24 @@ }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"Tj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden, +"aTj" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/obj/structure/table/rack, +/obj/item/clothing/suit/space/void/mining, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space/void/mining, +/obj/item/weapon/mining_scanner, +/obj/machinery/alarm{ + pixel_y = 22 + }, /turf/simulated/floor/tiled, -/area/quartermaster/belterdock) -"Tk" = ( +/area/quartermaster/belterdock/gear) +"aTk" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; @@ -28629,7 +28714,7 @@ }, /turf/simulated/wall, /area/quartermaster/belterdock) -"Tl" = ( +"aTl" = ( /obj/structure/table/rack/shelf, /obj/item/weapon/tank/oxygen, /obj/item/device/suit_cooling_unit, @@ -28638,7 +28723,7 @@ /obj/item/clothing/head/helmet/space/void/pilot, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"Tm" = ( +"aTm" = ( /obj/machinery/airlock_sensor{ pixel_y = 28 }, @@ -28651,7 +28736,7 @@ /obj/effect/map_helper/airlock/sensor/chamber_sensor, /turf/simulated/floor/plating, /area/quartermaster/belterdock) -"Tn" = ( +"aTn" = ( /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ id_tag = "belter_access_airlock"; pixel_y = 28 @@ -28664,14 +28749,14 @@ /obj/effect/map_helper/airlock/atmos/chamber_pump, /turf/simulated/floor/plating, /area/quartermaster/belterdock) -"To" = ( +"aTo" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4; icon_state = "map" }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Tp" = ( +"aTp" = ( /obj/structure/cable{ d1 = 1; d2 = 2; @@ -28681,7 +28766,7 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/sec_upper) -"Tq" = ( +"aTq" = ( /obj/machinery/power/port_gen/pacman/mrs, /obj/structure/cable/yellow{ d2 = 2; @@ -28690,24 +28775,24 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"Tr" = ( +"aTr" = ( /obj/structure/girder, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Ts" = ( +"aTs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal, /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/plating, /area/maintenance/station/cargo) -"Tt" = ( +"aTt" = ( /obj/structure/toilet{ dir = 8 }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Tu" = ( +"aTu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ icon_state = "intact-supply"; dir = 5 @@ -28721,23 +28806,21 @@ }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"Tv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 5; - icon_state = "intact" +"aTv" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 }, -/obj/machinery/access_button{ - command = "cycle_interior"; - frequency = 1379; - master_tag = "belter_access_airlock"; - name = "interior access button"; - pixel_x = 25; - pixel_y = -25; - req_one_access = list(48,65,66) +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 }, +/obj/structure/table/rack, +/obj/item/clothing/suit/space/void/mining, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space/void/mining, +/obj/item/weapon/mining_scanner, /turf/simulated/floor/tiled, -/area/quartermaster/belterdock) -"Tw" = ( +/area/quartermaster/belterdock/gear) +"aTw" = ( /obj/machinery/door/airlock/glass_external, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 @@ -28745,88 +28828,11 @@ /obj/effect/map_helper/airlock/door/int_door, /turf/simulated/floor/plating, /area/quartermaster/belterdock) -"Tx" = ( +"aTx" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden, /turf/simulated/floor/plating, /area/quartermaster/belterdock) -"Ty" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden{ - dir = 4; - icon_state = "map" - }, -/turf/simulated/floor/plating, -/area/quartermaster/belterdock) -"Tz" = ( -/obj/machinery/door/airlock/glass_external, -/obj/effect/map_helper/airlock/door/ext_door, -/turf/simulated/floor/plating, -/area/quartermaster/belterdock) -"TA" = ( -/obj/machinery/access_button{ - command = "cycle_exterior"; - frequency = 1379; - master_tag = "belter_access_airlock"; - name = "exterior access button"; - pixel_x = -25; - pixel_y = 25; - req_one_access = list(48,65,66) - }, -/turf/simulated/floor/airless, -/area/quartermaster/belterdock) -"TB" = ( -/turf/simulated/floor/airless, -/area/quartermaster/belterdock) -"TC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 5; - icon_state = "intact" - }, -/turf/simulated/floor/plating, -/area/maintenance/station/cargo) -"TD" = ( -/obj/structure/table/woodentable, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/computer/skills{ - icon_state = "laptop"; - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/crew_quarters/heads/hos) -"TE" = ( -/obj/machinery/atmospherics/binary/passive_gate/on{ - dir = 8 - }, -/obj/machinery/alarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/turf/simulated/floor/plating, -/area/maintenance/station/cargo) -"TF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9; - icon_state = "intact" - }, -/turf/simulated/floor/plating, -/area/maintenance/station/cargo) -"TG" = ( -/obj/effect/floor_decal/industrial/warning, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 1; - frequency = 1380; - id_tag = "expshuttle_vent" - }, -/obj/structure/cable/cyan, -/obj/structure/handrail{ - dir = 1 - }, -/obj/effect/map_helper/airlock/atmos/chamber_pump, -/turf/simulated/floor/tiled/techfloor/grid, -/area/shuttle/excursion/cargo) -"TH" = ( +"aTy" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -28842,32 +28848,16 @@ /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"TI" = ( +"aTz" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"TJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 9; - icon_state = "intact" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/shuttle/excursion/general) -"TK" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 1; - frequency = 1379; - id_tag = "belter_access_pump" - }, -/obj/effect/map_helper/airlock/atmos/chamber_pump, -/turf/simulated/floor/plating, -/area/quartermaster/belterdock) -"TL" = ( +"aTA" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 1; frequency = 1379; @@ -28879,13 +28869,77 @@ /obj/effect/map_helper/airlock/atmos/chamber_pump, /turf/simulated/floor/plating, /area/quartermaster/belterdock) -"TM" = ( -/obj/machinery/light/small{ +"aTB" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/mineral/equipment_vendor, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aTC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/floor/plating, +/area/maintenance/station/cargo) +"aTD" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/computer/skills{ + icon_state = "laptop"; dir = 8 }, -/turf/simulated/floor/airless, -/area/quartermaster/belterdock) -"TN" = ( +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/hos) +"aTE" = ( +/obj/machinery/atmospherics/binary/passive_gate/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/station/cargo) +"aTF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/floor/plating, +/area/maintenance/station/cargo) +"aTG" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "expshuttle_vent" + }, +/obj/structure/cable/cyan, +/obj/structure/handrail{ + dir = 1 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/excursion/cargo) +"aTH" = ( +/obj/machinery/conveyor{ + dir = 9; + id = "miningops" + }, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aTI" = ( /obj/machinery/door/airlock/glass_mining{ name = "Belter Control Room"; req_access = list(); @@ -28898,9 +28952,75 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"TO" = ( +"aTJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/excursion/general) +"aTK" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "belter_access_pump" + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock) +"aTL" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"aTM" = ( +/obj/structure/table/rack, +/obj/item/weapon/pickaxe, +/obj/item/weapon/tool/wrench, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/shovel, +/obj/machinery/light_switch{ + pixel_x = -11; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/item/device/suit_cooling_unit, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aTN" = ( +/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{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"aTO" = ( /obj/structure/table/woodentable, /obj/item/weapon/storage/secure/safe{ pixel_x = -30 @@ -28915,34 +29035,30 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"TP" = ( +"aTP" = ( /obj/structure/window/reinforced, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor/plating, /area/crew_quarters/medbreak) -"TQ" = ( +"aTQ" = ( /obj/structure/table/woodentable, /obj/item/weapon/storage/box/donkpockets, /turf/simulated/floor/wood, /area/security/breakroom) -"TR" = ( -/obj/structure/closet/secure_closet/miner, -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22; - pixel_y = 0 +"aTR" = ( +/obj/effect/floor_decal/industrial/loading{ + dir = 1 }, /turf/simulated/floor/tiled, -/area/quartermaster/belterdock) -"TS" = ( +/area/quartermaster/belterdock/refinery) +"aTS" = ( /obj/machinery/light{ dir = 1 }, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"TT" = ( +"aTT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor/glass, @@ -28956,7 +29072,7 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/shuttle/excursion/general) -"TU" = ( +"aTU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -28968,23 +29084,22 @@ }, /turf/simulated/floor/outdoors/grass/forest, /area/quartermaster/qm) -"TV" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +"aTV" = ( +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "belter_access_airlock"; + name = "interior access button"; + pixel_x = 25; + pixel_y = -25; + req_one_access = list(48,65,66) }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/steeldecal/steel_decals4{ +/obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 9 - }, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"TW" = ( +"aTW" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -28999,7 +29114,7 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"TX" = ( +"aTX" = ( /obj/machinery/alarm{ dir = 8; icon_state = "alarm0"; @@ -29007,7 +29122,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"TY" = ( +"aTY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -29021,41 +29136,40 @@ }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"TZ" = ( +"aTZ" = ( /obj/structure/table/standard, /obj/item/weapon/paper/rogueminer, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"Ua" = ( +"aUa" = ( /obj/machinery/light{ icon_state = "tube1"; dir = 8 }, /turf/simulated/floor/outdoors/grass/forest, /area/quartermaster/qm) -"Ub" = ( +"aUb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"Uc" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 4 - }, +"aUc" = ( +/obj/structure/ore_box, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"aUd" = ( +/obj/machinery/door/airlock/glass_external, +/obj/effect/map_helper/airlock/door/ext_door, /turf/simulated/floor/plating, /area/quartermaster/belterdock) -"Ud" = ( -/obj/effect/floor_decal/industrial/warning/corner, -/turf/simulated/floor/airless, -/area/quartermaster/belterdock) -"Ue" = ( -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/airless, -/area/quartermaster/belterdock) -"Uf" = ( +"aUe" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aUf" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 8; frequency = 1380; @@ -29068,14 +29182,17 @@ /obj/effect/map_helper/airlock/atmos/pump_out_external, /turf/simulated/floor/plating, /area/shuttle/excursion/cargo) -"Ug" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 8 +"aUg" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 }, -/turf/simulated/floor/airless, +/obj/structure/table/rack, +/obj/item/weapon/tank/jetpack, +/turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"Uh" = ( +"aUh" = ( /obj/structure/table/standard, /obj/machinery/cell_charger, /obj/machinery/power/apc{ @@ -29092,7 +29209,7 @@ /obj/item/device/binoculars, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"Ui" = ( +"aUi" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/item/weapon/bone, /obj/machinery/alarm{ @@ -29102,41 +29219,48 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"Uj" = ( +"aUj" = ( /obj/machinery/papershredder, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"Uk" = ( +"aUk" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, /obj/structure/window/reinforced, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"Ul" = ( +"aUl" = ( /obj/machinery/light, /obj/structure/stasis_cage, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"Um" = ( +"aUm" = ( /obj/machinery/sleep_console, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"Un" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +"aUn" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 }, /obj/structure/cable/green{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/wood, -/area/crew_quarters/heads/hos) -"Uo" = ( +/turf/simulated/floor/tiled, +/area/security/hallway) +"aUo" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -29147,7 +29271,7 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"Up" = ( +"aUp" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ density = 0; @@ -29169,7 +29293,7 @@ }, /turf/simulated/floor, /area/security/eva) -"Uq" = ( +"aUq" = ( /obj/structure/cable/green{ d2 = 2; icon_state = "0-2" @@ -29182,23 +29306,21 @@ }, /turf/simulated/floor/wood, /area/security/breakroom) -"Ur" = ( -/obj/structure/bed/chair/office/light{ +"aUr" = ( +/obj/machinery/recharger, +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, -/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{ - dir = 9; +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; pixel_y = 0 }, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"Us" = ( +"aUs" = ( /obj/structure/bed/chair/shuttle, /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/machinery/alarm{ @@ -29206,7 +29328,7 @@ }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"Ut" = ( +"aUt" = ( /obj/effect/landmark/start{ name = "Medical Doctor" }, @@ -29216,17 +29338,17 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Uu" = ( +"aUu" = ( /obj/machinery/computer/security, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"Uv" = ( -/obj/machinery/computer/roguezones{ - dir = 8 +"aUv" = ( +/obj/machinery/computer/shuttle_control/belter{ + dir = 1 }, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"Uw" = ( +"aUw" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, @@ -29234,7 +29356,7 @@ /obj/random/soap, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"Ux" = ( +"aUx" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, /obj/structure/disposalpipe/segment{ dir = 1; @@ -29242,7 +29364,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"Uy" = ( +"aUy" = ( /obj/machinery/requests_console{ announcementConsole = 1; department = "Head of Security's Desk"; @@ -29253,7 +29375,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"Uz" = ( +"aUz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/firealarm{ @@ -29272,14 +29394,13 @@ }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"UA" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 +"aUA" = ( +/obj/machinery/computer/roguezones{ + dir = 1 }, -/turf/simulated/floor/airless, +/turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"UB" = ( +"aUB" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, @@ -29290,7 +29411,7 @@ }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"UC" = ( +"aUC" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -29303,7 +29424,7 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"UD" = ( +"aUD" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, @@ -29312,41 +29433,53 @@ }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"UE" = ( +"aUE" = ( /obj/structure/bed/chair/shuttle, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"UF" = ( -/turf/simulated/shuttle/wall, -/area/shuttle/belter) -"UG" = ( -/obj/machinery/door/unpowered/shuttle, -/turf/simulated/shuttle/floor/yellow/airless, -/area/shuttle/belter) -"UH" = ( -/turf/simulated/floor/tiled/asteroid_steel/airless, -/area/quartermaster/belterdock) -"UI" = ( -/obj/effect/floor_decal/industrial/warning{ +"aUF" = ( +/obj/machinery/camera/network/mining{ dir = 8 }, -/turf/simulated/floor/airless, +/turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"UJ" = ( +"aUG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"aUH" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "belter_access_airlock"; + name = "exterior access button"; + pixel_x = 25; + pixel_y = 25; + req_one_access = list(48,65,66) + }, +/turf/simulated/floor/tiled/asteroid_steel/airless, +/area/quartermaster/belterdock) +"aUI" = ( +/turf/simulated/floor/tiled/asteroid_steel/airless, +/area/quartermaster/belterdock) +"aUJ" = ( /obj/structure/disposalpipe/segment{ dir = 8; icon_state = "pipe-c" }, /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"UK" = ( +"aUK" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/structure/handrail{ dir = 1 }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"UL" = ( +"aUL" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9; icon_state = "intact" @@ -29364,26 +29497,23 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"UM" = ( +"aUM" = ( /obj/machinery/atmospherics/portables_connector, /obj/effect/floor_decal/industrial/outline/blue, /obj/machinery/portable_atmospherics/canister/air, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"UN" = ( -/obj/structure/table/standard, -/obj/machinery/recharger, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -24 +"aUN" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 +/obj/structure/window/reinforced{ + dir = 1 }, /turf/simulated/floor/tiled, -/area/quartermaster/belterdock) -"UO" = ( +/area/quartermaster/belterdock/refinery) +"aUO" = ( /obj/structure/cable/green{ icon_state = "0-4" }, @@ -29406,29 +29536,24 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"UP" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/structure/table/rack, -/obj/item/weapon/tank/jetpack, +"aUP" = ( +/obj/structure/bed/chair/office/light, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"UQ" = ( +"aUQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) -"UR" = ( +"aUR" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 6; icon_state = "intact" }, /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"US" = ( +"aUS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, @@ -29437,7 +29562,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"UT" = ( +"aUT" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -29451,7 +29576,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"UU" = ( +"aUU" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; dir = 9 @@ -29470,7 +29595,7 @@ /obj/effect/map_helper/airlock/atmos/chamber_pump, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"UV" = ( +"aUV" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 6 }, @@ -29479,52 +29604,43 @@ }, /turf/simulated/floor/tiled, /area/security/security_bathroom) -"UW" = ( +"aUW" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/yellow{ dir = 1 }, /obj/machinery/meter, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"UX" = ( -/obj/machinery/computer/shuttle_control/belter{ - dir = 8 +"aUX" = ( +/obj/effect/landmark/start{ + name = "Shaft Miner" }, /turf/simulated/floor/tiled, -/area/quartermaster/belterdock) -"UY" = ( +/area/quartermaster/belterdock/gear) +"aUY" = ( /obj/structure/bed/chair/shuttle{ dir = 1 }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"UZ" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, +"aUZ" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock) +"aVa" = ( +/obj/effect/floor_decal/industrial/warning/corner, /turf/simulated/floor/airless, -/area/shuttle/belter) -"Va" = ( -/obj/structure/closet/crate, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/shuttle/floor/yellow/airless, -/area/shuttle/belter) -"Vb" = ( -/obj/machinery/embedded_controller/radio/airlock/docking_port{ - id_tag = "belter_docking"; - pixel_y = 26 - }, -/turf/simulated/shuttle/floor/yellow/airless, -/area/shuttle/belter) -"Vc" = ( -/turf/simulated/shuttle/floor/yellow/airless, -/area/shuttle/belter) -"Vd" = ( +/area/quartermaster/belterdock) +"aVb" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/airless, +/area/quartermaster/belterdock) +"aVc" = ( +/turf/simulated/wall, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"aVd" = ( /obj/effect/floor_decal/industrial/warning{ dir = 6 }, @@ -29546,7 +29662,7 @@ /obj/effect/map_helper/airlock/atmos/pump_out_internal, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"Ve" = ( +"aVe" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -29562,7 +29678,7 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"Vf" = ( +"aVf" = ( /obj/item/clothing/mask/breath, /obj/item/clothing/mask/breath, /obj/item/clothing/mask/breath, @@ -29582,7 +29698,7 @@ /obj/structure/closet/emcloset/legacy, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"Vg" = ( +"aVg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal, /obj/item/device/radio/intercom{ dir = 8; @@ -29591,41 +29707,57 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"Vh" = ( -/obj/structure/bed/chair/shuttle, -/turf/simulated/shuttle/floor/yellow/airless, -/area/shuttle/belter) -"Vi" = ( +"aVh" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/ore_box, +/turf/simulated/floor/tiled/asteroid_steel/airless, +/area/quartermaster/belterdock) +"aVi" = ( /obj/machinery/shuttle_sensor{ dir = 2; id_tag = "shuttlesens_exp_psg" }, /turf/simulated/wall/rshull, /area/shuttle/excursion/general) -"Vj" = ( -/obj/structure/closet/emcloset, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 +"aVj" = ( +/obj/structure/cable/green{ + icon_state = "4-8" }, -/turf/simulated/shuttle/floor/yellow/airless, -/area/shuttle/belter) -"Vk" = ( -/turf/simulated/shuttle/wall/hard_corner, -/area/shuttle/belter) -"Vl" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aVk" = ( +/obj/effect/landmark/start{ + name = "Shaft Miner" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aVl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/window/westleft{ dir = 4 }, /turf/simulated/floor/outdoors/grass/forest, /area/quartermaster/qm) -"Vm" = ( +"aVm" = ( /obj/structure/table/reinforced, /obj/item/weapon/storage/box/beakers, /turf/simulated/floor/tiled/white, /area/medical/chemistry) -"Vn" = ( +"aVn" = ( /obj/structure/bed/chair/office/dark{ dir = 4 }, @@ -29637,13 +29769,10 @@ }, /turf/simulated/floor/tiled, /area/security/lobby) -"Vo" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/turf/simulated/floor/plating, -/area/quartermaster/belterdock) -"Vp" = ( +"aVo" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/belter) +"aVp" = ( /obj/structure/cable/green{ d1 = 2; d2 = 8; @@ -29662,37 +29791,29 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"Vq" = ( -/obj/structure/ore_box, +"aVq" = ( +/obj/machinery/door/unpowered/shuttle, /turf/simulated/shuttle/floor/yellow/airless, /area/shuttle/belter) -"Vr" = ( -/obj/structure/bed/chair/shuttle{ - dir = 4 +"aVr" = ( +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aVs" = ( +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"aVt" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_mining{ + name = "Production Area"; + req_access = list(48) }, -/turf/simulated/shuttle/floor/yellow/airless, -/area/shuttle/belter) -"Vs" = ( -/obj/machinery/computer/shuttle_control/belter{ - dir = 8 - }, -/turf/simulated/shuttle/floor/yellow/airless, -/area/shuttle/belter) -"Vt" = ( -/obj/structure/shuttle/window, -/obj/effect/shuttle_landmark{ - base_area = /area/quartermaster/belterdock; - base_turf = /turf/simulated/floor/tiled/asteroid_steel/airless; - landmark_tag = "belter_station"; - name = "Tether Parking Spot" - }, -/turf/simulated/floor/airless, -/area/shuttle/belter) -"Vu" = ( +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/belterdock/refinery) +"aVu" = ( /obj/machinery/computer/ship/helm, /turf/simulated/floor/tiled, /area/shuttle/excursion/cockpit) -"Vv" = ( +"aVv" = ( /obj/structure/sink{ pixel_y = 26 }, @@ -29706,18 +29827,39 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Vw" = ( +"aVw" = ( /obj/machinery/sleeper{ dir = 8 }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"Vx" = ( -/obj/structure/closet/crate, -/obj/machinery/light, -/turf/simulated/shuttle/floor/yellow/airless, -/area/shuttle/belter) -"VA" = ( +"aVx" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aVy" = ( +/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, +/area/quartermaster/belterdock/refinery) +"aVz" = ( +/obj/machinery/computer/shuttle_control/surface_mining_outpost{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"aVA" = ( /obj/effect/landmark/start{ name = "Medical Doctor" }, @@ -29725,7 +29867,7 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) -"VB" = ( +"aVB" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ @@ -29742,25 +29884,23 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/shuttle/excursion/general) -"VC" = ( -/obj/structure/bed/chair/shuttle{ - dir = 1 - }, -/turf/simulated/shuttle/floor/yellow/airless, -/area/shuttle/belter) -"VD" = ( +"aVC" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aVD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 6 }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"VE" = ( +"aVE" = ( /obj/structure/closet/walllocker/emerglocker{ pixel_x = -32 }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"VF" = ( +"aVF" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -29768,20 +29908,14 @@ /obj/item/toy/plushie/squid/pink, /turf/simulated/floor/outdoors/grass/forest, /area/quartermaster/qm) -"VG" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 4 - }, -/turf/simulated/floor/airless, -/area/quartermaster/belterdock) -"VH" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/turf/simulated/floor/airless, -/area/quartermaster/belterdock) -"VI" = ( +"aVG" = ( +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/belter) +"aVH" = ( +/obj/structure/bed/chair/shuttle, +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/belter) +"aVI" = ( /obj/machinery/light{ dir = 4 }, @@ -29794,14 +29928,11 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"VJ" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 1 - }, -/turf/simulated/floor/airless, -/area/quartermaster/belterdock) -"VK" = ( +"aVJ" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"aVK" = ( /obj/structure/table/woodentable, /obj/machinery/light{ dir = 1 @@ -29814,34 +29945,68 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"VL" = ( +"aVL" = ( /obj/structure/grille, /obj/structure/lattice, /turf/space, /area/space) -"VM" = ( +"aVM" = ( /turf/simulated/open, /area/ai_core_foyer) -"VP" = ( +"aVN" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/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, +/area/quartermaster/belterdock/refinery) +"aVO" = ( +/obj/structure/ore_box, +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/belter) +"aVP" = ( /obj/machinery/atmospherics/unary/engine{ icon_state = "nozzle"; dir = 4 }, /turf/simulated/floor/airless, /area/shuttle/medivac/engines) -"VQ" = ( +"aVQ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8; icon_state = "map" }, /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"VR" = ( +"aVR" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/cyan, /obj/machinery/meter, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"VU" = ( +"aVS" = ( +/obj/structure/bed/chair/shuttle{ + dir = 4 + }, +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/belter) +"aVT" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aVU" = ( /obj/machinery/firealarm{ dir = 2; layer = 3.3; @@ -29860,7 +30025,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"VV" = ( +"aVV" = ( /obj/machinery/sleep_console{ dir = 4 }, @@ -29872,11 +30037,21 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"VX" = ( +"aVW" = ( +/obj/structure/shuttle/window, +/obj/effect/shuttle_landmark{ + base_area = /area/quartermaster/belterdock; + base_turf = /turf/simulated/floor/tiled/asteroid_steel/airless; + landmark_tag = "belter_station"; + name = "Tether Parking Spot" + }, +/turf/simulated/floor/airless, +/area/shuttle/belter) +"aVX" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"VY" = ( +"aVY" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 1; frequency = 1380; @@ -29886,7 +30061,21 @@ /obj/effect/map_helper/airlock/atmos/pump_out_external, /turf/simulated/floor/airless, /area/shuttle/medivac/general) -"Wa" = ( +"aVZ" = ( +/obj/machinery/door/airlock/glass_mining{ + name = "Mining Outpost Shuttle"; + req_access = list(48) + }, +/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/steel_grid, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"aWa" = ( /obj/machinery/airlock_sensor{ pixel_x = 28 }, @@ -29899,7 +30088,7 @@ /obj/effect/map_helper/airlock/atmos/pump_out_internal, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/general) -"Wb" = ( +"aWb" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; @@ -29908,16 +30097,35 @@ }, /turf/simulated/wall, /area/maintenance/substation/cargo) -"Wd" = ( +"aWc" = ( +/obj/machinery/door/blast/regular, +/turf/simulated/wall, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"aWd" = ( /obj/effect/floor_decal/industrial/outline, /obj/machinery/atmospherics/portables_connector, /obj/machinery/portable_atmospherics/canister/air, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"Wg" = ( +"aWe" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aWf" = ( +/obj/structure/closet/emcloset, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aWg" = ( /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"Wh" = ( +"aWh" = ( /obj/effect/floor_decal/carpet, /obj/effect/floor_decal/carpet{ dir = 4 @@ -29927,12 +30135,18 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"Wj" = ( +"aWi" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/airless, +/area/quartermaster/belterdock) +"aWj" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/blue/border, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"Wk" = ( +"aWk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -29942,11 +30156,11 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"Wl" = ( +"aWl" = ( /obj/structure/sign/redcross, /turf/simulated/wall/rshull, /area/shuttle/medivac/general) -"Wm" = ( +"aWm" = ( /obj/structure/cable{ d1 = 1; d2 = 2; @@ -29954,7 +30168,7 @@ }, /turf/simulated/floor, /area/maintenance/station/cargo) -"Wn" = ( +"aWn" = ( /obj/structure/disposalpipe/segment, /obj/machinery/shuttle_sensor{ dir = 5; @@ -29962,17 +30176,24 @@ }, /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"Wo" = ( +"aWo" = ( /obj/structure/bed/chair/shuttle, /obj/machinery/light{ dir = 1 }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"Wp" = ( +"aWp" = ( /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"Wr" = ( +"aWq" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/airless, +/area/quartermaster/belterdock) +"aWr" = ( /obj/structure/table/standard, /obj/item/weapon/towel/random, /obj/item/weapon/towel/random, @@ -29984,19 +30205,20 @@ /obj/item/weapon/towel/random, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Ws" = ( +"aWs" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"Wt" = ( +"aWt" = ( +/obj/machinery/mineral/equipment_vendor/survey, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"Wu" = ( +"aWu" = ( /obj/machinery/door/airlock/glass_external, /obj/effect/map_helper/airlock/door/ext_door, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/general) -"Wv" = ( +"aWv" = ( /obj/machinery/alarm{ dir = 4; icon_state = "alarm0"; @@ -30005,10 +30227,10 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Ww" = ( +"aWw" = ( /turf/simulated/wall, /area/crew_quarters/heads/cmo) -"Wx" = ( +"aWx" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ @@ -30025,7 +30247,7 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/shuttle/excursion/general) -"Wy" = ( +"aWy" = ( /obj/machinery/door/window/brigdoor/westright{ req_access = newlist(); req_one_access = list(5,67) @@ -30041,7 +30263,14 @@ }, /turf/simulated/floor/tiled, /area/shuttle/medivac/cockpit) -"WA" = ( +"aWz" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aWA" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, @@ -30060,7 +30289,7 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"WB" = ( +"aWB" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, @@ -30075,7 +30304,7 @@ }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"WC" = ( +"aWC" = ( /obj/structure/bed/chair/bay/chair/padded/blue{ icon_state = "bay_chair_preview"; dir = 4 @@ -30086,18 +30315,18 @@ }, /turf/simulated/floor/tiled, /area/shuttle/medivac/cockpit) -"WD" = ( +"aWD" = ( /obj/machinery/computer/ship/sensors, /turf/simulated/floor/tiled, /area/shuttle/excursion/cockpit) -"WE" = ( +"aWE" = ( /obj/effect/decal/remains, /obj/item/clothing/under/rank/centcom_officer, /obj/item/clothing/head/beret/centcom/officer, /obj/item/clothing/shoes/laceup, /turf/simulated/mineral/floor/vacuum, /area/mine/explored/upper_level) -"WF" = ( +"aWF" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 8; @@ -30107,7 +30336,7 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor/plating, /area/crew_quarters/medical_restroom) -"WG" = ( +"aWG" = ( /obj/machinery/disposal/deliveryChute{ dir = 8 }, @@ -30116,7 +30345,7 @@ }, /turf/simulated/floor/plating, /area/shuttle/excursion/cargo) -"WH" = ( +"aWH" = ( /obj/machinery/light{ icon_state = "tube1"; dir = 8 @@ -30124,14 +30353,41 @@ /obj/structure/dogbed, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"WL" = ( +"aWI" = ( +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aWJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aWK" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aWL" = ( /obj/machinery/shipsensors{ dir = 1 }, /obj/effect/floor_decal/industrial/warning/full, /turf/simulated/floor/reinforced, /area/shuttle/excursion/general) -"WM" = ( +"aWM" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, @@ -30144,7 +30400,7 @@ }, /turf/simulated/floor/tiled/dark, /area/shuttle/medivac/general) -"WN" = ( +"aWN" = ( /obj/effect/floor_decal/carpet{ dir = 4 }, @@ -30156,11 +30412,54 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"WR" = ( +"aWO" = ( +/obj/machinery/conveyor{ + dir = 2; + id = "miningops" + }, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aWP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_mining{ + name = "Mining Gear Storage"; + req_access = list(); + req_one_access = list(48,66) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aWQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aWR" = ( /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"WS" = ( +"aWS" = ( /obj/structure/disposaloutlet{ dir = 4 }, @@ -30172,14 +30471,29 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"WT" = ( +"aWT" = ( /obj/effect/floor_decal/industrial/warning/dust/corner{ icon_state = "warningcorner_dust"; dir = 1 }, /turf/simulated/floor/airless, /area/mine/explored/upper_level) -"WV" = ( +"aWU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aWV" = ( /obj/structure/shuttle/engine/heater, /obj/structure/window/reinforced{ dir = 1 @@ -30189,17 +30503,48 @@ }, /turf/simulated/floor/reinforced, /area/shuttle/excursion/cargo) -"WW" = ( +"aWW" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, /turf/simulated/floor/tiled/dark, /area/shuttle/medivac/general) -"WY" = ( +"aWX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aWY" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/dark, /area/security/evidence_storage) -"Xa" = ( +"aWZ" = ( +/obj/structure/closet/secure_closet/miner, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aXa" = ( /obj/item/device/radio/intercom{ dir = 1; pixel_y = 24; @@ -30208,13 +30553,13 @@ /obj/structure/handrail, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"Xb" = ( +"aXb" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"Xc" = ( +"aXc" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ @@ -30236,7 +30581,7 @@ }, /turf/simulated/floor/plating, /area/shuttle/excursion/general) -"Xd" = ( +"aXd" = ( /obj/effect/floor_decal/borderfloor, /obj/machinery/computer/shuttle_control/explore/medivac{ icon_state = "computer"; @@ -30245,13 +30590,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled, /area/shuttle/medivac/cockpit) -"Xe" = ( +"aXe" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /turf/simulated/floor/wood, /area/security/breakroom) -"Xf" = ( +"aXf" = ( /obj/machinery/atmospherics/portables_connector{ dir = 1 }, @@ -30259,7 +30604,7 @@ /obj/effect/floor_decal/industrial/outline/red, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"Xg" = ( +"aXg" = ( /obj/structure/grille, /obj/machinery/door/firedoor/glass, /obj/structure/window/reinforced/full, @@ -30274,7 +30619,7 @@ }, /turf/simulated/floor/airless, /area/shuttle/medivac/general) -"Xh" = ( +"aXh" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, @@ -30282,7 +30627,7 @@ /mob/living/simple_mob/animal/sif/fluffy, /turf/simulated/floor/outdoors/grass/forest, /area/quartermaster/qm) -"Xi" = ( +"aXi" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5; icon_state = "intact" @@ -30294,7 +30639,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"Xj" = ( +"aXj" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 4 }, @@ -30309,7 +30654,7 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"Xk" = ( +"aXk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, @@ -30324,7 +30669,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"Xl" = ( +"aXl" = ( /obj/structure/cable/cyan{ d1 = 4; d2 = 8; @@ -30343,11 +30688,55 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"Xo" = ( +"aXm" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/blue{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/window/reinforced/full, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aXn" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aXo" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"Xp" = ( +"aXp" = ( /obj/structure/cable/cyan{ d2 = 8; icon_state = "0-8" @@ -30355,15 +30744,25 @@ /obj/machinery/power/smes/buildable/point_of_interest, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"Xq" = ( +"aXq" = ( /obj/structure/stasis_cage, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"Xr" = ( +"aXr" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/yellow, /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"Xt" = ( +"aXs" = ( +/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, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"aXt" = ( /obj/machinery/door/airlock/hatch{ req_one_access = list(67) }, @@ -30375,7 +30774,19 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_ridged, /area/shuttle/excursion/general) -"Xv" = ( +"aXu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aXv" = ( /obj/structure/cable/green{ icon_state = "1-8" }, @@ -30385,7 +30796,7 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"Xw" = ( +"aXw" = ( /obj/effect/floor_decal/borderfloorwhite/corner{ dir = 1 }, @@ -30397,17 +30808,44 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"Xx" = ( +"aXx" = ( /obj/machinery/computer/ship/engines, /obj/effect/floor_decal/borderfloor{ dir = 1 }, /turf/simulated/floor/tiled, /area/shuttle/medivac/cockpit) -"Xy" = ( +"aXy" = ( /turf/simulated/wall/rshull, /area/shuttle/medivac/cockpit) -"XB" = ( +"aXz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/quartermaster/belterdock/refinery) +"aXA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aXB" = ( /obj/structure/cable{ icon_state = "4-8" }, @@ -30418,13 +30856,13 @@ /obj/effect/floor_decal/corner/blue, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"XC" = ( +"aXC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 5 }, /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"XD" = ( +"aXD" = ( /obj/structure/shuttle/engine/heater, /obj/structure/window/reinforced{ dir = 1 @@ -30434,40 +30872,62 @@ }, /turf/simulated/floor/reinforced, /area/shuttle/excursion/cargo) -"XE" = ( +"aXE" = ( /obj/machinery/conveyor_switch/oneway{ id = "shuttle_inbound" }, /obj/effect/floor_decal/industrial/warning/full, /turf/simulated/floor/plating, /area/shuttle/excursion/cargo) -"XF" = ( +"aXF" = ( /obj/machinery/power/smes/buildable/point_of_interest, /obj/structure/cable{ icon_state = "0-8" }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"XG" = ( +"aXG" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/security/eva) -"XH" = ( +"aXH" = ( /obj/machinery/shipsensors{ dir = 4 }, /obj/effect/floor_decal/industrial/warning/full, /turf/simulated/floor/airless, /area/shuttle/medivac/cockpit) -"XL" = ( +"aXI" = ( +/obj/machinery/camera/network/mining{ + c_tag = "OPM - Mining Production Room"; + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aXJ" = ( +/obj/machinery/mineral/processing_unit_console, +/turf/simulated/wall, +/area/quartermaster/belterdock/refinery) +"aXK" = ( +/obj/structure/table/rack, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"aXL" = ( /obj/structure/sign/nosmoking_1, /turf/simulated/wall/rshull, /area/shuttle/medivac/general) -"XM" = ( +"aXM" = ( /obj/structure/table/glass, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"XN" = ( +"aXN" = ( /obj/structure/shuttle/engine/heater, /obj/structure/window/reinforced{ dir = 1 @@ -30477,7 +30937,7 @@ }, /turf/simulated/floor/reinforced, /area/shuttle/excursion/cargo) -"XO" = ( +"aXO" = ( /obj/structure/cable/green{ d1 = 2; d2 = 4; @@ -30485,23 +30945,38 @@ }, /turf/simulated/floor/tiled/steel, /area/quartermaster/warehouse) -"XQ" = ( +"aXP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) +"aXQ" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/shuttle/excursion/general) -"XR" = ( +"aXR" = ( /obj/effect/overmap/visitable/sector/virgo3b, /turf/space, /area/space) -"XS" = ( +"aXS" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/shuttle/excursion/cargo) -"XT" = ( +"aXT" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -30523,7 +30998,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"XU" = ( +"aXU" = ( /obj/effect/floor_decal/corner/blue{ icon_state = "corner_white"; dir = 10 @@ -30537,7 +31012,11 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"XW" = ( +"aXV" = ( +/obj/machinery/mineral/processing_unit, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aXW" = ( /obj/machinery/door/window/brigdoor/westleft{ req_access = newlist(); req_one_access = list(5,67) @@ -30549,27 +31028,43 @@ }, /turf/simulated/floor/tiled, /area/shuttle/medivac/cockpit) -"XX" = ( +"aXX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 9 }, /turf/simulated/wall/rshull, /area/shuttle/medivac/engines) -"XZ" = ( +"aXY" = ( +/obj/effect/landmark/start{ + name = "Shaft Miner" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aXZ" = ( /obj/structure/table/steel, /turf/simulated/floor/tiled, /area/shuttle/excursion/cockpit) -"Ya" = ( +"aYa" = ( /turf/simulated/wall/rshull, /area/shuttle/medivac/general) -"Yb" = ( +"aYb" = ( /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"Yc" = ( +"aYc" = ( /obj/structure/sign/redcross, /turf/simulated/wall/rshull, /area/shuttle/medivac/engines) -"Ye" = ( +"aYd" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aYe" = ( /obj/machinery/light/small, /obj/machinery/atmospherics/portables_connector{ dir = 1 @@ -30578,11 +31073,11 @@ /obj/effect/floor_decal/industrial/outline/red, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"Yf" = ( +"aYf" = ( /obj/machinery/computer/supplycomp/control, /turf/simulated/floor/wood, /area/quartermaster/qm) -"Yg" = ( +"aYg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal{ dir = 4 }, @@ -30593,7 +31088,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"Yh" = ( +"aYh" = ( /obj/structure/sink{ dir = 4; icon_state = "sink"; @@ -30606,7 +31101,22 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Yj" = ( +"aYi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aYj" = ( /obj/effect/floor_decal/industrial/warning{ dir = 10 }, @@ -30624,13 +31134,13 @@ /obj/effect/map_helper/airlock/atmos/chamber_pump, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"Yk" = ( +"aYk" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 1 }, /turf/simulated/floor/airless, /area/mine/explored/upper_level) -"Yl" = ( +"aYl" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 4 }, @@ -30645,7 +31155,7 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"Ym" = ( +"aYm" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -30664,12 +31174,26 @@ }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"Yp" = ( +"aYn" = ( +/obj/machinery/suit_cycler/mining, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aYo" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_l" + }, +/turf/simulated/floor/tiled/asteroid_steel/airless, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/mining_outpost/shuttle) +"aYp" = ( /turf/simulated/wall{ can_open = 0 }, /area/crew_quarters/medical_restroom) -"Yq" = ( +"aYq" = ( /obj/machinery/body_scanconsole{ dir = 4 }, @@ -30677,7 +31201,7 @@ /obj/effect/floor_decal/corner/blue/border, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"Yr" = ( +"aYr" = ( /obj/machinery/airlock_sensor{ pixel_x = 28; pixel_y = 28 @@ -30689,14 +31213,20 @@ /obj/effect/map_helper/airlock/sensor/int_sensor, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"Ys" = ( +"aYs" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, /obj/structure/bed/padded, /turf/simulated/floor/tiled/dark, /area/shuttle/medivac/general) -"Yu" = ( +"aYt" = ( +/obj/structure/dispenser/oxygen, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aYu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door_timer/tactical_pet_storage{ @@ -30705,7 +31235,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"Yv" = ( +"aYv" = ( /obj/structure/fuel_port{ pixel_x = -32 }, @@ -30715,7 +31245,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"Yw" = ( +"aYw" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -30723,19 +31253,26 @@ }, /turf/simulated/floor/reinforced, /area/tether/exploration) -"Yx" = ( +"aYx" = ( /obj/effect/floor_decal/carpet{ dir = 4 }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"Yz" = ( +"aYy" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/turf/simulated/floor/tiled/asteroid_steel/airless, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/mining_outpost/shuttle) +"aYz" = ( /obj/structure/window/reinforced, /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor/plating, /area/crew_quarters/medical_restroom) -"YA" = ( +"aYA" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 9 }, @@ -30748,7 +31285,7 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"YB" = ( +"aYB" = ( /obj/effect/shuttle_landmark{ base_area = /area/space; base_turf = /turf/space; @@ -30757,11 +31294,11 @@ }, /turf/space, /area/space) -"YC" = ( +"aYC" = ( /obj/effect/floor_decal/carpet, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"YD" = ( +"aYD" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 }, @@ -30775,12 +31312,47 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"YH" = ( +"aYE" = ( +/obj/structure/closet/crate, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aYF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/closet/crate, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aYG" = ( +/obj/machinery/mineral/input, +/obj/machinery/conveyor{ + dir = 2; + id = "miningops" + }, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aYH" = ( /obj/structure/table/woodentable, /obj/machinery/microwave, /turf/simulated/floor/wood, /area/security/breakroom) -"YK" = ( +"aYI" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/conveyor_switch/oneway{ + id = "miningops"; + name = "Mining Ops conveyor switch"; + pixel_x = 10; + pixel_y = 5; + req_access = list(48); + req_one_access = list(48) + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aYJ" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aYK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -30793,7 +31365,24 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/shuttle/excursion/general) -"YM" = ( +"aYL" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"aYM" = ( /obj/machinery/bodyscanner{ dir = 4 }, @@ -30805,7 +31394,7 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"YN" = ( +"aYN" = ( /obj/machinery/light/small{ dir = 1 }, @@ -30818,7 +31407,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"YO" = ( +"aYO" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, @@ -30827,7 +31416,11 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"YQ" = ( +"aYP" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aYQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ icon_state = "map-scrubbers"; @@ -30840,16 +31433,20 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/exploration) -"YS" = ( +"aYR" = ( +/obj/machinery/mineral/stacking_unit_console, +/turf/simulated/wall, +/area/quartermaster/belterdock/refinery) +"aYS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 10 }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"YT" = ( +"aYT" = ( /turf/simulated/wall, /area/security/breakroom) -"YU" = ( +"aYU" = ( /obj/structure/window/reinforced{ dir = 8 }, @@ -30871,26 +31468,26 @@ }, /turf/simulated/floor/tiled, /area/shuttle/medivac/cockpit) -"YV" = ( +"aYV" = ( /obj/machinery/computer/secure_data, /obj/machinery/alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"YW" = ( +"aYW" = ( /obj/structure/lattice, /obj/structure/sign/warning/secure_area{ pixel_x = 32 }, /turf/space, /area/space) -"YX" = ( +"aYX" = ( /obj/structure/table/standard, /obj/random/medical, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/medivac/engines) -"YY" = ( +"aYY" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 @@ -30902,7 +31499,15 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/engines) -"Za" = ( +"aYZ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"aZa" = ( /obj/machinery/door/airlock/hatch{ req_one_access = newlist() }, @@ -30917,7 +31522,16 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/shuttle/excursion/cargo) -"Zc" = ( +"aZb" = ( +/obj/structure/bed/chair/office/light{ + dir = 4 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"aZc" = ( /obj/machinery/computer/ship/helm{ icon_state = "computer"; dir = 8 @@ -30930,7 +31544,7 @@ }, /turf/simulated/floor/tiled, /area/shuttle/medivac/cockpit) -"Zd" = ( +"aZd" = ( /obj/machinery/conveyor{ dir = 4; id = "shuttle_inbound" @@ -30938,7 +31552,7 @@ /obj/structure/plasticflaps, /turf/simulated/floor/plating, /area/shuttle/excursion/cargo) -"Ze" = ( +"aZe" = ( /obj/effect/floor_decal/corner/blue{ icon_state = "corner_white"; dir = 10 @@ -30952,13 +31566,31 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"Zg" = ( +"aZf" = ( +/obj/effect/floor_decal/industrial/loading{ + icon_state = "loadingarea"; + dir = 8 + }, +/obj/structure/sign/warning/moving_parts{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/refinery) +"aZg" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 }, /turf/simulated/floor/airless, /area/mine/explored/upper_level) -"Zi" = ( +"aZh" = ( +/obj/machinery/mineral/output, +/obj/machinery/conveyor{ + dir = 2; + id = "miningops" + }, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aZi" = ( /obj/machinery/alarm{ dir = 1; icon_state = "alarm0"; @@ -30969,7 +31601,11 @@ }, /turf/simulated/floor/outdoors/grass/forest, /area/quartermaster/qm) -"Zk" = ( +"aZj" = ( +/obj/machinery/mineral/stacking_machine, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aZk" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/effect/floor_decal/industrial/warning/corner{ icon_state = "warningcorner"; @@ -30977,11 +31613,11 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"Zl" = ( +"aZl" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/wall/rshull, /area/shuttle/medivac/cockpit) -"Zm" = ( +"aZm" = ( /obj/machinery/computer/ship/sensors{ icon_state = "computer"; dir = 8 @@ -30992,14 +31628,14 @@ /obj/machinery/light, /turf/simulated/floor/tiled, /area/shuttle/medivac/cockpit) -"Zn" = ( +"aZn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /mob/living/simple_mob/animal/sif/fluffy/silky, /turf/simulated/floor/outdoors/grass/forest, /area/quartermaster/qm) -"Zo" = ( +"aZo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, @@ -31014,14 +31650,23 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"Zp" = ( +"aZp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 4 }, /turf/simulated/floor/outdoors/grass/forest, /area/quartermaster/qm) -"Zr" = ( +"aZq" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 8; + id = "miningops"; + movedir = null + }, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aZr" = ( /obj/structure/window/reinforced{ dir = 8 }, @@ -31029,11 +31674,11 @@ /obj/effect/floor_decal/borderfloor, /turf/simulated/floor/tiled, /area/shuttle/medivac/cockpit) -"Zs" = ( +"aZs" = ( /obj/structure/bookcase, /turf/simulated/floor/wood, /area/crew_quarters/heads/cmo) -"Zt" = ( +"aZt" = ( /obj/machinery/power/apc{ alarms_hidden = 1; dir = 2; @@ -31053,7 +31698,7 @@ /obj/structure/cable, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"Zu" = ( +"aZu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -31062,7 +31707,7 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Zv" = ( +"aZv" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -31079,13 +31724,21 @@ }, /turf/simulated/floor/airless, /area/shuttle/medivac/cockpit) -"Zx" = ( +"aZw" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_r" + }, +/turf/simulated/floor/tiled/asteroid_steel/airless, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/mining_outpost/shuttle) +"aZx" = ( /obj/machinery/light/small{ dir = 8 }, /turf/simulated/floor/tiled/white, /area/crew_quarters/medical_restroom) -"Zy" = ( +"aZy" = ( /obj/structure/disposaloutlet{ dir = 8 }, @@ -31094,7 +31747,7 @@ }, /turf/simulated/floor/plating, /area/shuttle/excursion/cargo) -"Zz" = ( +"aZz" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, @@ -31107,13 +31760,48 @@ }, /turf/simulated/floor/tiled/dark, /area/shuttle/medivac/general) -"ZD" = ( +"aZA" = ( +/obj/structure/table/steel, +/obj/item/stack/flag/yellow{ + pixel_x = 4 + }, +/obj/item/stack/flag/red, +/obj/item/stack/flag/green{ + pixel_x = -4; + pixel_y = 0 + }, +/obj/item/weapon/storage/box/nifsofts_mining, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aZB" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/gear) +"aZC" = ( +/obj/machinery/conveyor{ + dir = 5; + icon_state = "conveyor0"; + id = "miningops" + }, +/obj/machinery/mineral/input, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aZD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 9 }, /turf/simulated/wall/rshull, /area/shuttle/excursion/cargo) -"ZE" = ( +"aZE" = ( /obj/machinery/door/airlock/glass_external, /obj/machinery/airlock_sensor/airlock_exterior/shuttle{ dir = 6; @@ -31135,17 +31823,38 @@ /obj/effect/map_helper/airlock/sensor/ext_sensor, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"ZF" = ( -/turf/simulated/mineral/vacuum, -/area/crew_quarters/heads/hos) -"ZG" = ( +"aZG" = ( /obj/machinery/computer/shuttle_control/explore/excursion{ dir = 1; icon_state = "computer" }, /turf/simulated/floor/tiled, /area/shuttle/excursion/cockpit) -"ZK" = ( +"aZH" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "miningops"; + movedir = null + }, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aZI" = ( +/obj/machinery/mineral/output, +/obj/machinery/conveyor{ + dir = 8; + id = "miningops"; + movedir = null + }, +/turf/simulated/floor/plating, +/area/quartermaster/belterdock/refinery) +"aZJ" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"aZK" = ( /obj/structure/bed/chair/bay/chair/padded/blue{ icon_state = "bay_chair_preview"; dir = 4 @@ -31161,7 +31870,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled, /area/shuttle/medivac/cockpit) -"ZL" = ( +"aZL" = ( /obj/machinery/door/airlock/hatch{ req_one_access = list(67) }, @@ -31175,12 +31884,12 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_ridged, /area/shuttle/excursion/general) -"ZM" = ( +"aZM" = ( /obj/structure/table/woodentable, /obj/item/device/radio/off, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"ZN" = ( +"aZN" = ( /obj/structure/cable{ icon_state = "4-8" }, @@ -31194,24 +31903,24 @@ }, /turf/simulated/floor/tiled/white, /area/shuttle/medivac/general) -"ZO" = ( +"aZO" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, /area/security/eva) -"ZP" = ( +"aZP" = ( /obj/structure/catwalk, /obj/effect/landmark{ name = "maint_pred" }, /turf/simulated/floor, /area/maintenance/cargo) -"ZQ" = ( +"aZQ" = ( /obj/effect/landmark{ name = "maint_pred" }, /turf/simulated/floor, /area/maintenance/station/ai) -"ZR" = ( +"aZR" = ( /obj/structure/grille, /obj/machinery/door/firedoor/glass, /obj/structure/window/reinforced/full, @@ -31228,7 +31937,14 @@ }, /turf/simulated/floor/airless, /area/shuttle/medivac/general) -"ZT" = ( +"aZS" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"aZT" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/alarm{ dir = 1; @@ -31240,7 +31956,7 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"ZU" = ( +"aZU" = ( /obj/machinery/suit_cycler/pilot, /obj/machinery/firealarm{ dir = 1; @@ -31249,7 +31965,7 @@ }, /turf/simulated/floor/tiled, /area/shuttle/excursion/general) -"ZV" = ( +"aZV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -31259,14 +31975,14 @@ }, /turf/simulated/floor/wood, /area/quartermaster/qm) -"ZW" = ( +"aZW" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/yellow, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cargo) -"ZX" = ( +"aZX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 10 }, @@ -31279,19887 +31995,21086 @@ /obj/item/weapon/storage/mre/menu10, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) -"ZY" = ( +"aZY" = ( /turf/simulated/wall/r_wall, /area/security/security_lockerroom) +"aZZ" = ( +/obj/machinery/camera/network/cargo, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"baa" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"bab" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"bad" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"bae" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"baf" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"bag" = ( +/obj/structure/ore_box, +/turf/simulated/floor/tiled/asteroid_steel/airless, +/area/quartermaster/belterdock) +"bah" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"bai" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/mining_outpost/shuttle) +"baj" = ( +/obj/machinery/door/unpowered/shuttle, +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/mining_outpost/shuttle) +"bak" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/camera/network/mining, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/airless, +/area/quartermaster/belterdock) +"bal" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/turf/simulated/floor/airless, +/area/quartermaster/belterdock) +"bam" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"ban" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 2 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"bao" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/airless, +/area/shuttle/mining_outpost/shuttle) +"bap" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/airless, +/area/quartermaster/belterdock) +"baq" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1; + icon_state = "propulsion_l" + }, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/belter) +"bar" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/airless, +/area/quartermaster/belterdock) +"bas" = ( +/turf/simulated/floor/airless, +/area/quartermaster/belterdock) +"bat" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/shuttle/floor/yellow, +/area/shuttle/mining_outpost/shuttle) +"bau" = ( +/turf/simulated/shuttle/floor/yellow, +/area/shuttle/mining_outpost/shuttle) +"bav" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/belter) +"baw" = ( +/obj/structure/bed/chair/shuttle, +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/belter) +"bax" = ( +/obj/structure/bed/chair/shuttle, +/turf/simulated/shuttle/floor/yellow, +/area/shuttle/mining_outpost/shuttle) +"bay" = ( +/obj/structure/closet/crate, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/belter) +"baz" = ( +/obj/structure/closet/crate, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/belter) +"baA" = ( +/obj/structure/closet/emcloset, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/shuttle/floor/yellow, +/area/shuttle/mining_outpost/shuttle) +"baB" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"baC" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/camera/network/cargo{ + dir = 1; + name = "security camera" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"baD" = ( +/turf/simulated/shuttle/wall/hard_corner, +/area/shuttle/mining_outpost/shuttle) +"baE" = ( +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + dir = 8; + id_tag = "belter_docking"; + pixel_x = 26; + pixel_y = 0 + }, +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/belter) +"baF" = ( +/obj/structure/bed/chair/shuttle{ + dir = 8 + }, +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/belter) +"baG" = ( +/obj/structure/closet/emcloset, +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/belter) +"baH" = ( +/obj/machinery/computer/shuttle_control/belter{ + dir = 1 + }, +/turf/simulated/shuttle/floor/yellow/airless, +/area/shuttle/belter) +"baI" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/airless, +/area/quartermaster/belterdock) +"baJ" = ( +/obj/structure/bed/chair/shuttle{ + dir = 4 + }, +/turf/simulated/shuttle/floor/yellow, +/area/shuttle/mining_outpost/shuttle) +"baK" = ( +/obj/machinery/computer/shuttle_control/surface_mining_outpost{ + dir = 8 + }, +/turf/simulated/shuttle/floor/yellow, +/area/shuttle/mining_outpost/shuttle) +"baL" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"baM" = ( +/obj/machinery/light, +/turf/simulated/shuttle/floor/yellow, +/area/shuttle/mining_outpost/shuttle) +"baN" = ( +/obj/structure/bed/chair/shuttle{ + dir = 1 + }, +/turf/simulated/shuttle/floor/yellow, +/area/shuttle/mining_outpost/shuttle) +"baO" = ( +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + dir = 8; + id_tag = "mining_docking"; + pixel_x = 0; + pixel_y = 26 + }, +/turf/simulated/shuttle/floor/yellow, +/area/shuttle/mining_outpost/shuttle) +"baP" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"baQ" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"baR" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"baS" = ( +/turf/simulated/wall/r_wall, +/area/quartermaster/belterdock/refinery) +"baT" = ( +/obj/structure/shuttle/window, +/obj/effect/shuttle_landmark{ + base_area = /area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar; + base_turf = /turf/simulated/floor/tiled; + landmark_tag = "mining_station"; + name = "Mining Outpost Shuttle - Station" + }, +/turf/simulated/floor/airless, +/area/shuttle/mining_outpost/shuttle) +"baW" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) +"boY" = ( +/obj/machinery/door/airlock/glass_external, +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/effect/map_helper/airlock/door/int_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/general) +"bpl" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/engines) +"bvH" = ( +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/cockpit) +"bDn" = ( +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + dir = 4; + frequency = 1380; + id_tag = "securiship_docker"; + pixel_x = -28 + }, +/obj/effect/map_helper/airlock/atmos/pump_out_internal, +/obj/machinery/airlock_sensor{ + pixel_y = 28 + }, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/effect/shuttle_landmark{ + base_area = /area/space; + base_turf = /turf/space; + docking_controller = "securiship_bay"; + landmark_tag = "tether_securiship_dock"; + name = "Securiship Dock" + }, +/obj/effect/overmap/visitable/ship/landable/securiship, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/general) +"cwr" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/table/rack/shelf, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"cNP" = ( +/obj/machinery/computer/ship/helm{ + req_one_access = list(67,58) + }, +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/cockpit) +"deE" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"doX" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/bed/chair/bay/chair/padded/beige{ + icon_state = "bay_chair_preview"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"dSk" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 1 + }, +/obj/machinery/camera/network/security, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/security/hallway) +"ebj" = ( +/obj/machinery/door/airlock/glass_external, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/map_helper/airlock/door/simple, +/turf/simulated/floor/tiled, +/area/security/hallway) +"exP" = ( +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"ePT" = ( +/obj/machinery/power/smes/buildable/point_of_interest, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/engines) +"eZd" = ( +/obj/structure/grille, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 2; + icon_state = "pdoor0"; + id = "securiship blast"; + name = "Shuttle Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/shuttle/securiship/general) +"eZt" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/table/rack/shelf, +/obj/machinery/alarm{ + breach_detection = 0; + dir = 8; + icon_state = "alarm0"; + pixel_x = 25; + rcon_setting = 3; + report_danger_level = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"fxI" = ( +/obj/item/device/radio/intercom{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/structure/filingcabinet, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/hos) +"fGQ" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/bed/chair/bay/chair, +/turf/simulated/floor/tiled/dark, +/area/shuttle/securiship/general) +"gjM" = ( +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/general) +"gkR" = ( +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/engines) +"gxX" = ( +/obj/structure/cable/cyan{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + alarms_hidden = 1; + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/engines) +"gBp" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/bed/chair/bay/chair{ + icon_state = "bay_chair_preview"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/shuttle/securiship/general) +"gJa" = ( +/obj/machinery/door/airlock/multi_tile/metal/mait, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/engines) +"gSE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 10 + }, +/turf/simulated/wall/rshull, +/area/shuttle/securiship/engines) +"gUi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/random/cutout, +/turf/simulated/floor, +/area/maintenance/station/ai) +"hoF" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/engines) +"hyn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 6 + }, +/turf/simulated/wall/rshull, +/area/shuttle/securiship/engines) +"hEY" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"ifk" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/security/hallway) +"isz" = ( +/turf/simulated/wall/rshull, +/area/shuttle/securiship/general) +"iUO" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/hos) +"jjJ" = ( +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/table/standard, +/obj/item/weapon/tank/phoron, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/engines) +"jnQ" = ( +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/hos) +"jrx" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/fuel_port{ + dir = 1 + }, +/turf/simulated/floor/tiled/monofloor{ + dir = 1 + }, +/area/shuttle/securiship/engines) +"jxg" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/command{ + id_tag = "HoSdoor"; + name = "Head of Security"; + req_access = list(58) + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/hos) +"jHa" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"klB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 5 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/engines) +"kqS" = ( +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 9 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"kAs" = ( +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"lmZ" = ( +/obj/machinery/door/airlock/glass_external, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/map_helper/airlock/door/ext_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/general) +"lFr" = ( +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/engines) +"lMN" = ( +/obj/structure/grille, +/obj/structure/cable/green, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/structure/window/reinforced/polarized/full{ + id = "hos_office" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/hos) +"mxs" = ( +/obj/effect/floor_decal/industrial/warning/full, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 8 + }, +/obj/effect/map_helper/airlock/atmos/pump_out_external, +/turf/simulated/floor/airless, +/area/shuttle/securiship/general) +"mLa" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/security/hallway) +"nig" = ( +/obj/effect/floor_decal/techfloor, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/cockpit) +"nin" = ( +/obj/structure/bed/chair/bay/chair{ + icon_state = "bay_chair_preview"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/shuttle/securiship/general) +"nqE" = ( +/obj/machinery/computer/ship/sensors{ + icon_state = "computer"; + dir = 8 + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/cockpit) +"ntp" = ( +/obj/machinery/computer/ship/engines{ + icon_state = "computer"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/cockpit) +"nym" = ( +/obj/machinery/computer/shuttle_control/explore/securiship{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"okJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + icon_state = "intact-fuel"; + dir = 8 + }, +/turf/simulated/wall/rshull, +/area/shuttle/securiship/engines) +"oEa" = ( +/obj/structure/bed/chair/bay/chair/padded/beige{ + icon_state = "bay_chair_preview"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"oGF" = ( +/obj/machinery/door/airlock/glass_external, +/obj/effect/map_helper/airlock/door/simple, +/turf/simulated/floor/tiled, +/area/security/hallway) +"oHo" = ( +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/super; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/cockpit) +"oJa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 6 + }, +/turf/simulated/wall/rshull, +/area/shuttle/securiship/general) +"plY" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + icon_state = "map-fuel"; + dir = 1 + }, +/turf/simulated/wall/rshull, +/area/shuttle/securiship/engines) +"pYS" = ( +/obj/structure/grille, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 2; + icon_state = "pdoor0"; + id = "securiship blast"; + name = "Shuttle Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/shuttle/securiship/general) +"qwY" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/bed/chair/bay/chair/padded/beige, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"qDa" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/machinery/atmospherics/portables_connector/aux, +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"rfZ" = ( +/obj/machinery/door/airlock/glass_external, +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/airlock_sensor/airlock_exterior/shuttle{ + dir = 4; + pixel_x = 0; + pixel_y = -28 + }, +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/general) +"rgV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/hos) +"rhI" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"rlz" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/hos) +"rBj" = ( +/obj/structure/grille, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "securiship blast"; + name = "Shuttle Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/shuttle/securiship/cockpit) +"rFu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 8 + }, +/obj/machinery/airlock_sensor{ + pixel_y = 28 + }, +/obj/effect/map_helper/airlock/sensor/int_sensor, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"rIa" = ( +/obj/structure/cable/green{ + icon_state = "1-2"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"rUg" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"sio" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/engines) +"sYy" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + icon_state = "map_connector-fuel"; + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/engines) +"tqy" = ( +/obj/structure/grille, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "hos_office" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/hos) +"trD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/wall/rshull, +/area/shuttle/securiship/general) +"uzs" = ( +/obj/machinery/shipsensors{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/full, +/turf/simulated/floor/airless, +/area/shuttle/securiship/cockpit) +"vlw" = ( +/obj/machinery/door/window/brigdoor/eastleft, +/turf/simulated/floor/tiled/dark, +/area/shuttle/securiship/general) +"vqZ" = ( +/turf/simulated/wall/rshull, +/area/shuttle/securiship/cockpit) +"vsJ" = ( +/turf/simulated/floor/tiled/dark, +/area/shuttle/securiship/general) +"vyd" = ( +/obj/machinery/light, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/binary/pump/fuel, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/engines) +"vFD" = ( +/obj/structure/catwalk, +/obj/random/cutout, +/turf/simulated/floor, +/area/maintenance/station/sec_upper) +"wIZ" = ( +/obj/effect/floor_decal/techfloor{ + dir = 6 + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/cockpit) +"wRu" = ( +/obj/effect/floor_decal/techfloor/corner{ + dir = 1 + }, +/obj/structure/bed/chair/bay/chair/padded/beige{ + icon_state = "bay_chair_preview"; + dir = 1 + }, +/obj/machinery/button/remote/blast_door{ + dir = 2; + id = "securiship blast"; + name = "Shuttle Blast Doors"; + pixel_x = -28; + pixel_y = 28; + req_access = list(67) + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/shuttle/securiship/cockpit) +"xaA" = ( +/obj/structure/grille, +/obj/structure/cable/green, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/structure/window/reinforced/polarized/full{ + id = "hos_office" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/hos) +"xeo" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel, +/turf/simulated/wall/rshull, +/area/shuttle/securiship/engines) +"xmG" = ( +/obj/structure/grille, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "hos_office" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/hos) +"xny" = ( +/obj/machinery/atmospherics/unary/engine{ + dir = 1 + }, +/turf/simulated/floor/airless, +/area/shuttle/securiship/engines) +"xou" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/bed/chair/bay/chair, +/turf/simulated/floor/tiled/dark, +/area/shuttle/securiship/general) +"xqB" = ( +/turf/simulated/wall/rshull, +/area/shuttle/securiship/engines) +"yau" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + icon_state = "intact-aux"; + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/securiship/general) +"ygj" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/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/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + dir = 2; + frequency = 1380; + id_tag = "securiship_bay"; + pixel_x = -22; + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/security/hallway) (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 -QT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aQT "} (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 -XR -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aXR +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aae +aot +aad +aad +aae +aad +aad +aad +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aae +aaa +aaa +aae +aae +aae +aad +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -YB -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aYB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +uzs +vqZ +vqZ +vqZ +isz +pYS +pYS +isz +isz +xqB +xqB +xqB +xqB +xqB +aaa +aae +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aae +aaa +vqZ +vqZ +ntp +oHo +doX +oEa +fGQ +vsJ +nin +xqB +ePT +jjJ +hyn +xny +aaa +aae +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aae +aae +aaa +rBj +cNP +wRu +nig +kAs +kAs +xou +vlw +gBp +xqB +gxX +bpl +plY +xny +aaa +aae +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aae +aaa +rBj +bvH +nqE +wIZ +jHa +rhI +qwY +jHa +jHa +gJa +sio +jrx +okJ +xqB +aaa +aae +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +isz +qDa +rUg +deE +hEY +yau +kAs +exP +rIa +lFr +gkR +vyd +xeo +xqB +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -VL -ae -ad -aa -gm -aa -ad -ad -ae -ot -ad -ad -ae -ad -ad -ad -ae -ad -ad -ad -ae -ad -ad -ad -ae -ad -ad -ad -ae -ad -ad -ad -ae -ad -ad -ad -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aVL +aae +aad +aaa +agm +aaa +aae +aaa +isz +isz +isz +isz +isz +rFu +kAs +cwr +oEa +xqB +hoF +klB +plY +xny +aaa +aae +aad +aad +aad +aad +aae +aad +aad +aad +aae +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ad -ad -ad -ad -gm -ad -ad -ae -ad -ad -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -VL -aa -ae -aa -ae -aa -aa -aa -ae -aa -aa -aa -ae -aa -aa -aa -ae -aa -aa -aa -ae -aa -aa -aa -ae -aa -aa -aa -ae -aa -aa -aa -ae -aa -aa -ae -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aad +agm +aad +aad +aae +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aVL +aaa +aae +aaa +aae +aaa +aae +aaa +oJa +trD +bDn +gjM +boY +kqS +rIa +eZt +nym +xqB +sYy +sYy +gSE +xny +aaa +aae +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aae +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ad -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -VL -YW -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -YW -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ad -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aVL +aYW +aae +aae +aae +aae +aae +aaa +mxs +isz +lmZ +rfZ +isz +eZd +eZd +isz +eZd +xqB +xqB +xqB +xqB +xqB +aaa +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ad -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -ZF -je -je -je -je -lj -lu -je -je -je -lj -lZ -qc -qv -rd -qc -sL -tG -uF -aa -ae -aa -aa -aa -ae -aa -yB -aa -ae -aa -aa -aa -ae -aa -aa -ad -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aab +aab +aaa +aaa +aaa +aaa +aaa +aab +aje +aje +aje +aje +alj +alu +aje +aje +aje +alj +alZ +aje +ebj +oGF +aqc +aqv +ard +aqc +asL +atG +auF +aaa +aaa +aaa +aaa +aaa +aae +aaa +ayB +aaa +aae +aaa +aaa +aaa +aae +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ad -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -ab -ZF -je -LS -WH -Uk -my -kv -nD -nW -TO -oW -ZM -mb -qw -re -sa -fO -tH -uG -vs -ae -aa -JW -xv -xw -xw -xw -xw -xw -xv -JW -aa -ae -aa -aa -ad -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aab +aab +aab +aab +aaa +aaa +aaa +aab +aab +aje +aLS +aWH +aUk +amy +akv +anD +anW +aTO +aoW +aZM +tqy +ygj +atY +amb +aqw +are +asa +afO +atH +auG +avs +aaa +aaa +aJW +axv +axw +axw +axw +axw +axw +axv +aJW +aaa +aae +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ad -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ZF -je -Ui -iS -Qn -Yu -Vp -Ve -nX -TW -oX -Sc -mE -qx -rf -sb -sM -tI -uI -vs -ae -aa -xv -xw -xw -xw -xw -xw -xw -xw -xv -aa -ae -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aje +aUi +aiS +aQn +aYu +aVp +aVe +anX +aTW +aoX +aSc +lMN +mLa +apG +amb +aqx +arf +asb +asM +atI +auI +avs +aaa +aaa +axv +axw +axw +axw +axw +axw +axw +axw +axv +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ad -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ZF -je -je -je -je -Uu -jM -nE -Rq -YC -kv -SP -mF -qy -rg -sc -sN -gc -qc -vs -vs -vs -xw -xw -ze -zS -yR -BV -CT -xw -xw -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aje +aje +aje +aje +aUu +ajM +anE +aRq +aYC +akv +aSP +xmG +mLa +apG +amb +aqy +arg +asc +asN +agc +aqc +avs +avs +avs +axw +axw +aze +azS +ayR +aBV +aCT +axw +axw +avt +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ad -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -je -VK -jM -nF -eG -ov -oZ -fr -qc -mG -rh -wS -sO -tJ -qc -vs -vt -tb -xw -xw -zf -zT -Bb -BW -CU -xw -xw -Kq -vt -vt -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aje +aVK +ajM +anF +aeG +aov +aoZ +afr +aje +dSk +ifk +aqc +amG +arh +awS +asO +atJ +aqc +avs +avt +atb +axw +axw +azf +azT +aBb +aBW +aCU +axw +axw +aKq +avt +avt +avt +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ae -aa -aa -aa -ab -ab -ab -ab -ab -ao -ao -ao -ao -ao -ao -ao -ao -ao -ao -ao -ab -ab -ab -ab -je -YV -jM -TD -eH -ow -Un -cZ -mb -qz -ri -sd -sP -tK -qc -vt -vt -vt -xw -xw -zg -OY -Bc -BX -PA -xw -xw -vt -we -vt -vt -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aab +aab +aab +aab +aab +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aab +aje +aYV +ajM +aTD +aeH +aow +rlz +rgV +jxg +aUn +acZ +amb +aqz +ari +asd +asP +atK +aqc +avt +avt +avt +axw +axw +azg +aOY +aBc +aBX +aPA +axw +axw +avt +awe +avt +avt +aab +aab +aab +aab +aab +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ad -aa -aa -aa -ab -ab -ab -ab -ao -ao -ao -ao -ao -ao -ao -ao -ao -ao -ao -ao -ab -ab -ab -ab -je -hd -WN -et -Yx -Wh -pa -Sz -mE -qA -rj -se -sM -tL -uH -vt -vt -vt -xw -xw -zh -zT -Bd -BY -CW -xw -xw -vt -vt -vt -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aab +aab +aab +aab +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aab +aje +ahd +aWN +aet +aYx +aWh +jnQ +iUO +xaA +apa +aSz +amb +aqA +arj +ase +asM +atL +auH +avt +avt +avt +axw +axw +azh +azT +aBd +aBY +aCW +axw +axw +avt +avt +avt +aab +aab +aab +aab +aab +aab +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ad -ad -ab -ab -ab -ab -ao -ao -ao -ao -bR -iu -ck -cm -jE -QU -jR -ju -ju -ao -ab -ab -ab -ab -je -kI -Uy -kO -oa -ox -ff -pC -mF -qB -rk -sf -sQ -tM -uI -vt -we -vt -xv -xw -zi -zU -Be -zU -CX -xw -xv -we -vt -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aab +aab +aab +aab +aao +aao +aao +aao +abR +aiu +ack +acm +ajE +aQU +ajR +aju +aju +aao +aab +aje +akI +aUy +akO +fxI +aox +amy +aoa +xmG +aff +atT +amb +aqB +ark +asf +asQ +atM +auI +avt +awe +avt +axv +axw +azi +azU +aBe +azU +aCX +axw +axv +awe +avt +aab +aab +aab +aab +aab +aab +aab +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -aO -aa -aa -aa -aa -ab -ab -ab -ao -ao -ao -ao -ao -if -iv -iL -jg -jg -QU -iZ -ju -ju -ko -ko -ko -ko -ko -ZY -ZY -ZY -ZY -ZY -ZY -av -ma -qd -qC -pB -qd -qC -qC -qc -vt -vt -vt -JX -xw -zj -xw -dG -xw -zj -xw -JX -vt -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaO +aaa +aaa +aaa +aaa +aab +aab +aab +aao +aao +aao +aao +aao +aif +aiv +aiL +ajg +ajg +aQU +aiZ +aju +aju +ako +ako +ako +ako +ako +aZY +aZY +aZY +aZY +aZY +aZY +aav +ama +aqd +aqC +apB +aqd +aqC +aqC +aqc +avt +avt +avt +aJX +axw +azj +axw +adG +axw +azj +axw +aJX +avt +aab +aab +aab +aab +aab +aab +aab +aab +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (37,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -ae -aa -aa -aa -ab -ab -ab -ab -ao -ao -aH -hA -hS -ig -iw -iM -ja -ja -ja -ja -ja -kc -ko -tQ -hC -kY -eT -mc -mx -eu -nH -ob -mh -pb -fs -qe -qD -rm -sg -sR -tN -uJ -vt -vt -vt -we -vt -zk -zV -Bg -BZ -CY -vt -vt -vt -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aae +aaa +aaa +aaa +aab +aab +aab +aab +aao +aao +aaH +ahA +ahS +aig +aiw +aiM +aja +aja +aja +aja +aja +akc +ako +atQ +ahC +akY +aeT +amc +amx +aeu +anH +aob +amh +apb +atY +aqe +aqD +arm +asg +asR +atN +auJ +avt +avt +avt +awe +avt +azk +azV +aBg +aBZ +aCY +avt +avt +avt +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (38,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -ae -aa -aa -ab -ab -ab -ab -ab -ao -ao -dN -hB -hT -ih -ix -ih -jb -fM -ih -jF -bd -ke -ko -kz -kL -kZ -lx -eq -mA -nj -nI -oc -fd -pc -nN -qe -qE -rm -sh -sS -tO -uJ -vt -vt -vt -vt -vt -zl -zW -ki -Ca -CZ -vt -vt -vt -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aae +aaa +aaa +aab +aab +aab +aab +aab +aao +aao +adN +ahB +ahT +aih +aix +aih +ajb +afM +aih +ajF +abd +ake +ako +akz +akL +akZ +alx +aeq +amA +anj +anI +aoc +afd +apc +apG +aqe +aqE +arm +ash +asS +atO +auJ +avt +avt +avt +avt +avt +azl +azW +aki +aCa +aCZ +avt +avt +avt +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (39,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ae -ae -ae -Rg -ae -ae -ab -ab -ab -ai -ai -ai -ao -hf -fJ -bx -ii -bd -iN -jc -ji -en -kd -jS -rA -ko -kA -dz -la -eT -md -mB -nk -nJ -eK -mh -mj -mK -fH -qF -rn -si -sT -DV -uJ -vu -nn -nn -nn -vu -uO -xx -Bi -Cb -sp -we -vt -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -KE -KE -KE -KE -KE -Tb -WF -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aae +aae +aRg +aae +aae +aab +aab +aab +aai +aai +aai +aao +ahf +afJ +abx +aii +abd +aiN +ajc +aji +aen +akd +ajS +arA +ako +akA +adz +ala +aeT +amd +amB +ank +anJ +aeK +amh +amj +ifk +afH +aqF +arn +asi +asT +aDV +auJ +avu +ann +ann +ann +avu +auO +axx +aBi +aCb +asp +awe +avt +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aKE +aKE +aKE +aKE +aKE +aTb +aWF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (40,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -Rg -aa -aa -ab -ab -ai -ai -ai -ai -ai -ai -ai -dI -dI -iy -iO -jd -dI -dI -jG -jT -ao -ko -fk -fz -fW -eT -me -mB -ev -SE -od -mh -pd -mL -fH -qG -ro -sj -sT -qg -uJ -qS -wg -wg -xy -yi -og -zY -Bj -Qk -Da -Da -Da -Da -Da -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -KE -IN -Wv -KE -Vv -Nl -Yz -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aRg +aaa +aaa +aab +aab +aai +aai +aai +aai +aai +aai +aai +adI +adI +aiy +aiO +ajd +adI +adI +ajG +ajT +aao +ako +afk +afz +afW +aeT +ame +amB +aev +aSE +aod +amh +apd +amL +afH +aqG +aro +asj +asT +aqg +auJ +aqS +awg +awg +axy +ayi +aog +azY +aBj +aQk +aDa +aDa +aDa +aDa +aDa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aKE +aIN +aWv +aKE +aVv +aNl +aYz +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (41,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -ed -Rg -bh -aa -aa -ab -ai -ai -aZ -gz -bg -hg -hD -dI -ij -ez -cu -iP -jj -dI -jH -ee -kf -ko -kB -fA -fX -ly -mf -mC -mf -nL -mf -oy -pe -ft -qf -qH -rp -sk -sU -tR -uJ -vw -wh -wh -xz -yj -og -zZ -Bk -BC -Da -DE -EA -Fo -Da -Da -ab -ab -ab -ab -WE -ab -ab -ab -ab -KE -Qx -Nl -Md -Nl -Nl -Yz -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aed +aRg +abh +aaa +aaa +aab +aai +aai +aaZ +agz +abg +ahg +ahD +adI +aij +aez +acu +aiP +ajj +adI +ajH +aee +akf +ako +akB +afA +afX +aly +amf +amC +amf +anL +amf +aoy +ape +aft +aqf +aqH +arp +ask +asU +atR +auJ +avw +awh +awh +axz +ayj +aog +azZ +aBk +aBC +aDa +aDE +aEA +aFo +aDa +aDa +aab +aab +aab +aab +aWE +aab +aab +aab +aab +aKE +aQx +aNl +aMd +aNl +aNl +aYz +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (42,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ae -ae -aJ -Rg -bh -aa -aa -ab -ai -ai -gn -gA -gN -hh -hE -hU -ez -ez -bC -dn -cL -dI -dJ -ef -eA -eT -kC -fB -fY -eT -jv -mD -nl -nM -oe -mh -pf -pG -qe -qI -rm -sl -sR -Np -uJ -vx -wh -wM -xA -yk -og -Aa -Bl -SI -Da -AY -EB -Fp -Gf -Da -ab -ab -ab -ab -ab -ab -ab -ab -ab -KE -Tt -Yh -KE -Nl -Wr -KE -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aae +aaJ +aRg +abh +aaa +aaa +aab +aai +aai +agn +agA +agN +ahh +ahE +ahU +aez +aez +abC +adn +acL +adI +adJ +aef +aeA +aeT +akC +afB +afY +aeT +ajv +amD +anl +anM +aoe +amh +apf +apG +aqe +aqI +arm +asl +asR +aNp +auJ +avx +awh +awM +axA +ayk +aog +aAa +aBl +aSI +aDa +aAY +aEB +aFp +aGf +aDa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aKE +aTt +aYh +aKE +aNl +aWr +aKE +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (43,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -ed -Rg -bh -aa -aa -aa -ai -ai -go -gB -gO -hi -hF -dI -bD -fl -cN -do -dI -dI -dK -iR -eB -eT -eT -fC -eT -eT -mh -mh -ep -mh -mh -ep -pg -pG -fH -qe -eO -fH -qe -qe -uJ -vy -wh -wh -xB -nZ -uO -Ab -Bm -Cd -Db -DG -EC -Fq -Gg -Da -ab -ab -ab -ab -ab -ab -ab -ab -ab -KE -Yp -KE -KE -MO -Nm -KE -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aed +aRg +abh +aaa +aaa +aaa +aai +aai +ago +agB +agO +ahi +ahF +adI +abD +afl +acN +ado +adI +adI +adK +aiR +aeB +aeT +aeT +afC +aeT +aeT +amh +amh +aep +amh +amh +aep +apg +apG +afH +aqe +aeO +afH +aqe +aqe +auJ +avy +awh +awh +axB +anZ +auO +aAb +aBm +aCd +aDb +aDG +aEC +aFq +aGg +aDa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aKE +aYp +aKE +aKE +aMO +aNm +aKE +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (44,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -Rg -aa -aa -aa -aa -ai -ai -gp -gC -gP -bZ -bv -dI -dU -ez -bE -RB -fn -dp -dL -eh -eC -eV -ip -fD -ga -lz -ej -fm -eE -lz -lz -Kr -ph -pI -aA -qJ -rr -sm -sV -tS -mI -vz -wh -Cu -xC -ym -zm -Ac -Bn -Ce -Dc -DH -EC -Fr -Gh -Da -ab -ab -ab -ab -ab -ab -ab -ab -ab -KE -Qf -Zx -Md -Zu -Tf -KE -ab -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aRg +aaa +aaa +aaa +aaa +aai +aai +agp +agC +agP +abZ +abv +adI +adU +aez +abE +aRB +afn +adp +adL +aeh +aeC +aeV +aip +afD +aga +alz +aej +afm +aeE +alz +alz +aKr +aph +apI +aaA +aqJ +arr +asm +asV +atS +amI +avz +awh +aCu +axC +aym +azm +aAc +aBn +aCe +aDc +aDH +aEC +aFr +aGh +aDa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aKE +aQf +aZx +aMd +aZu +aTf +aKE +aab +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (45,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ae -ae -ae -Rg -ae -ae -ae -ae -ai -ai -gq -gD -gQ -bl -hG -dI -il -bo -bF -cc -bq -dp -jI -bI -cR -ei -jK -QW -lb -lA -eo -jl -fF -nN -nN -fe -pi -fu -aG -lA -rs -lA -DO -pF -mJ -vA -wh -wh -xD -yn -uO -Ad -Bo -Cf -Db -DI -EC -Fq -Gi -Da -ab -ab -ab -ab -ab -ab -ab -ab -ab -KE -KE -KE -KE -MP -Qp -KE -ab -ab -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aae +aae +aRg +aae +aae +aae +aae +aai +aai +agq +agD +agQ +abl +ahG +adI +ail +abo +abF +acc +abq +adp +ajI +abI +acR +aei +ajK +aQW +alb +alA +aeo +ajl +afF +anN +anN +afe +api +afu +aaG +alA +ars +alA +aDO +apF +amJ +avA +awh +awh +axD +ayn +auO +aAd +aBo +aCf +aDb +aDI +aEC +aFq +aGi +aDa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aKE +aKE +aKE +aKE +aMP +aQp +aKE +aab +aab +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (46,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -Rg -aa -aa -aa -aa -ai -ai -gr -gE -gO -hi -bS -dI -dI -bq -bq -cd -dI -mv -dM -er -cP -cP -jL -eD -cP -lB -lB -lB -no -as -as -oz -oz -fv -oz -oz -oz -oz -pD -ql -uM -vB -wh -wM -xE -yk -og -Ae -Bo -Ca -xh -DJ -ED -Fs -Gj -Da -ab -ab -ab -ab -ab -ab -ab -ab -ab -KE -Hf -Mf -Md -MQ -KV -KE -ab -ab -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aRg +aaa +aaa +aaa +aaa +aai +aai +agr +agE +agO +ahi +abS +adI +adI +abq +abq +acd +adI +amv +adM +aer +acP +acP +ajL +aeD +acP +alB +alB +alB +ano +aas +aas +aoz +aoz +afv +aoz +aoz +aoz +aoz +apD +aql +auM +avB +awh +awM +axE +ayk +aog +aAe +aBo +aCa +axh +aDJ +aED +aFs +aGj +aDa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aKE +aHf +aMf +aMd +aMQ +aKV +aKE +aab +aab +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (47,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -ed -Rg -bh -aa -ab -ab -ai -ai -gs -gF -gP -hj -hI -hV -ah -ch -bH -ce -cQ -jw -cx -ek -cP -QV -kD -hH -cP -lC -lC -lC -lC -nO -nN -oz -pj -pJ -mg -qK -rt -oz -sY -tV -nm -vC -wh -wh -xF -yo -og -Af -Bp -zX -Df -Df -Df -Df -Df -Df -Df -Jr -Jr -Jr -Jr -Jr -Jr -Jr -Jr -KW -KW -KW -KW -MR -KW -KW -KW -KW -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aed +aRg +abh +aaa +aab +aab +aai +aai +ags +agF +agP +ahj +ahI +ahV +aah +ach +abH +ace +acQ +ajw +acx +aek +acP +aQV +akD +ahH +acP +alC +alC +alC +alC +anO +anN +aoz +apj +apJ +amg +aqK +art +aoz +asY +atV +anm +avC +awh +awh +axF +ayo +aog +aAf +aBp +azX +aDf +aDf +aDf +aDf +aDf +aDf +aDf +aJr +aJr +aJr +aJr +aJr +aJr +aJr +aJr +aKW +aKW +aKW +aKW +aMR +aKW +aKW +aKW +aKW +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (48,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ae -ae -aJ -Rg -bh -aa -ab -ab -ai -ai -gn -gA -gN -hk -hE -hW -al -ci -bI -cr -cR -jx -cR -mS -eD -kN -kE -wR -eD -lC -lC -lC -lC -nO -JM -oz -fo -pK -WY -qL -fL -fN -sZ -tW -uO -rM -wi -wN -xG -yp -og -Aa -Bq -Ch -Dg -DK -EE -Ft -Gk -Gk -Gk -Jr -Hp -Hh -HT -IB -Jn -Ka -Jr -KX -LC -Lr -MB -MS -No -Jm -Kj -KW -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aae +aaJ +aRg +abh +aaa +aab +aab +aai +aai +agn +agA +agN +ahk +ahE +ahW +aal +aci +abI +acr +acR +ajx +acR +amS +aeD +akN +akE +awR +aeD +alC +alC +alC +alC +anO +aJM +aoz +afo +apK +aWY +aqL +afL +afN +asZ +atW +auO +arM +awi +awN +axG +ayp +aog +aAa +aBq +aCh +aDg +aDK +aEE +aFt +aGk +aGk +aGk +aJr +aHp +aHh +aHT +aIB +aJn +aKa +aJr +aKX +aLC +aLr +aMB +aMS +aNo +aJm +aKj +aKW +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (49,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -ed -Rg -bh -aa -ab -ab -ai -ai -gt -gG -bi -ap -az -ai -bU -iz -iQ -cf -ct -ct -ct -ct -cU -eD -eD -eD -cU -lD -lD -mH -lD -lD -mH -oz -pk -pL -fI -qM -ru -oz -ta -pG -uP -uP -uP -uP -uP -uP -uP -Ag -Br -Ci -Dh -DL -Ba -Fu -Gk -Gk -Gk -Jr -GU -Hi -HU -IC -Jo -JV -Jr -KY -LD -Mh -MC -MT -Ld -Ld -Ld -TP -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aed +aRg +abh +aaa +aab +aab +aai +aai +agt +agG +abi +aap +aaz +aai +abU +aiz +aiQ +acf +act +act +act +act +acU +aeD +aeD +aeD +acU +alD +alD +amH +alD +alD +amH +aoz +apk +apL +afI +aqM +aru +aoz +ata +apG +auP +auP +auP +auP +auP +auP +auP +aAg +aBr +aCi +aDh +aDL +aBa +aFu +aGk +aGk +aGk +aJr +aGU +aHi +aHU +aIC +aJo +aJV +aJr +aKY +aLD +aMh +aMC +aMT +aLd +aLd +aLd +aTP +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (50,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -Rg -cv -cv -cv -cv -ai -ai -ai -ai -ai -ai -ai -ai -ai -NY -iR -cg -jk -jk -jk -jk -jk -jk -jk -jk -gb -cT -cT -jy -jk -jk -of -oA -oA -fw -oA -oA -oA -oA -pH -tT -uQ -vE -wj -wO -xH -yq -zn -Ae -Bo -Cj -xu -Fd -Fd -Fd -Fd -Fd -Fd -yJ -yJ -Hj -HV -ID -Jp -Fm -Jr -KZ -LE -Mi -Ld -MU -Ut -Ld -Ld -TP -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aRg +acv +acv +acv +acv +aai +aai +aai +aai +aai +aai +aai +aai +aai +aNY +aiR +acg +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +agb +acT +acT +ajy +ajk +ajk +aof +aoA +aoA +afw +aoA +aoA +aoA +aoA +apH +atT +auQ +avE +awj +awO +axH +ayq +azn +aAe +aBo +aCj +axu +aFd +aFd +aFd +aFd +aFd +aFd +ayJ +ayJ +aHj +aHV +aID +aJp +aFm +aJr +aKZ +aLE +aMi +aLd +aMU +aUt +aLd +aLd +aTP +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (51,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ae -ae -ae -Rg -cv -cv -cv -gd -gh -gf -gf -gH -gR -hl -aB -aP -hp -cj -iR -cg -cS -jk -jk -jk -jk -jk -jk -jk -jk -cV -cV -jk -jk -jk -lv -oB -lU -pM -qh -fK -rv -lw -qP -tX -uR -vF -wk -wP -xI -yr -zo -Ae -Bs -Ck -yl -Al -BE -BQ -Ef -EZ -FH -FZ -yJ -Hk -HV -IE -Jq -Kd -Jr -La -LF -Mj -VA -MV -ME -QE -Ld -TP -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aae +aae +aRg +acv +acv +acv +agd +agh +agf +agf +agH +agR +ahl +aaB +aaP +ahp +acj +aiR +acg +acS +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +acV +acV +ajk +ajk +ajk +alv +aoB +alU +apM +aqh +afK +arv +alw +aqP +atX +auR +avF +awk +awP +axI +ayr +azo +aAe +aBs +aCk +ayl +aAl +aBE +aBQ +aEf +aEZ +aFH +aFZ +ayJ +aHk +aHV +aIE +aJq +aKd +aJr +aLa +aLF +aMj +aVA +aMV +aME +aQE +aLd +aTP +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (52,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -Rg -cv -cv -cv -ge -gf -gk -gu -gk -gR -hm -aC -aQ -hp -br -bK -cf -cT -jy -jk -jk -jk -jk -jk -jk -jk -jk -jk -jk -jk -jk -lv -oC -SG -Rs -qi -qN -rw -lw -pg -tY -uS -vG -wl -wQ -Vn -ys -zp -Ae -Bo -Ck -yI -Am -ER -Dn -Eg -Fa -FG -HW -GV -Jt -HV -IF -LT -Ke -Lp -Ld -Ld -Mk -VA -MW -MF -QE -NH -TP -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aRg +acv +acv +acv +age +agf +agk +agu +agk +agR +ahm +aaC +aaQ +ahp +abr +abK +acf +acT +ajy +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +alv +aoC +aSG +aRs +aqi +aqN +arw +alw +apg +atY +auS +avG +awl +awQ +aVn +ays +azp +aAe +aBo +aCk +ayI +aAm +aER +aDn +aEg +aFa +aFG +aHW +aGV +aJt +aHV +aIF +aLT +aKe +aLp +aLd +aLd +aMk +aVA +aMW +aMF +aQE +aNH +aTP +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (53,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -Rg -cv -cv -cv -gf -gf -gf -gv -gf -gR -hn -aC -aR -bf -bs -iR -cf -cT -jy -jk -jk -jk -jk -jk -jk -jk -jk -jk -jk -jk -Ql -of -oD -pn -DP -nu -qN -rx -lw -td -pG -mH -uP -wm -sW -xJ -uP -uP -Ah -Bt -Cc -yI -BF -Vm -Do -Eh -Fb -FI -Gl -GW -Hl -HX -IG -Kh -Kf -KF -Lc -Ld -Ml -Ld -MG -Th -Ld -Ld -TP -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aRg +acv +acv +acv +agf +agf +agf +agv +agf +agR +ahn +aaC +aaR +abf +abs +aiR +acf +acT +ajy +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +aQl +aof +aoD +apn +aDP +anu +aqN +arx +alw +atd +apG +amH +auP +awm +asW +axJ +auP +auP +aAh +aBt +aCc +ayI +aBF +aVm +aDo +aEh +aFb +aFI +aGl +aGW +aHl +aHX +aIG +aKh +aKf +aKF +aLc +aLd +aMl +aLd +aMG +aTh +aLd +aLd +aTP +avt +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (54,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ae -ae -ae -Rg -cv -cv -cv -ge -gf -gk -ba -gI -gS -au -aD -bG -ca -iA -bM -cg -cV -jk -jk -jk -jk -jk -jk -jk -jk -cS -cS -jk -jk -jk -lw -oE -po -pO -qj -qO -pO -sn -tf -tW -uT -vH -wn -Rf -wn -yt -zq -Ae -Bs -Ck -yI -Am -ER -FG -Ei -FG -FJ -Gm -yJ -Hm -Kh -IH -Js -Kg -Lp -Ld -Ld -Mm -MH -MH -MH -Nz -Ux -TP -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aae +aae +aRg +acv +acv +acv +age +agf +agk +aba +agI +agS +aau +aaD +abG +aca +aiA +abM +acg +acV +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +acS +acS +ajk +ajk +ajk +alw +aoE +apo +apO +aqj +aqO +apO +asn +atf +atW +auT +avH +awn +aRf +awn +ayt +azq +aAe +aBs +aCk +ayI +aAm +aER +aFG +aEi +aFG +aFJ +aGm +ayJ +aHm +aKh +aIH +aJs +aKg +aLp +aLd +aLd +aMm +aMH +aMH +aMH +aNz +aUx +aTP +avt +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (55,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -Rg -cv -cv -cv -gf -gf -gf -gw -gf -gR -ho -hJ -aS -bf -iB -bN -cg -jk -jk -jk -jk -jk -jk -jk -jk -gb -cT -cT -jy -jk -jk -lw -oF -pp -pP -qi -mz -ry -lw -tZ -ua -uU -vI -wo -wT -xK -yu -zq -fT -kn -Qj -yJ -Az -BG -Dp -Ei -Fc -BG -Gn -yJ -Hn -HY -II -Ju -Ki -KG -GN -Ld -Mn -MI -MY -Nq -NA -OP -KW -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aRg +acv +acv +acv +agf +agf +agf +agw +agf +agR +aho +ahJ +aaS +abf +aiB +abN +acg +ajk +ajk +ajk +ajk +ajk +ajk +ajk +ajk +agb +acT +acT +ajy +ajk +ajk +alw +aoF +app +apP +aqi +amz +ary +alw +atZ +aua +auU +avI +awo +awT +axK +ayu +azq +afT +akn +aQj +ayJ +aAz +aBG +aDp +aEi +aFc +aBG +aGn +ayJ +aHn +aHY +aII +aJu +aKi +aKG +aGN +aLd +aMn +aMI +aMY +aNq +aNA +aOP +aKW +avt +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (56,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -Rg -cv -cv -cv -ge -gi -gk -gf -gk -gR -bb -aE -dQ -bf -ci -bO -cf -cW -cW -cf -cW -cW -cf -ct -ct -cf -lD -lD -mH -lD -lD -of -lw -lw -lw -qk -lw -lw -oA -pE -qR -uV -vJ -wp -wU -xL -yv -zq -xM -kw -pN -yl -yJ -BJ -BJ -Ej -LB -BJ -yJ -yJ -Ho -Lp -IJ -Lp -Lp -Jr -Lg -Lg -Mo -Lg -Lg -KW -KW -KW -KW -NW -NW -NW -NW -NW -NW -NW -NW -NW -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aRg +acv +acv +acv +age +agi +agk +agf +agk +agR +abb +aaE +adQ +abf +aci +abO +acf +acW +acW +acf +acW +acW +acf +act +act +acf +alD +alD +amH +alD +alD +aof +alw +alw +alw +aqk +alw +alw +aoA +apE +aqR +auV +avJ +awp +awU +axL +ayv +azq +axM +akw +apN +ayl +ayJ +aBJ +aBJ +aEj +aLB +aBJ +ayJ +ayJ +aHo +aLp +aIJ +aLp +aLp +aJr +aLg +aLg +aMo +aLg +aLg +aKW +aKW +aKW +aKW +aNW +aNW +aNW +aNW +aNW +aNW +aNW +aNW +aNW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (57,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ae -ae -ae -Rg -cv -cv -cv -cv -cv -cv -cv -cv -cv -cv -cv -cv -cv -iC -bP -lc -cM -cX -ik -cM -cM -kq -cM -cM -UC -lE -lE -jz -mi -nP -oi -lE -lE -pQ -np -nA -lE -aK -th -uc -aM -vK -wp -wn -xL -yw -fR -hZ -mX -pS -Dl -AA -FK -Dq -Ek -Fe -FK -Go -Iy -HK -HZ -IK -Jv -Gc -KH -Li -LG -Mp -Le -MZ -Iy -ab -ab -ab -NW -Oj -Oy -Ny -NW -Oj -Oy -Ny -NW -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aae +aae +aRg +acv +acv +acv +acv +acv +acv +acv +acv +acv +acv +acv +acv +acv +aiC +abP +alc +acM +acX +aik +acM +acM +akq +acM +acM +aUC +alE +alE +ajz +ami +anP +aoi +alE +alE +apQ +anp +anA +alE +aaK +ath +auc +aaM +avK +awp +awn +axL +ayw +afR +ahZ +amX +apS +aDl +aAA +aFK +aDq +aEk +aFe +aFK +aGo +aIy +aHK +aHZ +aIK +aJv +aGc +aKH +aLi +aLG +aMp +aLe +aMZ +aIy +aab +aab +aab +aNW +aOj +aOy +aNy +aNW +aOj +aOy +aNy +aNW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (58,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -Rg -Rg -Rg -Rg -gg -ab -ab -ab -aU -aj -bn -hK -hY -in -iD -bQ -co -kr -jA -im -jU -cY -kr -kr -hR -ld -lF -mk -oG -nq -nQ -oj -oG -pq -pR -qm -oY -rz -aL -ti -ud -aN -vL -wq -wV -vD -yx -yL -jf -nc -qQ -yK -AB -Cl -Cl -El -Cl -Cl -DF -Iy -Hq -Lh -IL -Lh -Lh -Lh -Lh -Lh -Mq -Lh -Na -Iy -ab -ab -ab -NW -Ok -OA -Lf -NW -Ok -OA -Lf -NW -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aRg +aRg +aRg +aRg +agg +aab +aab +aab +aaU +aaj +abn +ahK +ahY +ain +aiD +abQ +aco +akr +ajA +aim +ajU +acY +akr +akr +ahR +ald +alF +amk +aoG +anq +anQ +aoj +aoG +apq +apR +aqm +aoY +arz +aaL +ati +aud +aaN +avL +awq +awV +avD +ayx +ayL +ajf +anc +aqQ +ayK +aAB +aCl +aCl +aEl +aCl +aCl +aDF +aIy +aHq +aLh +aIL +aLh +aLh +aLh +aLh +aLh +aMq +aLh +aNa +aIy +aab +aab +aab +aNW +aOk +aOA +aLf +aNW +aOk +aOA +aLf +aNW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (59,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -aa -aa -Rh -Ri -Rj -gg -ab -ab -ab -aU -gT -hq -hL -aT -in -bt -iR -YT -cw -cw -cw -de -cw -cw -cw -dR -le -eX -aq -eX -eX -eX -at -eX -pr -lC -Pq -mH -rB -mH -tj -NE -mH -uP -uP -uP -uP -uP -zt -yA -nf -Ch -yM -AC -Cl -Cl -Em -Cl -Cl -Gq -GX -Hr -Lh -IM -Jw -Kk -KI -Kk -LH -Mr -Lh -Nb -Nr -Nr -Nr -Nr -NW -Ol -OB -Ol -NW -Ol -Pn -Ol -NW -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aRh +aRi +aRj +agg +aab +aab +aab +aaU +agT +ahq +ahL +aaT +ain +abt +aiR +aYT +acw +acw +acw +ade +acw +acw +acw +adR +ale +aeX +aaq +aeX +aeX +aeX +aat +aeX +apr +alC +aPq +amH +arB +amH +atj +aNE +amH +auP +auP +auP +auP +auP +azt +ayA +anf +aCh +ayM +aAC +aCl +aCl +aEm +aCl +aCl +aGq +aGX +aHr +aLh +aIM +aJw +aKk +aKI +aKk +aLH +aMr +aLh +aNb +aNr +aNr +aNr +aNr +aNW +aOl +aOB +aOl +aNW +aOl +aPn +aOl +aNW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ae -aa -ed -gg -ab -ab -ab -aU -gU -hr -hM -hr -io -iE -iR -YT -ne -eJ -eJ -el -kh -kh -OQ -YT -dO -lG -ml -mM -nr -nR -ok -oH -eX -lC -lC -mH -RP -mH -mH -mH -mH -vM -wr -wW -xN -yy -yz -jr -ng -rq -zr -AD -Cm -Cm -En -Cm -FL -Gr -GY -Hs -Ia -CV -Jx -Kl -KJ -Lj -LI -Ms -MJ -Nc -Nr -NB -JZ -NN -Nr -Om -OC -OR -Qo -Pf -OC -KA -NW -PB -PM -PM -PB -PB -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aed +agg +aab +aab +aab +aaU +agU +ahr +ahM +ahr +aio +aiE +aiR +aYT +ane +aeJ +aeJ +ael +akh +akh +aOQ +aYT +adO +alG +aml +amM +anr +anR +aok +aoH +aeX +alC +alC +amH +aRP +amH +amH +amH +amH +avM +awr +awW +axN +ayy +ayz +ajr +ang +arq +azr +aAD +aCm +aCm +aEn +aCm +aFL +aGr +aGY +aHs +aIa +aCV +aJx +aKl +aKJ +aLj +aLI +aMs +aMJ +aNc +aNr +aNB +aJZ +aNN +aNr +aOm +aOC +aOR +aQo +aPf +aOC +aKA +aNW +aPB +aPM +aPM +aPB +aPB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -aO -aa -ed -gg -ab -ab -ab -aU -bj -XG -hN -aV -cb -iF -iR -YT -jn -jB -jW -nK -ey -eJ -kF -YT -lf -lH -mm -mm -ns -mO -ol -oI -eX -lC -lC -mH -St -SN -tk -uf -uW -vN -ws -uW -xO -uW -zu -Ao -By -rC -yK -AE -Cn -Dr -Eo -Cn -FM -Gs -Iy -Ht -Ib -IQ -Jy -Km -KK -LN -Jy -Mt -Lh -Nd -Ns -NC -Kb -NP -NX -On -OD -OS -Pa -Pg -Po -Pu -NW -PI -PN -PS -PW -PB -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaO +aaa +aed +agg +aab +aab +aab +aaU +abj +aXG +ahN +aaV +acb +aiF +aiR +aYT +ajn +ajB +ajW +anK +aey +aeJ +akF +aYT +alf +alH +amm +amm +ans +amO +aol +aoI +aeX +alC +alC +amH +aSt +aSN +atk +auf +auW +avN +aws +auW +axO +auW +azu +aAo +aBy +arC +ayK +aAE +aCn +aDr +aEo +aCn +aFM +aGs +aIy +aHt +aIb +aIQ +aJy +aKm +aKK +aLN +aJy +aMt +aLh +aNd +aNs +aNC +aKb +aNP +aNX +aOn +aOD +aOS +aPa +aPg +aPo +aPu +aNW +aPI +aPN +aPS +aPW +aPB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -aa -aa -gg -ab -ab -ab -aU -gV -hr -hM -aW -aU -iG -NI -YT -jo -ds -jN -jX -SC -eJ -kG -YT -lg -lH -mn -mN -nt -nS -om -oJ -pr -lC -lC -mH -Su -tl -tl -ug -tl -tl -wt -tl -tl -yz -yz -Ap -Bz -pN -Dj -AF -Co -Ds -EH -Ff -FN -Gt -Iy -Ji -Ic -IZ -Jz -Km -KL -LN -Jz -Mt -Lh -IU -Nt -Kc -NK -Or -Nr -Oo -OE -OE -Pb -Pi -Pp -Pv -Qs -PE -PO -PT -PX -Qa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +agg +aab +aab +aab +aaU +agV +ahr +ahM +aaW +aaU +aiG +aNI +aYT +ajo +ads +ajN +ajX +aSC +aeJ +akG +aYT +alg +alH +amn +amN +ant +anS +aom +aoJ +apr +alC +alC +amH +aSu +atl +atl +aug +atl +atl +awt +atl +atl +ayz +ayz +aAp +aBz +apN +aDj +aAF +aCo +aDs +aEH +aFf +aFN +aGt +aIy +aJi +aIc +aIZ +aJz +aKm +aKL +aLN +aJz +aMt +aLh +aIU +aNt +aKc +aNK +aOr +aNr +aOo +aOE +aOE +aPb +aPi +aPp +aPv +aQs +aPE +aPO +aPT +aPX +aQa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -gg -ab -ab -ab -aU -gW -ZO -Sa -aX -in -bu -iR -YT -jp -jC -nY -cO -da -eJ -kH -YT -lh -lH -lH -lH -jh -lH -ok -kP -le -mH -mH -mH -Su -tl -tm -uh -uX -vO -wu -wX -sp -jm -zv -Aq -Aw -Ck -Dk -AZ -Cp -Dt -Cp -Fg -FO -Gu -Iy -Ji -Id -Lh -JA -Kn -KM -LO -JA -Mu -Lh -Pt -Nr -Nr -Nr -Nr -Nr -Op -OE -OT -OE -Pj -NJ -OE -Ol -PG -PQ -PU -PQ -Qa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +agg +aab +aab +aab +aaU +agW +aZO +aSa +aaX +ain +abu +aiR +aYT +ajp +ajC +anY +acO +ada +aeJ +akH +aYT +alh +alH +alH +alH +ajh +alH +aok +akP +ale +amH +amH +amH +aSu +atl +atm +auh +auX +avO +awu +awX +asp +ajm +azv +aAq +aAw +aCk +aDk +aAZ +aCp +aDt +aCp +aFg +aFO +aGu +aIy +aJi +aId +aLh +aJA +aKn +aKM +aLO +aJA +aMu +aLh +aPt +aNr +aNr +aNr +aNr +aNr +aOp +aOE +aOT +aOE +aPj +aNJ +aOE +aOl +aPG +aPQ +aPU +aPQ +aQa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -gg -ab -ab -ab -aU -aw -hr -hM -aY -in -bu -iR -YT -Uq -dt -mU -pm -Td -eY -TQ -YT -li -lH -mm -mO -ns -mm -SF -oL -le -qT -tl -te -SL -tl -tn -tn -tn -tn -tn -tn -sp -wF -zw -Ar -Ax -Ck -Dk -DN -Cl -Cl -Cl -Cl -Cl -Gv -Iy -Hu -Ie -Ja -JB -Ko -KN -KN -LJ -MX -Lh -Ng -Iy -ab -ab -ab -NW -Oq -OF -OU -OE -Pl -NR -Ne -NW -PH -PQ -PQ -PY -Qa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +agg +aab +aab +aab +aaU +aaw +ahr +ahM +aaY +ain +abu +aiR +aYT +aUq +adt +amU +apm +aTd +aeY +aTQ +aYT +ali +alH +amm +amO +ans +amm +aSF +aoL +ale +aqT +atl +ate +aSL +atl +atn +atn +atn +atn +atn +atn +asp +awF +azw +aAr +aAx +aCk +aDk +aDN +aCl +aCl +aCl +aCl +aCl +aGv +aIy +aHu +aIe +aJa +aJB +aKo +aKN +aKN +aLJ +aMX +aLh +aNg +aIy +aab +aab +aab +aNW +aOq +aOF +aOU +aOE +aPl +aNR +aNe +aNW +aPH +aPQ +aPQ +aPY +aQa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -aa -gg -ab -ab -ab -aU -bk -hr -hP -hQ -aU -iH -iT -YT -ni -dg -tP -eJ -eF -Xe -YH -YT -eZ -lI -mn -mN -nt -nS -om -OW -le -tl -tl -ue -Rk -tl -tn -ui -ui -ui -ui -tn -sp -yC -zw -xb -Bz -Ck -Dk -Bf -Cq -EN -EN -EN -EN -Gw -GZ -Hv -If -Lh -JC -Kp -Lh -Kp -LK -MX -Lh -Nf -Iy -ab -ab -ab -NW -Pw -OG -OV -Pd -Pm -Ps -PD -NW -PJ -PR -PV -KB -PB -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +agg +aab +aab +aab +aaU +abk +ahr +ahP +ahQ +aaU +aiH +aiT +aYT +ani +adg +atP +aeJ +aeF +aXe +aYH +aYT +aeZ +alI +amn +amN +ant +anS +aom +aOW +ale +atl +atl +aue +aRk +atl +atn +aui +aui +aui +aui +atn +asp +ayC +azw +axb +aBz +aCk +aDk +aBf +aCq +aEN +aEN +aEN +aEN +aGw +aGZ +aHv +aIf +aLh +aJC +aKp +aLh +aKp +aLK +aMX +aLh +aNf +aIy +aab +aab +aab +aNW +aPw +aOG +aOV +aPd +aPm +aPs +aPD +aNW +aPJ +aPR +aPV +aKB +aPB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -aa -aa -aa -ed -gg -gg -aU -aU -aU -aU -hu -Up -aU -aU -iI -iU -dS -dP -dP -dP -dP -dq -dP -dP -dP -le -lJ -mo -mP -nv -nT -on -oM -le -qV -rE -Re -Rk -tl -tn -ui -ui -ui -ui -tn -sp -yD -zx -As -Bz -FT -Dl -Bh -Cr -Du -EJ -Fh -FP -Gp -Iy -HI -Ig -ND -ND -ND -ND -Lk -LL -Mv -Lh -Nh -Iy -ab -ab -ab -NW -NW -NW -NW -NW -NW -NW -Py -NW -PK -PB -PB -PB -PB -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aed +agg +agg +aaU +aaU +aaU +aaU +ahu +aUp +aaU +aaU +aiI +aiU +adS +adP +adP +adP +adP +adq +adP +adP +adP +ale +alJ +amo +amP +anv +anT +aon +aoM +ale +aqV +arE +aRe +aRk +atl +atn +aui +aui +aui +aui +atn +asp +ayD +azx +aAs +aBz +aFT +aDl +aBh +aCr +aDu +aEJ +aFh +aFP +aGp +aIy +aHI +aIg +aND +aND +aND +aND +aLk +aLL +aMv +aLh +aNh +aIy +aab +aab +aab +aNW +aNW +aNW +aNW +aNW +aNW +aNW +aPy +aNW +aPK +aPB +aPB +aPB +aPB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (67,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 -ed -gg -gj -gl -gx -ar -am -bJ -gY -bm -bz -bw -cl -dS -dd -SX -ST -ew -UT -fb -UV -fG -le -lK -mp -mQ -nw -nU -oo -oN -le -rD -so -Rk -SM -tl -tn -ui -ui -ui -ui -tn -sp -yE -zy -XT -Rn -Ck -yN -yT -yT -yT -EK -yT -yT -yT -yT -HJ -Ih -Jb -JD -Gx -KO -Ll -LM -Mw -Lh -Ni -Iy -vs -vs -vs -vs -vs -vs -vs -vs -vs -Yk -Pz -aa -PL -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aed +agg +agj +agl +agx +aar +aam +abJ +agY +abm +abz +abw +acl +adS +add +aSX +aST +aew +aUT +afb +aUV +afG +ale +alK +amp +amQ +anw +anU +aoo +aoN +ale +arD +aso +aRk +aSM +atl +atn +aui +aui +aui +aui +atn +asp +ayE +azy +aXT +aRn +aCk +ayN +ayT +ayT +ayT +aEK +ayT +ayT +ayT +ayT +aHJ +aIh +aJb +aJD +aGx +aKO +aLl +aLM +aMw +aLh +aNi +aIy +avs +avs +avs +avs +avs +avs +avs +avs +avs +aYk +aPz +aaa +aPL +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (68,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 -ed -gg -gg -ac -ag -ak -ax -cp -hv -bm -bA -bW -bT -dS -dP -dP -hx -kW -US -Ub -UV -fG -af -af -af -af -af -af -af -af -af -aI -qn -aI -yz -tl -tn -ui -ui -ui -ui -tn -sp -yF -zz -At -Bz -tc -yT -Bu -Cs -DM -EL -Dm -FQ -FQ -yT -HO -Ii -Jc -Jc -Jc -Jc -Lm -LP -Iy -MK -MK -Iy -vs -NL -NL -NL -VP -VP -NL -NL -NL -Yk -vs -vs -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aed +agg +agg +aac +aag +aak +aax +acp +ahv +abm +abA +abW +abT +adS +adP +adP +ahx +akW +aUS +aUb +aUV +afG +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaI +aqn +aaI +ayz +atl +atn +aui +aui +aui +aui +atn +asp +ayF +azz +aAt +aBz +atc +ayT +aBu +aCs +aDM +aEL +aDm +aFQ +aFQ +ayT +aHO +aIi +aJc +aJc +aJc +aJc +aLm +aLP +aIy +aMK +aMK +aIy +avs +aNL +aNL +aNL +aVP +aVP +aNL +aNL +aNL +aYk +avs +avs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (69,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 -ed -gg -gg -aU -aU -aU -aU -dX -hw -bm -bB -by -cz -dS -mW -SX -TX -WB -uL -Uw -UV -fG -af -fc -fc -fc -fc -dw -dw -dr -mR -fc -dw -aI -ab -sp -tn -tn -ui -ui -wv -tn -sp -sq -sq -Au -BA -tt -yT -Bv -Ct -Ct -Ct -Ct -Ct -Gy -yT -EG -Ij -Jd -JE -Ks -KP -Ln -LQ -Iy -MK -MK -Iy -vs -NL -NS -NL -NZ -XX -NL -YX -NL -Yk -vs -vs -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaU +aaU +aaU +aaU +adX +ahw +abm +abB +aby +acz +adS +amW +aSX +aTX +aWB +auL +aUw +aUV +afG +aaf +afc +afc +afc +afc +adw +adw +adr +amR +afc +adw +aaI +aab +asp +atn +atn +aui +aui +awv +atn +asp +asq +asq +aAu +aBA +att +ayT +aBv +aCt +aCt +aCt +aCt +aCt +aGy +ayT +aEG +aIj +aJd +aJE +aKs +aKP +aLn +aLQ +aIy +aMK +aMK +aIy +avs +aNL +aNS +aNL +aNZ +aXX +aNL +aYX +aNL +aYk +avs +avs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (70,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 -bc -ay -gX -kp -bm -bm -bm -cn -af -af -af -af -af -af -af -af -af -af -lL -aI -aI -QY -Ra -fc -Rb -fc -Rc -Rd -aI -ab -sq -to -uj -uY -uY -ww -wY -vY -yG -zA -Av -hX -tC -zs -Bw -Bw -DQ -EM -Fv -FR -Gz -Ha -Hv -Ik -Lh -Lh -Lh -Lh -Lo -LR -Iy -MK -MK -Iy -vs -Yc -YN -Oa -Os -OH -Yv -Ye -Yc -Yk -vs -vs -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +aay +agX +akp +abm +abm +abm +acn +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +alL +aaI +aaI +aQY +aRa +vFD +aRb +afc +aRc +aRd +aaI +aab +asq +ato +auj +auY +auY +aww +awY +avY +ayG +azA +aAv +ahX +atC +azs +aBw +aBw +aDQ +aEM +aFv +aFR +aGz +aHa +aHv +aIk +aLh +aLh +aLh +aLh +aLo +aLR +aIy +aMK +aMK +aIy +avs +aYc +aYN +aOa +aOs +aOH +aYv +aYe +aYc +aYk +avs +avs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (71,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 -bc -gZ -ha -BK -an -dw -fc -dA -kM -jq -jq -qU -qU -aI -kt -ku -kJ -aI -mR -fq -aI -aI -aI -aI -aI -aI -aI -aI -aI -ab -sq -tp -uk -uk -uk -uk -wZ -xQ -yH -zB -Ay -xX -uK -yT -Bx -Cv -DR -Cv -Fw -Cv -GA -yT -HM -Il -Je -JF -Kt -KQ -Lq -HL -Iy -MK -MK -Iy -vs -NL -XF -Ob -Ot -OI -YS -Xf -NL -Yk -vs -vs -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +agZ +aha +aBK +aan +adw +afc +adA +akM +ajq +ajq +aqU +aqU +aaI +akt +aku +akJ +aaI +amR +afq +aaI +aaI +aaI +aaI +aaI +aaI +aaI +aaI +aaI +aab +asq +atp +auk +auk +auk +auk +awZ +axQ +ayH +azB +aAy +axX +auK +ayT +aBx +aCv +aDR +aCv +aFw +aCv +aGA +ayT +aHM +aIl +aJe +aJF +aKt +aKQ +aLq +aHL +aIy +aMK +aMK +aIy +avs +aNL +aXF +aOb +aOt +aOI +aYS +aXf +aNL +aYk +avs +avs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (72,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 -bc -bc -hb -hb -bc -cq -eW -kg -ks -Tp -Rz -Rz -Rz -RE -RH -RH -RH -eU -RH -iq -RO -aI -ab -ab -ab -ab -ab -ab -ab -ab -sq -tq -ul -ul -ul -ul -xa -xR -eN -fS -jJ -oh -uN -yT -BB -Cw -DS -EO -Fy -FS -GB -Ww -HN -HN -HN -JG -HN -Fz -KD -LU -Lu -Lu -Lu -Lu -Lu -NL -NL -NL -YY -OJ -NL -NL -NL -Yk -vs -vs -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +abc +ahb +ahb +abc +acq +aeW +akg +aks +aTp +aRz +aRz +aRz +aRE +aRH +aRH +aRH +aeU +aRH +aiq +aRO +aaI +aab +aab +aab +aab +aab +aab +aab +aab +asq +atq +aul +aul +aul +aul +axa +axR +aeN +afS +ajJ +aoh +auN +ayT +aBB +aCw +aDS +aEO +aFy +aFS +aGB +aWw +aHN +aHN +aHN +aJG +aHN +aFz +aKD +aLU +aLu +aLu +aLu +aLu +aLu +aNL +aNL +aNL +aYY +aOJ +aNL +aNL +aNL +aYk +avs +avs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -aa -aa -aa -aa -aa -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -aI -pT -aI -ab -ab -ab -ab -ab -ab -ab -ab -sq -tr -um -uZ -xg -wx -xb -xR -eP -AH -AH -oq -AH -yT -yT -yT -yT -yT -Fz -Fz -Fz -Fz -KC -Iw -Jf -JJ -Ku -HN -Ls -LV -Mx -ML -Nj -Nu -NF -NM -NT -Od -Xv -OK -Zz -WW -Ya -Yk -vs -vs -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +aaI +apT +aaI +aab +aab +aab +aab +aab +aab +aab +aab +asq +atr +aum +auZ +axg +awx +axb +axR +aeP +aAH +aAH +aoq +aAH +ayT +ayT +ayT +ayT +ayT +aFz +aFz +aFz +aFz +aKC +aIw +aJf +aJJ +aKu +aHN +aLs +aLV +aMx +aML +aNj +aNu +aNF +aNM +aNT +aOd +aXv +aOK +aZz +aWW +aYa +aYk +avs +avs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (74,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 -be -bp -cC -cI -df -dm -cC -cC -cC -cC -mu -dm -cI -cC -cC -cC -cC -dm -lQ -lV -Px -mq -be -es -RS -iV -ab -ab -ab -ab -ab -ab -ab -ab -sq -fZ -um -um -um -um -xb -xR -eP -AH -jO -ou -wf -zC -AH -Cx -DT -EP -Fz -GT -GD -Uj -HP -Ix -Jg -JP -Kv -HN -Lt -LW -My -MM -Jk -Nv -NG -Wu -Wa -Oe -Yr -OK -WM -Ys -Ya -Yk -vs -vs -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abp +acC +acI +adf +adm +acC +acC +acC +acC +amu +adm +acI +acC +acC +acC +acC +adm +alQ +alV +aPx +amq +abe +aes +aRS +aiV +aab +aab +aab +aab +aab +aab +aab +aab +asq +afZ +aum +aum +aum +aum +axb +axR +aeP +aAH +ajO +aou +awf +azC +aAH +aCx +aDT +aEP +aFz +aGT +aGD +aUj +aHP +aIx +aJg +aJP +aKv +aHN +aLt +aLW +aMy +aMM +aJk +aNv +aNG +aWu +aWa +aOe +aYr +aOK +aWM +aYs +aYa +aYk +avs +avs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -aa -be -bX -cD -cJ -dh -dv -dv -dv -dv -dv -dh -dv -cJ -dv -dv -dv -dv -dv -dh -cJ -mr -nz -be -Sr -RS -iV -ab -ab -ab -ab -ab -ab -ab -ab -sq -ts -um -va -vP -wy -xb -xR -eQ -AH -AH -AH -AH -zD -oq -zD -ou -EQ -Fz -FU -Yb -Yb -Yb -Yb -Yb -JQ -Zs -Fz -Lu -LX -Lu -Lu -Lu -Lu -Lu -Ya -Ya -Ya -WA -OM -XL -Ya -Ya -Yk -vs -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abX +acD +acJ +adh +adv +adv +adv +adv +adv +adh +adv +acJ +adv +adv +adv +adv +adv +adh +acJ +amr +anz +abe +aSr +aRS +aiV +aab +aab +aab +aab +aab +aab +aab +aab +asq +ats +aum +ava +avP +awy +axb +axR +aeQ +aAH +aAH +aAH +aAH +azD +aoq +azD +aou +aEQ +aFz +aFU +aYb +aYb +aYb +aYb +aYb +aJQ +aZs +aFz +aLu +aLX +aLu +aLu +aLu +aLu +aLu +aYa +aYa +aYa +aWA +aOM +aXL +aYa +aYa +aYk +avs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -bY -cE -cK -cK -cK -cK -cK -cK -cK -cK -cK -cK -cK -cK -XE -Zd -Wp -Wp -cK -ms -Oz -be -mV -RS -iV -iV -iV -iV -iV -iV -iV -iV -iV -iV -sq -wL -va -vQ -wy -xb -xR -eR -AH -tU -xV -AH -wf -BD -BD -BD -BD -Fz -FV -XM -Hb -Yb -Yb -Jh -JQ -Kw -Fz -Lv -LY -AH -ab -ab -ab -vs -Ya -YA -Og -Xw -ON -lY -Zt -Ya -Yk -vs -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abY +acE +acK +acK +acK +acK +acK +acK +acK +acK +acK +acK +acK +acK +aXE +aZd +aWp +aWp +acK +ams +aOz +abe +amV +aRS +aiV +aiV +aiV +aiV +aiV +aiV +aiV +aiV +aiV +aiV +asq +awL +ava +avQ +awy +axb +axR +aeR +aAH +atU +axV +aAH +awf +aBD +aBD +aBD +aBD +aFz +aFV +aXM +aHb +aYb +aYb +aJh +aJQ +aKw +aFz +aLv +aLY +aAH +aab +aab +aab +avs +aYa +aYA +aOg +aXw +aON +alY +aZt +aYa +aYk +avs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -kS -cE -cK -cK -dj -dj -Wx -dj -Wx -dj -Wx -Wp -Wp -Wp -Zy -WG -Wp -Wp -cK -ms -Oz -be -ZP -RT -dT -Se -op -dT -dT -pU -qo -qW -rF -sr -sq -sq -sq -sq -sq -he -xS -un -AH -Qg -yP -AH -Ai -BD -Cy -DU -ES -Fz -FW -GE -Hc -HQ -Iz -Jj -JR -Kx -Fz -Lw -LY -AH -ab -ab -ab -vs -ZR -YO -Oh -Ze -XB -Oh -Wj -Xg -Yk -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +akS +acE +acK +acK +adj +adj +aWx +adj +aWx +adj +aWx +aWp +aWp +aWp +aZy +aWG +aWp +aWp +acK +ams +aOz +abe +aZP +aRT +adT +aSe +aop +adT +adT +apU +aqo +aqW +arF +asr +asq +asq +asq +asq +asq +ahe +axS +aun +aAH +aQg +ayP +aAH +aAi +aBD +aCy +aDU +aES +aFz +aFW +aGE +aHc +aHQ +aIz +aJj +aJR +aKx +aFz +aLw +aLY +aAH +aab +aab +aab +avs +aZR +aYO +aOh +aZe +aXB +aOh +aWj +aXg +aYk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -bX -cE -cK -WL -dj -Tl -ZU -dj -Vf -VE -Vw -Wp -it -Wn -UJ -Xb -Wp -WV -hc -ms -Xq -be -or -RU -qb -Sf -iV -iV -iV -iV -iV -iV -rG -ss -iV -uo -vb -vR -wz -xd -xT -fQ -AH -ub -zE -AH -Aj -BD -Cz -DW -ET -Fz -FX -GS -Hd -HR -IA -Fi -JS -Ky -Fz -Lx -LY -AH -ab -ab -ab -vs -ZR -VV -Oh -XU -ZN -Oh -Yq -Xg -Yk -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abX +acE +acK +aWL +adj +aTl +aZU +adj +aVf +aVE +aVw +aWp +ait +aWn +aUJ +aXb +aWp +aWV +afs +ams +aXq +abe +aor +aRU +aqb +aSf +aiV +aiV +aiV +aiV +aiV +aiV +arG +ass +aiV +auo +avb +avR +awz +axd +axT +afQ +aAH +aub +azE +aAH +aAj +aBD +aCz +aDW +aET +aFz +aFX +aGS +aHd +aHR +aIA +aFi +aJS +aKy +aFz +aLx +aLY +aAH +aab +aab +aab +avs +aZR +aVV +aOh +aXU +aZN +aOh +aYq +aXg +aYk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -bX -cE -cK -fh -dj -dW -UB -dj -UE -Wg -Um -Wp -iK -jY -Wt -WS -Wp -XN -hc -ms -Xq -be -os -oV -RY -Sv -iV -oO -ps -pV -qp -qX -rH -st -eL -up -vc -vS -SH -xe -xU -yO -AH -AH -AG -AH -Ak -BD -CB -BD -EU -Fz -Fz -Fz -Fz -Fz -Fz -Fz -Fz -Fz -Fz -Ly -LZ -AH -ab -ab -ab -vs -Wl -NV -Xj -An -OK -Yl -YM -Wl -Yk -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abX +acE +acK +afh +adj +adW +aUB +adj +aUE +aWg +aUm +aWp +aiK +ajY +aWt +aWS +aWp +aXN +afs +ams +aXq +abe +aos +aoV +aRY +aSv +aiV +aoO +aps +apV +aqp +aqX +arH +ast +aeL +aup +avc +avS +aSH +axe +axU +ayO +aAH +aAH +aAG +aAH +aAk +aBD +aCB +aBD +aEU +aFz +aFz +aFz +aFz +aFz +aFz +aFz +aFz +aFz +aFz +aLy +aLZ +aAH +aab +aab +aab +avs +aWl +aNV +aXj +aAn +aOK +aYl +aYM +aWl +aYk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -bX -cE -cK -VB -dy -dY -Tu -Vi -Wo -Wg -jV -Wp -VU -Zk -WR -ZT -iX -ZD -cK -ms -Ul -be -oS -oS -Qz -Sg -iV -oP -pt -nx -qq -iV -rI -su -iV -uq -vd -vT -SH -xf -rl -sX -tg -vp -BI -BH -BH -Wm -CC -DX -EV -FA -FA -Qq -FA -QB -HS -Jl -JT -HS -HS -HS -Ma -AH -ab -ab -ab -ab -Xy -Xy -YU -Wy -XW -Zr -Xy -Ya -Yk -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abX +acE +acK +aVB +ady +adY +aTu +aVi +aWo +aWg +ajV +aWp +aVU +aZk +aWR +aZT +aiX +aZD +acK +ams +aUl +abe +aoS +aoS +aQz +aSg +aiV +aoP +apt +anx +aqq +aiV +arI +asu +aiV +auq +avd +avT +aSH +axf +arl +asX +atg +avp +aBI +aBH +aBH +aWm +aCC +aDX +aEV +aFA +aFA +aQq +aFA +aQB +aHS +aJl +aJT +aHS +aHS +aHS +aMa +aAH +aab +aab +aab +aab +aXy +aXy +aYU +aWy +aXW +aZr +aXy +aYa +aYk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -bX -cE -dj -dj -dj -dj -ZL -dj -Us -fi -UD -Wp -Xa -jZ -WR -Xo -iY -Wp -cK -ms -Xq -be -be -be -be -Sg -iV -oQ -pu -pW -qr -qr -qr -qr -qr -qr -qr -qr -qr -Qi -xR -yQ -zF -zL -zL -zL -zL -zL -JY -DY -GC -GC -Wb -GC -AH -QC -AH -AH -JU -Kz -KR -Lz -Mb -AH -ab -ab -ab -ab -XH -Xy -Xx -WC -ZK -Xd -Zl -VY -Yk -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abX +acE +adj +adj +adj +adj +aZL +adj +aUs +afi +aUD +aWp +aXa +ajZ +aWR +aXo +aiY +aWp +acK +ams +aXq +abe +abe +abe +abe +aSg +aiV +aoQ +apu +apW +aqr +aqr +aqr +aqr +aqr +aqr +aqr +aqr +aqr +aQi +axR +ayQ +azF +azL +azL +azL +azL +azL +aJY +aDY +aGC +aGC +aWb +aGC +aAH +aQC +aAH +aAH +aJU +aKz +aKR +aLz +aMb +aAH +aab +aab +aab +aab +aXH +aXy +aXx +aWC +aZK +aXd +aZl +aVY +aYk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -cs -cF -VB -Vu -dC -ea -fj -XQ -UE -fj -UY -XS -iW -ka -WR -UK -iY -Wp -cK -ms -mq -Ox -Ox -Ox -be -Sh -iV -oR -pv -pX -qs -qY -rJ -zb -tu -ur -ve -vU -wA -fa -xR -yQ -zG -zL -Xh -Ua -VF -zL -Dd -DZ -EW -FB -IO -GC -Qu -QD -QD -AH -AH -AH -AH -AH -AH -AH -ab -ab -ab -ab -vs -Xy -Xy -Zc -Zm -Xy -Xy -vs -Yk -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +acs +acF +aVB +aVu +adC +aea +afj +aXQ +aUE +afj +aUY +aXS +aiW +aka +aWR +aUK +aiY +aWp +acK +ams +amq +aOx +aOx +aOx +abe +aSh +aiV +aoR +apv +apX +aqs +aqY +arJ +azb +atu +aur +ave +avU +awA +afa +axR +ayQ +azG +azL +aXh +aUa +aVF +azL +aDd +aDZ +aEW +aFB +aIO +aGC +aQu +aQD +aQD +aAH +aAH +aAH +aAH +aAH +aAH +aAH +aab +aab +aab +aab +avs +aXy +aXy +aZc +aZm +aXy +aXy +avs +aYk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -bY -cE -VB -XZ -dD -eb -ex -TT -Ti -Ym -Uz -Za -SO -Zo -Xi -dB -dZ -Tc -cK -ms -VX -Ox -Ox -Sp -be -Sw -iV -iV -pw -pt -qr -qr -qr -sv -tv -us -qr -qr -wB -xi -xW -yQ -zH -zL -Zp -CA -Zi -zL -De -Ea -GC -FC -IP -GC -Qv -QF -QM -So -AH -ab -ab -ab -ab -ab -ab -ab -ab -vs -vs -vs -Xy -Zv -Zv -Xy -vs -vs -Yk -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abY +acE +aVB +aXZ +adD +aeb +aex +aTT +aTi +aYm +aUz +aZa +aSO +aZo +aXi +adB +adZ +aTc +acK +ams +aVX +aOx +aOx +aSp +abe +aSw +aiV +aiV +apw +apt +aqr +aqr +aqr +asv +atv +aus +aqr +aqr +awB +axi +axW +ayQ +azH +azL +aZp +aCA +aZi +azL +aDe +aEa +aGC +aFC +aIP +aGC +aQv +aQF +aQM +aSo +aAH +aab +aab +aab +aab +aab +aab +aab +aab +avs +avs +avs +aXy +aZv +aZv +aXy +avs +avs +aYk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -cA -cG -VB -WD -dE -ZG -TY -dj -dj -fx -dj -Wp -iX -kb -ZW -lq -Xr -Wp -cK -ms -mq -Qb -Ox -Ox -be -Si -gJ -iV -px -pt -qr -yY -rK -sw -sw -sw -vf -vV -wC -xj -xX -yQ -zI -zL -Zp -CA -Zn -zL -Di -Eb -EX -FD -FY -GC -Fj -Fj -QN -QD -AH -ab -ab -ab -ab -ab -ab -ab -ab -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -WT -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +acA +acG +aVB +aWD +adE +aZG +aTY +adj +adj +afx +adj +aWp +aiX +akb +aZW +alq +aXr +aWp +acK +ams +amq +aQb +aOx +aOx +abe +aSi +agJ +aiV +apx +apt +aqr +ayY +arK +asw +asw +asw +avf +avV +awC +axj +axX +ayQ +azI +azL +aZp +aCA +aZn +azL +aDi +aEb +aEX +aFD +aFY +aGC +aFj +aFj +aQN +aQD +aAH +aab +aab +aab +aab +aab +aab +aab +aab +aZg +aZg +aZg +aZg +aZg +aZg +aZg +aZg +aZg +aWT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -bX -cE -dj -dj -dj -dj -YK -dj -Wd -UL -Vg -fV -iY -XS -kx -Wp -iY -Wp -cK -ms -mq -be -be -be -be -Rx -gJ -iV -py -pY -qt -ra -rL -sx -tw -ut -vg -vW -wD -xk -xY -AK -zJ -zL -Ep -Vl -TU -zL -zL -Ec -Fj -Fj -Fj -Fj -Nn -Fj -QO -QD -AH -ab -ab -ab -ab -ab -ab -ab -ab -vs -vs -vs -vs -vs -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abX +acE +adj +adj +adj +adj +aYK +adj +aWd +aUL +aVg +afV +aiY +aXS +akx +aWp +aiY +aWp +acK +ams +amq +abe +abe +abe +abe +aRx +agJ +aiV +apy +apY +aqt +ara +arL +asx +atw +aut +avg +avW +awD +axk +axY +aAK +azJ +azL +aEp +aVl +aTU +azL +azL +aEc +aFj +aFj +aFj +aFj +aFj +aFj +aQO +aQD +aAH +aab +aab +aab +aab +aab +aab +aab +aab +avs +avs +avs +avs +avs +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -bX -cE -cK -VB -Tq -ec -Xk -Xt -fg -Yg -VD -gL -ZD -UU -ky -Yj -Rv -XC -cK -ms -nz -be -RQ -gK -QX -Rx -gJ -iV -iV -iV -qr -qr -nG -sy -tx -uu -vh -vX -KT -xl -xZ -yS -zK -Yf -CD -CD -ZV -AI -zL -Ed -GF -JH -Im -IR -MN -Fj -QP -So -AH -ab -ab -ab -ab -ab -ab -ab -ab -vt -vt -vt -vt -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abX +acE +acK +aVB +aTq +aec +aXk +aXt +afg +aYg +aVD +agL +aZD +aUU +aky +aYj +aRv +aXC +acK +ams +anz +abe +aRQ +agK +aQX +aRx +agJ +aiV +aiV +aiV +aqr +aqr +anG +asy +atx +auu +avh +avX +aKT +axl +axZ +ayS +azK +aYf +aCD +aCD +aZV +aAI +azL +aEd +aGF +aJH +aIm +aIR +aMg +aFj +aQP +aSo +aAH +aab +aab +aab +aab +aab +aab +aab +aab +avt +avt +avt +avt +avt +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -bX -cE -cK -fh -dj -eg -Xl -dj -di -VR -UW -gM -Wp -kj -kQ -TG -Wp -XN -hc -ms -mq -be -oU -RV -RZ -Rx -gJ -gJ -gJ -gJ -gJ -qr -rN -sz -ty -uv -vi -rY -wD -xm -ya -yS -zK -AJ -BM -CD -ZV -Qd -zL -Ee -EY -FF -KU -MD -Nx -Fj -AH -SA -AH -AH -AH -AH -ab -ab -ab -ab -vt -vt -vt -vt -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abX +acE +acK +afh +adj +aeg +aXl +adj +adi +aVR +aUW +agM +aWp +akj +akQ +aTG +aWp +aXN +afs +ams +amq +abe +aoU +aRV +aRZ +aRx +agJ +agJ +agJ +agJ +agJ +aqr +arN +asz +aty +auv +avi +arY +awD +axm +aya +ayS +azK +aAJ +aBM +aCD +aZV +aQd +azL +aEe +aEY +aFF +aGG +aMg +aMg +aFj +aAH +aSA +aAH +aAH +aAH +aAH +aab +aab +aab +aab +avt +avt +avt +avt +avt +avt +avt +avt +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -bX -cE -cK -cK -dj -UO -Xp -dj -UM -TJ -ZX -gM -Wp -kk -kR -Vd -Wp -XD -hc -ms -QL -be -oU -RW -gK -Si -Rt -aF -eM -hs -gJ -qr -rO -sA -qr -uw -uw -uw -qr -hO -ht -vv -zL -xP -BN -CE -Dv -Eq -zL -Ga -GH -Hw -Lb -IS -JI -Fj -QQ -QD -AH -SY -SY -AH -AH -ab -ab -ab -vt -vt -vt -vt -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abX +acE +acK +acK +adj +aUO +aXp +adj +aUM +aTJ +aZX +agM +aWp +akk +akR +aVd +aWp +aXD +afs +ams +aQL +abe +aoU +aRW +agK +aSi +aRt +aaF +aeM +ahs +agJ +aqr +arO +asA +aqr +auw +auw +auw +aqr +ahO +aht +avv +azL +axP +aBN +aCE +aDv +aEq +azL +aGa +aGH +aHw +aKU +aIS +aJI +aFj +aQQ +aQD +aAH +aSY +aSY +aAH +aAH +aab +aab +aab +avt +avt +avt +avt +avt +avt +avt +avt +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -kS -cE -cK -cK -dj -Xc -dj -dj -dj -SQ -dj -UR -VQ -Ws -ZE -Wp -Wp -Wp -cK -ms -Sq -be -gK -RX -Sb -Si -Rt -ib -Sl -ib -gJ -qu -rP -sB -qu -ux -vj -vj -sE -xn -yb -yU -zM -AL -BO -CF -Dw -Er -zK -Gb -XO -Hx -LA -GG -Hg -Fj -QR -QD -AH -SZ -To -TC -AH -ab -ab -ab -vt -vt -vt -vt -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +akS +acE +acK +acK +adj +aXc +adj +adj +adj +aSQ +adj +aUR +aVQ +aWs +aZE +aWp +aWp +aWp +acK +ams +aSq +abe +agK +aRX +aSb +aSi +aRt +aib +aSl +aib +agJ +aqu +arP +asB +aqu +aux +avj +avj +asE +axn +ayb +ayU +azM +aAL +aBO +aCF +aDw +aEr +azK +aGb +aXO +aHx +aLb +aGG +aHg +aFj +aQR +aQD +aAH +aSZ +aTo +aTC +aAH +aab +aab +aab +avt +avt +avt +avt +avt +avt +avt +avt +avt +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -bY -cE -cK -cK -cK -Yw -cK -cK -cK -cK -cK -Uf -Uf -cK -cK -cK -Wp -Wp -cK -ms -mq -be -be -be -be -Sx -gy -Sn -Sl -ib -gJ -qu -rQ -sC -qu -uy -vk -vk -wG -vk -ya -yV -zK -AM -BP -BR -CD -Es -zK -Cg -GJ -Hy -Mc -IT -JK -Fj -QZ -SB -SU -Ta -Tr -TE -QG -QG -QG -QG -QG -vt -vt -vt -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abY +acE +acK +acK +acK +aYw +acK +acK +acK +acK +acK +aUf +aUf +acK +acK +acK +aWp +aWp +acK +ams +amq +abe +abe +abe +abe +aSx +agy +aSn +aSl +aib +agJ +aqu +arQ +asC +aqu +auy +avk +avk +awG +avk +aya +ayV +azK +aAM +aBP +aBR +aCD +aEs +azK +aCg +aGJ +aHy +aLA +aIT +aJK +aFj +aQZ +aSB +aSU +aTa +aTr +aTE +aQG +aQG +aQG +aQG +aQG +aQG +aQG +aVa +bap +bap +bap +bap +bap +bap +bap +bap +bap +bap +baI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -bX -cH -db -dk -dF -YD -dF -dF -dF -db -dF -dk -dF -dF -dF -dF -dF -dk -db -mt -nz -be -wE -QK -be -Si -gJ -gJ -gJ -ib -gJ -qu -rR -sD -tz -uz -vl -vl -wH -vl -xZ -AO -zN -AN -zL -CH -zK -zK -zL -Fj -Fj -Hz -Me -Fj -JL -Fj -Rl -SD -AH -Te -Ts -TF -QG -TR -Uh -UN -QG -vt -vt -vt -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abX +acH +adb +adk +adF +aYD +adF +adF +adF +adb +adF +adk +adF +adF +adF +adF +adF +adk +adb +amt +anz +abe +awE +aQK +abe +aSi +agJ +agJ +agJ +aib +agJ +aqu +arR +asD +atz +auz +avl +avl +awH +avl +axZ +aAO +azN +aAN +azL +aCH +azK +azK +azL +aFj +aFj +aHz +aMc +aFj +aJL +aFj +aRl +aSD +aAH +aTe +aTs +aTF +aQG +aXK +aUh +aUr +aTZ +aUg +aQG +aVb +baq +aVo +aVo +aVo +aVo +aVo +aVo +aVo +aVo +aUI +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -cB -cC -dc -dl -dH -bL -Wk -Wk -Wk -Nk -VI -YQ -SK -Wk -Wk -Wk -VI -YQ -lW -PZ -nB -Ro -PP -Rp -be -Si -gJ -gJ -gJ -sH -wb -wJ -xq -pl -tA -uA -vk -vk -wI -vk -ya -yX -zO -AP -He -CI -Dx -Fk -Gd -GK -Qh -HA -Mg -EF -Qy -QG -QG -SJ -QG -QG -QG -QG -QG -TS -Uo -UP -Vo -vt -vt -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +acB +acC +adc +adl +adH +abL +aWk +aWk +aWk +aNk +aVI +aYQ +aSK +aWk +aWk +aWk +aVI +aYQ +alW +aPZ +anB +aRo +aPP +aRp +abe +aSi +agJ +agJ +agJ +asH +awb +awJ +axq +apl +atA +auA +avk +avk +awI +avk +aya +ayX +azO +aAP +aHe +aCI +aDx +aFk +aGd +aGK +aNx +aHA +aMe +aEF +aQy +aQG +aQG +aSJ +aQG +aQG +aQG +aQG +aQG +aTS +aUo +aUG +aOL +aUv +aUZ +aVb +baq +bav +bay +aVG +aVS +aVS +aVS +baG +aVo +aVo +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -be -Qt -Qt -be -Si -gJ -pZ -sH -vo -gJ -qu -ye -sF -qu -uB -vm -vZ -vZ -xo -yc -NQ -zO -AQ -Sy -CJ -Dy -BU -BU -BU -GL -JN -JO -Qr -QA -QH -RL -SR -SV -Tg -SV -TH -TN -TV -Ur -UQ -Vo -vt -vt -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +abe +aQt +aQt +abe +aSi +agJ +apZ +asH +avo +agJ +aqu +aye +asF +aqu +auB +avm +avZ +avZ +axo +ayc +aNQ +azO +aAQ +aSy +aCJ +aDy +aBU +aBU +aBU +aGL +aJN +aJO +aIo +aNU +aOc +aOf +aOi +aOw +amE +amF +aTy +aTI +aTL +aTN +aUQ +aUP +aUA +aUZ +aVb +baq +bav +aVO +aVG +aVG +aVG +aVG +aVH +baH +aVW +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -dV -bV -cy -lt -dV -Rw -kV -RA -RC -RD -Pk -RA -RA -RG -Qm -Ry -RR -Ss -Sd -Si -Sk -rU -uC -gJ -gJ -qu -yZ -sG -tB -rZ -vn -wa -wa -xp -yd -qu -qu -AT -Sy -CJ -Dz -Eu -Eu -Eu -GM -HB -Mz -BU -BU -QG -Sj -SS -SW -Tj -Tv -TI -QG -TZ -Uv -UX -QG -vt -vt -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adV +abV +acy +alt +adV +aRw +akV +aRA +aRC +aRD +aPk +aRA +aRA +aRG +aQm +aRy +aRR +aSs +aSd +aSi +aSk +arU +auC +agJ +agJ +aqu +ayZ +asG +atB +arZ +avn +awa +awa +axp +ayd +aqu +aqu +aAT +aSy +aCJ +aDz +aEu +aEu +aEu +aGM +aHB +aMz +aBU +aBU +aQG +aSj +aOu +aOL +aOL +aXP +aTz +aQG +aUc +aTV +aUF +aOL +apC +aQG +aVb +baq +baw +baz +baE +aVG +baF +baF +baG +aVo +aVo +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -dV -eI -fp -mT -dx -nh -dV -fy -fy -fy -dV -eI -RJ -RK -RM -RF -RA -RA -RA -nb -rT -rV -gJ -gJ -qu -qu -zP -AR -BS -CK -DA -Ev -Fl -FE -GI -xc -HC -In -Io -Ip -Iq -Ir -Is -Ir -It -KS -MA -IV -zO -QG -QG -QG -QG -Tk -Tw -QG -QG -Uc -Uc -Uc -QG -vt -vt -vt -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adV +aeI +afp +amT +adx +anh +adV +afy +afy +afy +adV +aeI +aRJ +aRK +aRM +aRF +aRA +aRA +aRA +anb +arT +arV +agJ +agJ +aqu +aqu +azP +aAR +aBS +aCK +aDA +aEv +aFl +aFE +aGI +axc +aHC +aIn +aIo +aIp +aIq +aIr +aIs +aIr +aIt +aKS +aMA +aIV +azO +aQG +aQG +aMN +aSV +aSV +aWP +aMN +aQG +aTk +aTw +aQG +aQG +aQG +aQG +bak +baq +aVo +aVo +aVo +aVq +aVo +aVo +aVo +aVo +aUI +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -dV -eI -gK -oT -dV -Rx -fy -fy -du -fy -fy -RI -ZQ -fp -RN -eI -nV -pZ -iJ -rS -Sm -gJ -gJ -gJ -qu -rb -rW -sI -tD -uD -CL -uD -uD -xr -yf -za -zQ -AS -BT -Et -BT -Ew -Ew -Ew -Ew -HD -Iu -IW -zO -ab -ab -ab -QG -Tm -Tx -TK -QG -Ud -UA -UA -UA -UA -UA -VG -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adV +aeI +agK +aoT +adV +aRx +afy +afy +adu +afy +afy +aRI +aZQ +afp +aRN +aeI +anV +apZ +aiJ +arS +aSm +agJ +agJ +agJ +aqu +arb +arW +asI +atD +auD +aCL +auD +auD +axr +ayf +aza +azQ +aAS +aBT +aEt +aBT +aEw +aEw +aEw +aEw +aHD +aIu +aIW +azO +aab +aab +aMN +aSW +aXY +aWQ +aYn +aQG +aTm +aTx +aTK +aQG +aVh +bag +bal +bar +bar +bar +bar +bar +bar +bar +bar +bar +bar +aWq +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -dV -lo -eI -pA -fy -hy -fy -is -kT -is -fy -fy -fy -fP -fP -fP -fP -fP -fP -gJ -gJ -gJ -gJ -gJ -qu -rc -rX -sJ -tE -sJ -vq -wc -sJ -xs -yg -Qc -qu -oK -BU -CM -BU -BU -BU -BU -BU -HE -Iu -GR -zO -ab -ab -ab -QG -Tn -Ty -TL -QG -Ue -NU -Oc -Oc -Oc -Of -VH -vt -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adV +alo +aeI +apA +afy +ahy +afy +ais +akT +ais +afy +afy +afy +afP +afP +afP +afP +afP +afP +agJ +agJ +agJ +agJ +agJ +aqu +arc +arX +asJ +atE +asJ +avq +awc +asJ +axs +ayg +aQc +aqu +aoK +aBU +aCM +aBU +aBU +aBU +aBU +aBU +aHE +aIu +aGR +azO +aab +aab +aMN +aTg +aUX +aWQ +amK +aQG +aTn +aOO +aTA +aUd +aUH +aUI +aWi +bas +avt +avt +avt +avt +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -dV -eI -eI -pZ -fy -hz -js -jt -kU -jt -js -is -fy -ny -nC -OX -VM -VM -fP -gJ -gJ -gJ -gJ -gJ -qu -qu -qZ -rX -sJ -sJ -vq -sJ -sJ -EI -Fx -zc -zR -AU -Sy -BU -BU -Eu -Eu -Eu -Eu -BU -Iu -IX -zO -ab -ab -ab -QG -QG -Tz -QG -QG -Ue -UF -UZ -UZ -UZ -UF -VH -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adV +gUi +aeI +apZ +afy +ahz +ajs +ajt +akU +ajt +ajs +ais +afy +any +anC +aOX +aVM +aVM +afP +agJ +agJ +agJ +agJ +agJ +aqu +aqu +aqZ +arX +asJ +asJ +avq +asJ +asJ +aEI +aFx +azc +azR +aAU +aSy +aBU +aBU +aEu +aEu +aEu +aEu +aBU +aIu +aIX +azO +aab +aab +aMN +aTg +aVk +aWU +aYt +aQG +aQG +aQG +aQG +aQG +aUI +aUI +aWi +bas +avt +avt +avt +avt +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -dV -gK -gK -eI -fy -em -jt -kl -kX -lr -lM -lR -fy -mw -pz -OZ -VM -VM -fP -gJ -gJ -gJ -gJ -gJ -Ru -qu -rZ -sK -tF -uE -vr -wd -wK -xt -yh -zd -zR -AV -BU -CN -DB -Ex -BU -CN -GO -GO -Iv -GR -zO -ab -ab -ab -vt -vt -TA -TM -TB -Ue -UF -Va -Vq -Vx -UF -VH -vt -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adV +agK +agK +aeI +afy +aem +ajt +akl +akX +alr +alM +alR +afy +amw +apz +aOZ +aVM +aVM +afP +agJ +agJ +agJ +agJ +agJ +aRu +aqu +arZ +asK +atF +auE +avr +awd +awK +axt +ayh +azd +azR +aAV +aBU +aCN +aDB +aEx +aBU +aCN +aGO +aGO +aIv +aGR +azO +aab +aab +aMN +aWZ +aUX +aWX +aQH +aMN +avt +avt +avt +avt +avt +avt +aWq +bas +avt +avt +avt +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -dV -Rt -Rt -Rt -fy -ia -jD -jD -lk -jD -lN -lS -fy -mY -qa -Pc -Qw -QS -fP -gJ -gJ -gJ -gJ -gJ -gJ -ab -qu -qu -qu -qu -qu -qu -qu -qu -qu -qu -qu -AW -BL -CO -DC -Ey -CG -Ge -GP -HF -Qe -IY -zO -ab -ab -vt -vt -vt -TB -TB -TB -Ue -UF -Vb -Vc -Vc -UF -VH -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adV +aRt +aRt +aRt +afy +aia +ajD +ajD +alk +ajD +alN +alS +afy +amY +aqa +aPc +aQw +aQS +afP +agJ +agJ +agJ +agJ +agJ +agJ +aab +aqu +aqu +aqu +aqu +aqu +aqu +aqu +aqu +aqu +aqu +aqu +aAW +aBL +aCO +aDC +aEy +aCG +aGe +aGP +aHF +aQe +aIY +azO +aab +aab +aMN +aTj +aVr +aWQ +aTM +aMN +avt +avt +aVc +aVc +aWc +aWc +aWc +aWc +aWc +aVc +aVc +avt +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -dV -eI -fE -eI -fy -ic -jD -km -ll -jD -lO -lT -lX -mZ -Nw -Pe -QI -Pr -fP -gJ -gJ -gJ -gJ -gJ -gJ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -zO -AX -AX -CP -DD -Ez -CP -Ez -GQ -CP -AX -AX -zO -ab -ab -vt -vt -vt -TB -TB -TB -Ue -UG -Vc -Vc -VC -UF -VH -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adV +aeI +afE +aeI +afy +aic +ajD +akm +all +ajD +alO +alT +alX +amZ +aNw +aPe +aQI +aPr +afP +agJ +agJ +agJ +agJ +agJ +agJ +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +azO +aAX +aAX +aCP +aDD +aEz +aCP +aEz +aGQ +aCP +aAX +aAX +azO +aab +aab +aMN +aTv +aVr +aWQ +aZA +aMN +avt +avt +aVc +aZJ +baf +baf +baf +baf +baf +baP +aVc +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -dV -eS -id -Rr -fy -ie -jD -jD -lk -jD -lN -fU -fy -na -qa -Ph -QJ -Rm -fP -gJ -gJ -gJ -gJ -gJ -gJ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -vt -vt -vt -vt -CQ -DC -BU -CP -BU -GR -HG -aa -aa -ae -ae -aa -aa -ae -vt -vt -vt -vt -Ue -UF -Vh -Vc -VC -UF -VH -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adV +aeS +aid +aRr +afy +aie +ajD +ajD +alk +ajD +alN +afU +afy +ana +aqa +aPh +aQJ +aRm +afP +agJ +agJ +agJ +agJ +agJ +agJ +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +avt +avt +avt +avt +aCQ +aDC +aBU +aCP +aBU +aGR +aHG +aaa +aaa +aae +aae +aaa +aMN +ahc +aYd +aYi +aZB +aMN +avt +avt +aVc +aZS +aYo +aYy +aYy +aYy +aZw +baB +aVc +avt +avt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -dV -dV -dV -dV -fy -ir -jP -jP -lm -ls -lP -jt -fy -nd -NO -PC -VM -VM -fP -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -vt -vt -vt -vt -vt -CR -DD -Ez -Fn -Ez -GQ -HH -ae -ae -ae -ae -ae -ae -ae -aa -vt -vt -vt -Ue -UF -Vh -Vc -VC -UF -VH -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adV +adV +adV +adV +afy +air +ajP +ajP +alm +als +alP +ajt +afy +and +aNO +aPC +aVM +aVM +afP +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +avt +avt +avt +avt +avt +aCR +aDD +aEz +aFn +aEz +aGQ +aHH +aae +aae +aae +aae +aaa +aMN +aTv +aVr +aWQ +aVx +aMN +avt +avt +aVc +aZS +bai +bao +bao +bao +bai +baB +aVc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -fy -is -jQ -jt -ln -jt -jQ -is -fy -yW -Ov -PF -VM -VM -fP -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -vt -vt -vt -vt -vt -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -ae -ae -aa -aa -aa -aa -aa -vt -vt -Ue -UF -Vj -Vr -Vj -UF -VH -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +afy +ais +ajQ +ajt +aln +ajt +ajQ +ais +afy +ayW +aOv +aPF +aVM +aVM +afP +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +avt +avt +avt +avt +avt +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +aae +aae +baS +aMD +aMD +aVt +aXm +aVt +aMD +aMD +aVc +aVc +baL +bai +bat +bau +baM +bai +baW +aVc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -fy -fy -fy -is -lp -is -fy -fy -fy -fP -fP -fP -fP -fP -fP -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -ae -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -ae -aa -aa -aa -aa -aa -aa -vt -Ue -UF -Vk -Vs -Vk -UF -VH -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +afy +afy +afy +ais +alp +ais +afy +afy +afy +afP +afP +afP +afP +afP +afP +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aaa +aaa +aaa +aaa +aaa +aae +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +aae +baS +aNn +aTB +aVC +aXn +aWI +aWf +aYJ +aVc +aYZ +aZS +bai +baO +bau +bau +bai +baB +aVc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -fy -fy -kK -fy -fy -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -ae -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -ae -aa -aa -aa -aa -aa -aa -aa -Ue -UH -UF -Vt -UF -UH -VH -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +afy +afy +akK +afy +afy +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aaa +aaa +aaa +aaa +aaa +aaa +aae +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +aae +baS +aQh +aUN +aWe +aVj +aVy +aVN +aVT +aVZ +aXs +bah +baj +bau +bau +baN +bai +baB +aVc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -fy -fy -fy -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -ae -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -CS -ae -aa -aa -aa -aa -aa -aa -aa -Ug -UI -UI -UI -UI -UI -VJ -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +afy +afy +afy +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +aCS +aae +baS +aQr +aTR +aWz +aXu +aWI +aYP +aZf +aVc +aZZ +ban +bai +bax +bau +baN +bai +baC +aVc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -ae -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +aae +baS +aQA +aUe +aWI +aXz +aYE +aUe +aZq +aVc +aYL +baR +bai +bax +bau +baN +bai +baB +aVc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -ae -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aab +aab +aab +aab +aab +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +aae +baS +aRL +aUe +aWJ +aXA +aYF +aUe +aZH +aVc +aZb +bab +bai +baA +baJ +baA +bai +baB +aVc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -gg -ae -ae -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +agg +aae +aae +baS +aSR +aMD +aWK +aXI +aYI +aYR +aZI +aVc +aVz +bab +bai +baD +baK +baD +bai +baW +aVc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +aae +baS +aSS +aUe +aUe +aXJ +aUe +aUe +aZj +aVc +baa +bad +aVs +bai +baT +bai +aVs +baB +aVc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +baS +aTH +aWO +aYG +aXV +aZh +aWO +aZC +aVc +aVJ +bae +bam +bam +bam +bam +bam +baQ +aVc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +baS +aMD +aMD +aMD +aMD +aMD +aMD +aMD +aVc +aVc +aVc +aWc +aWc +aWc +aWc +aWc +aVc +aVc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} diff --git a/maps/tether/tether-08-mining.dmm b/maps/tether/tether-08-mining.dmm index 7bf87c5ee5..9f7c984b72 100644 --- a/maps/tether/tether-08-mining.dmm +++ b/maps/tether/tether-08-mining.dmm @@ -23,64 +23,57 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/mine/explored) "ag" = ( -/obj/effect/floor_decal/rust, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/turf/simulated/wall/r_wall, +/area/outpost/mining_main/hangar) "ah" = ( -/obj/structure/ore_box, -/obj/effect/floor_decal/rust, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 9 +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "ai" = ( -/obj/effect/floor_decal/rust, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/obj/machinery/mining/drill, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "aj" = ( -/obj/effect/floor_decal/rust, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/obj/machinery/mining/brace, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/camera/network/mining, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "ak" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 5 +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/machinery/mining/brace, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "al" = ( /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/mine/explored) "am" = ( -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/obj/machinery/door/blast/regular, +/turf/simulated/wall/r_wall, +/area/outpost/mining_main/hangar) "an" = ( -/obj/structure/ore_box, -/obj/effect/floor_decal/rust, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/light{ + dir = 1 }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) -"ao" = ( -/obj/effect/floor_decal/industrial/warning/dust{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) +"ao" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/outpost/mining_main/hangar; + base_turf = /turf/simulated/floor/tiled; + landmark_tag = "mining_outpost"; + name = "Mining Outpost Shuttle - Outpost" + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "ap" = ( /obj/effect/floor_decal/rust/steel_decals_rusted1, /obj/effect/floor_decal/rust/steel_decals_rusted2{ @@ -89,33 +82,38 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/mine/explored) "aq" = ( -/obj/machinery/mining/drill, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "ar" = ( -/obj/machinery/mining/brace, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) -"as" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 4 - }, -/obj/machinery/mining/brace, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) -"at" = ( -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) -"au" = ( -/obj/structure/table/steel, -/obj/item/weapon/tool/screwdriver, -/obj/item/weapon/tool/crowbar, -/obj/item/weapon/tool/wrench, -/obj/effect/floor_decal/industrial/warning/dust{ +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) +"as" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) +"at" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) +"au" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "av" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 4; @@ -128,18 +126,20 @@ /turf/simulated/floor/virgo3b, /area/outpost/mining_main/maintenance) "aw" = ( -/obj/machinery/light/small, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "ax" = ( -/obj/structure/table/steel, -/obj/machinery/cell_charger, -/obj/effect/floor_decal/industrial/warning/dust{ +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; dir = 8 }, -/obj/item/weapon/cell/high, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "ay" = ( /turf/simulated/wall/r_wall, /area/outpost/mining_main/maintenance) @@ -163,33 +163,41 @@ /turf/simulated/floor/virgo3b, /area/mine/explored) "aC" = ( -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "aD" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "south bump"; - pixel_y = -32 +/obj/structure/bed/chair{ + dir = 4 }, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" +/obj/effect/floor_decal/borderfloor{ + dir = 10 }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) +/obj/effect/floor_decal/corner/brown/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "aE" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/computer/shuttle_control/surface_mining_outpost{ + dir = 8 }, -/turf/simulated/wall/r_wall, -/area/outpost/mining_main/break_room) +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "aF" = ( /obj/structure/cable/heavyduty{ icon_state = "4-8" @@ -244,34 +252,14 @@ /turf/simulated/floor/virgo3b, /area/mine/explored) "aK" = ( -/obj/effect/floor_decal/borderfloor{ +/obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = 12; - pixel_y = 24 - }, -/obj/structure/closet/secure_closet/miner, /turf/simulated/floor/tiled, -/area/outpost/mining_main/break_room) +/area/outpost/mining_main/hangar) "aL" = ( /obj/structure/cable/heavyduty{ icon_state = "2-8" @@ -395,66 +383,43 @@ /turf/simulated/floor/tiled/steel_grid, /area/outpost/mining_main/break_room) "aX" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/vehicle/train/engine{ + dir = 8 }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/camera/network/mining{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/outpost/mining_main/break_room) +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "aY" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 +/obj/vehicle/train/trolley{ + dir = 8 }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/machinery/washing_machine, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, /turf/simulated/floor/tiled, -/area/outpost/mining_main/break_room) +/area/outpost/mining_main/hangar) "aZ" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/machinery/firealarm{ +/obj/machinery/power/apc{ dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 + name = "south bump"; + pixel_y = -32 }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 10; + pixel_y = -24 }, -/obj/structure/closet/secure_closet/miner, +/obj/structure/cable/green, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, /turf/simulated/floor/tiled, -/area/outpost/mining_main/break_room) +/area/outpost/mining_main/hangar) "ba" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 4 @@ -513,35 +478,28 @@ /turf/simulated/floor/plating, /area/outpost/mining_main/maintenance) "bg" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) +"bh" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/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 = 9; - pixel_y = 0 - }, -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/outpost/mining_main/break_room) -"bh" = ( -/obj/structure/table/glass, -/obj/machinery/microwave, -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 10 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 8 - }, /turf/simulated/floor/tiled, -/area/outpost/mining_main/break_room) +/area/outpost/mining_main/hangar) "bi" = ( /obj/structure/table/glass, /obj/effect/floor_decal/borderfloor, @@ -669,24 +627,22 @@ /turf/simulated/floor/plating, /area/outpost/mining_main/maintenance) "bv" = ( -/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{ +/obj/effect/floor_decal/industrial/warning{ dir = 1 }, /obj/structure/cable/green{ - d1 = 1; + d1 = 4; d2 = 8; - icon_state = "1-8" + icon_state = "4-8" }, -/turf/simulated/floor/tiled/steel_grid, -/area/outpost/mining_main/break_room) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "bw" = ( /obj/structure/cable{ d2 = 8; @@ -773,6 +729,9 @@ /obj/structure/cable/green, /turf/simulated/floor/plating, /area/outpost/mining_main/maintenance) +"bG" = ( +/turf/simulated/wall/r_wall, +/area/outpost/mining_main/secondary_gear_storage) "bH" = ( /obj/machinery/telecomms/relay/preset/mining, /turf/simulated/floor/plating, @@ -858,6 +817,85 @@ }, /turf/simulated/floor/tiled, /area/outpost/mining_main/break_room) +"bO" = ( +/obj/structure/closet/secure_closet/miner, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"bP" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) +"bQ" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) +"bR" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/machinery/light, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) +"bS" = ( +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/outpost/mining_main/secondary_gear_storage) +"bT" = ( +/obj/structure/closet/secure_closet/miner, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"bU" = ( +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"bV" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) "bW" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/brown/border, @@ -875,6 +913,122 @@ }, /turf/simulated/floor/tiled, /area/outpost/mining_main/break_room) +"bX" = ( +/obj/structure/bed/chair, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"bY" = ( +/obj/structure/ore_box, +/obj/effect/floor_decal/rust, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 9 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"bZ" = ( +/obj/effect/floor_decal/rust, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"ca" = ( +/obj/effect/floor_decal/rust, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/obj/machinery/mining/brace, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cb" = ( +/obj/effect/floor_decal/rust, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/obj/machinery/mining/drill, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cc" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 5 + }, +/obj/machinery/mining/brace, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cd" = ( +/obj/structure/closet/secure_closet/miner, +/obj/machinery/camera/network/mining{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"ce" = ( +/obj/structure/table/woodentable, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"cf" = ( +/obj/structure/ore_box, +/obj/effect/floor_decal/rust, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cg" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"ch" = ( +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"ci" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cj" = ( +/obj/structure/closet/secure_closet/miner, +/obj/effect/floor_decal/borderfloor{ + dir = 8; + icon_state = "borderfloor"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) "ck" = ( /obj/effect/floor_decal/rust/steel_decals_rusted1, /turf/simulated/floor/tiled/steel_dirty/virgo3b, @@ -891,6 +1045,24 @@ "cn" = ( /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/outpost/mining_main/passage) +"co" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) "cp" = ( /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/outpost/mining_main/passage) @@ -898,13 +1070,501 @@ /obj/effect/step_trigger/teleporter/from_mining, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/outpost/mining_main/passage) +"cr" = ( +/obj/machinery/mining/brace, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cs" = ( +/obj/machinery/mining/drill, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"ct" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/obj/machinery/mining/brace, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) "cu" = ( /mob/living/simple_mob/animal/passive/gaslamp, /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/mine/explored) "cv" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"cw" = ( +/obj/vehicle/train/trolley{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) +"cx" = ( +/obj/machinery/alarm{ + alarm_id = null; + breach_detection = 0; + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) +"cy" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/hangar) +"cz" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/obj/structure/ore_box, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cA" = ( /obj/machinery/status_display, /turf/simulated/wall/r_wall, +/area/outpost/mining_main/secondary_gear_storage) +"cB" = ( +/obj/machinery/door/airlock/glass_mining, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/outpost/mining_main/hangar) +"cC" = ( +/obj/structure/table/steel, +/obj/item/weapon/tool/screwdriver, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/tool/wrench, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cD" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/machinery/washing_machine, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/break_room) +"cE" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 12; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"cF" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 12; + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/break_room) +"cG" = ( +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/obj/item/weapon/cell/high, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cH" = ( +/obj/machinery/mech_recharger, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cI" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"cJ" = ( +/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/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/outpost/mining_main/break_room) +"cK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/outpost/mining_main/break_room) +"cL" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/break_room) +"cM" = ( +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/outpost/mining_main/break_room) +"cN" = ( +/obj/machinery/light/small, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cO" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -32 + }, +/obj/effect/floor_decal/industrial/warning/dust, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cP" = ( +/obj/effect/floor_decal/industrial/warning/dust, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cQ" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 6 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/outpost/mining_main/drill_equipment) +"cR" = ( +/obj/structure/table/glass, +/obj/machinery/microwave, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/break_room) +"cS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"cT" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"cU" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"cV" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"cW" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"cX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"cY" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"cZ" = ( +/obj/machinery/alarm{ + alarm_id = null; + breach_detection = 0; + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"da" = ( +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/secondary_gear_storage) +"db" = ( +/obj/machinery/door/airlock/glass_mining, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/outpost/mining_main/secondary_gear_storage) +"dc" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/outpost/mining_main/break_room) +"dd" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, /area/outpost/mining_main/break_room) "di" = ( /obj/machinery/access_button{ @@ -954,31 +1614,6 @@ "hK" = ( /turf/simulated/wall/r_wall, /area/outpost/mining_main/dorms) -"hW" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/outpost/mining_main/break_room) -"qx" = ( -/obj/machinery/mech_recharger, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) "rH" = ( /obj/effect/floor_decal/rust/steel_decals_rusted1{ dir = 8 @@ -1194,13 +1829,6 @@ /obj/machinery/status_display, /turf/simulated/wall/r_wall, /area/outpost/mining_main/airlock) -"Hi" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 - }, -/obj/structure/ore_box, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/outpost/mining_main/storage) "HP" = ( /obj/effect/floor_decal/rust/steel_decals_rusted1{ dir = 8 @@ -2239,16 +2867,16 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +ag +ag +am +am +am +am +am +ag +ag +ag ab ab ab @@ -2381,6 +3009,16 @@ ab ab ab ab +ag +ah +aw +aw +aw +aw +aw +aC +aD +ag ab ab ab @@ -2390,17 +3028,7 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +av ab ab ab @@ -2523,29 +3151,29 @@ ab ab ab ab +ag +ak +aq +aq +aq +aq +aq +aK +aE +ag ab ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +ay +vo +vo +vo +ZC +vo +vo +ay ab ab ab @@ -2665,31 +3293,31 @@ ab ab ab ab +ag +ak +aq +aq +aq +aq +aq +aK +bQ +ag ab ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +ay +aP +aV +aP +bn +bs +bB +bI +aA +aB ab ab ab @@ -2807,31 +3435,31 @@ ab ab ab ab +ag +an +aq +aq +aq +aq +aq +aK +bR +ag ab ab ab ab ab +ay +aQ +ba +bf +bn +bu +bC +SF ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +aF ab ab ab @@ -2949,31 +3577,31 @@ ab ab ab ab +ag +ar +aq +aq +aq +aq +aq +bg +bV +ag +ab +cu ab ab ab +ay +aR +bb +bj +bo +bw +bD +SF ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +aF ab ab ab @@ -3091,31 +3719,31 @@ ab ab ab ab +ag +aj +aq +aq +aq +aq +aq +aK +aX +ag ab ab ab ab ab +ay +aS +bc +bk +bp +bx +bF +SF ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +aF ab ab ab @@ -3233,31 +3861,31 @@ ab ab ab ab +ag +ai +aq +aq +aq +aq +aq +aK +aY +ag ab ab ab ab ab +ay +aT +bd +bl +bq +bz +bp +SF ab -ab -ab -ab -ab -ab -ab -ab -av -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +aF ab ab ab @@ -3375,31 +4003,31 @@ ab ab ab ab +ag +ai +aq +aq +aq +aq +aq +aK +aY +ag +bG +bG +bG +bG +bG +bG +aU +be +bm +br +bA +bH +SF ab -ab -ab -ab -ab -ab -ab -ab -ab -ay -vo -vo -vo -ZC -vo -vo -ay -ab -ab -ab -ab -ab -ab -ab -ab +aF ab ab ab @@ -3517,31 +4145,31 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +ag +as +aq +aq +aq +aq +aq +aK +cw +ag +bO +bT +cd +cj +cv +bG +ay +Cy +ay +ay +ay +ay ay -aP -aV -aP -bn -bs -bB -bI -aA -aB -ab -ab -ab -ab -ab ab +aF ab ab ab @@ -3659,35 +4287,35 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ay -aQ -ba -bf -bn -bu -bC -SF +ag +ai +aq +aq +aq +aq +aq +bh +aZ +ag +cS +cU +bU +cX +cT +cA +aI +aW +cR +hK +WK +JA +hK ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (17,1,1) = {" @@ -3801,35 +4429,35 @@ ab ab ab ab -ab -ab -ab -ab -ab -cu -ab -ab -ab -ay -aR -bb -bj -bo -bw -bD -SF +ag +at +aq +aq +ao +aq +aq +bv +cx +ag +cE +cV +cW +cY +cZ +bG +cD +aW +bi +hK +Fa +uE +hK ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (18,1,1) = {" @@ -3943,35 +4571,35 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ay -aS -bc -bk -bp -bx -bF -SF +ag +au +ax +ax +ax +ax +ax +bP +cy +cB +cI +bX +ce +co +da +db +dc +dd +bW +hK +Ma +hK +hK ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (19,1,1) = {" @@ -4085,35 +4713,35 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ay -aT -bd -bl -bq -bz -bp -SF +ag +ag +am +am +am +am +am +ag +ag +ag +bS +bS +bS +bS +bS +bG +cF +cJ +ZV +ty +Fn +bt +az ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (20,1,1) = {" @@ -4236,26 +4864,26 @@ ab ab ab ab -ay -aU -be -bm -br -bA -bH -SF +ab +ab +ab +ab +ab +ab +VK +aM +cK +Uk +Uk +by +bM +az ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (21,1,1) = {" @@ -4378,26 +5006,26 @@ ab ab ab ab -ay -ay -Cy -ay -ay -ay -ay -ay +ab +ab +ab +ab +ab +ab +VK +Uy +cL +bK +bL +by +bN +az ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (22,1,1) = {" @@ -4514,32 +5142,32 @@ ab ab ab ab -ah -an -an -Hi -au -ax -cv -aI -aW -bh -hK -WK -JA -hK +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +Sq +tk +cM +Px +Px +ef +Px +Px ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (23,1,1) = {" @@ -4656,32 +5284,32 @@ ab ab ab ab -ag -am -am -at -at -aw -az -aY -aW -bi -hK -Fa -uE -hK +ab +ab +ab +ab +ab +ab +ab +ab +bY +cf +cf +cz +cC +cG +cN +Px +ae +VG +ae +Px ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (24,1,1) = {" @@ -4798,32 +5426,32 @@ ab ab ab ab -aj -at -ar -at -at -aD -az -aK -aX -bW -hK -Ma -hK -hK +ab +ab +ab +ab +ab +ab +ab +ab +bZ +cg +cg +ch +ch +ch +cO +Px +ae +DX +ae +Px ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (25,1,1) = {" @@ -4940,32 +5568,32 @@ ab ab ab ab -ai -at -aq -at -qx -aC -aE -aZ -bv -ZV -ty -Fn -bt -az +ab +ab +ab +ab +ab +ab +ab +ab +ca +ch +cr +ch +ch +cH +cP +Px +Gs +QZ +BD +Px ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (26,1,1) = {" @@ -5082,32 +5710,32 @@ ab ab ab ab -ak -ao -as -ao -ao -ao -VK -aM -bg -Uk -Uk -by -bM -az +ab +ab +ab +ab +ab +ab +ab +ab +cb +ch +cs +ch +ch +ch +cP +Px +Fb +Zn +vx +Px ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (27,1,1) = {" @@ -5230,26 +5858,26 @@ ab ab ab ab -VK -Uy -hW -bK -bL -by -bN -az +ab +ab +cc +ci +ct +ci +ci +ci +cQ +Px +IA +vG +bJ +Px ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (28,1,1) = {" @@ -5362,6 +5990,15 @@ ab ab ab ab +cu +ab +ab +ab +ab +ab +ab +ab +ab ab ab ab @@ -5372,13 +6009,10 @@ ab ab ab ab -Sq -tk -tk Px Px -ef -Px +di +GU Px ab aF @@ -5386,12 +6020,6 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (29,1,1) = {" @@ -5517,23 +6145,23 @@ ab ab ab ab -Px -ae -VG -ae -Px +ab +ab +ab +ab +ab +ab +ab +rH +rH +HP +ab ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (30,1,1) = {" @@ -5659,23 +6287,23 @@ ab ab ab ab -Px -ae -DX -ae -Px +ab +ab +ab +ab +ab +ab +ab +al +al +ab +ab ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (31,1,1) = {" @@ -5801,23 +6429,23 @@ ab ab ab ab -Px -Gs -QZ -BD -Px +ab +ab +ab +ab +ab +ab +ab +al +al +ab +ab ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (32,1,1) = {" @@ -5943,23 +6571,23 @@ ab ab ab ab -Px -Fb -Zn -vx -Px +ab +ab +ab +ab +ab +ab +al +al +al +ab +ab ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (33,1,1) = {" @@ -6085,23 +6713,23 @@ ab ab ab ab -Px -IA -vG -bJ -Px +ab +ab +ab +ab +ab +ab +al +al +al +ab +ab ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (34,1,1) = {" @@ -6227,23 +6855,23 @@ ab ab ab ab -Px -Px -di -GU -Px +ab +ab +ab +ab +ab +ab +al +al +ab +ab +ab ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (35,1,1) = {" @@ -6370,9 +6998,15 @@ ab ab ab ab -rH -rH -HP +ab +ab +ab +ab +ab +al +al +ab +ab ab ab aF @@ -6380,12 +7014,6 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (36,1,1) = {" @@ -6516,18 +7144,18 @@ al al al ab +al +al +al +ab +ab +ab ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (37,1,1) = {" @@ -6659,17 +7287,17 @@ af al ab af +al +al +ab +ab +ab +ab aG ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (38,1,1) = {" @@ -6801,17 +7429,17 @@ al al ab af +al +ab +ab +ab +ab +ab aH ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (39,1,1) = {" @@ -6943,17 +7571,17 @@ al ck al af +al +ab +ab +ab +ab +ab aH ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (40,1,1) = {" @@ -7085,17 +7713,17 @@ al cl al af +ab +ab +ab +ab +ab +ab aH ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (41,1,1) = {" @@ -7227,17 +7855,17 @@ al al ab af +ab +ab +ab +ab +ab +ab aH ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (42,1,1) = {" @@ -7369,17 +7997,17 @@ al al ab al +ab +ab +ab +ab +ab +ab aH ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (43,1,1) = {" @@ -7511,17 +8139,17 @@ al af ab al +ab +ab +ab +ab +ab +ab aH ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (44,1,1) = {" @@ -7653,17 +8281,17 @@ af al al al +ab +ab +ab +ab +ab +ab aH ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (45,1,1) = {" @@ -7795,17 +8423,17 @@ af al al al +ab +ab +ab +ab +ab +ab aJ ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (46,1,1) = {" @@ -7937,17 +8565,17 @@ al ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (47,1,1) = {" @@ -8079,17 +8707,17 @@ al ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (48,1,1) = {" @@ -8221,17 +8849,17 @@ ab ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (49,1,1) = {" @@ -8363,17 +8991,17 @@ ab ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (50,1,1) = {" @@ -8505,17 +9133,17 @@ af ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (51,1,1) = {" @@ -8647,17 +9275,17 @@ ab ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (52,1,1) = {" @@ -8789,17 +9417,17 @@ af ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (53,1,1) = {" @@ -8931,17 +9559,17 @@ ab ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (54,1,1) = {" @@ -9073,17 +9701,17 @@ ab ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (55,1,1) = {" @@ -9215,17 +9843,17 @@ ab ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (56,1,1) = {" @@ -9357,17 +9985,17 @@ ab af ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (57,1,1) = {" @@ -9499,17 +10127,17 @@ af ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (58,1,1) = {" @@ -9641,17 +10269,17 @@ ab ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (59,1,1) = {" @@ -9783,17 +10411,17 @@ ab ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (60,1,1) = {" @@ -9925,17 +10553,17 @@ ab af ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (61,1,1) = {" @@ -10067,17 +10695,17 @@ ab ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (62,1,1) = {" @@ -10209,17 +10837,17 @@ af ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (63,1,1) = {" @@ -10351,17 +10979,17 @@ ab ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (64,1,1) = {" @@ -10493,17 +11121,17 @@ af ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (65,1,1) = {" @@ -10635,17 +11263,17 @@ af ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (66,1,1) = {" @@ -10777,17 +11405,17 @@ ab ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (67,1,1) = {" @@ -10919,17 +11547,17 @@ af ab ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (68,1,1) = {" @@ -11061,17 +11689,17 @@ af af ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (69,1,1) = {" @@ -11203,17 +11831,17 @@ ab af ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (70,1,1) = {" @@ -11345,17 +11973,17 @@ ab af ab ab +ab +ab +ab +ab +ab +ab aF ab ab ab ab -ab -ab -ab -ab -ab -ab aa "} (71,1,1) = {" @@ -11487,15 +12115,15 @@ ab af ab ab +ab +ab +ab +ab +ab +ab aL aN aN -aN -aN -aN -aN -aN -aN aA aO aa diff --git a/maps/tether/tether_areas.dm b/maps/tether/tether_areas.dm index 331cc3b7a6..9c595e82e1 100644 --- a/maps/tether/tether_areas.dm +++ b/maps/tether/tether_areas.dm @@ -95,6 +95,12 @@ name = "\improper Engineering Electrical Shaft" icon_state = "substation" +/area/engineering/gravity_lobby + name = "\improper Engineering GravGen Lobby" + +/area/engineering/gravity_gen + name = "\improper Engineering GravGen" + /area/vacant/vacant_office name = "\improper Vacant Office" icon_state = "vacant_site" @@ -238,6 +244,9 @@ name = "\improper Vacant Prep Area" /area/vacant/vacant_site/gateway/lower name = "\improper Lower Vacant Prep Area" +//TFF 5/4/20 - Mining Ops move TODO Change all Vacant areas to construction_site per vermin event location announcement. +/area/construction/vacant_mining_ops + name = "\improper Vacant Mining Operations" // /area/tether/surfacebase/east_stairs_three //This is just part of an upper hallway @@ -252,32 +261,38 @@ /area/tether/surfacebase/emergency_storage/atrium name = "\improper Atrium Emergency Storage" -// Main mining area -/area/tether/surfacebase/mining_main +//TFF 7/4/20 - New areas for Surface Cargo bits as well as the Mining Outpost. Some former ones deleted. Others renamed. +// Surface Cargo/Mining EVA/Warehouse/Mining Outpost adadditions +/area/tether/surfacebase/cargo + name = "Surface Cargo Foyer" + icon = 'icons/turf/areas.dmi' + icon_state = "quartstorage" +/area/tether/surfacebase/cargo/mining //TODO: Change to medical airlock access + name = "\improper Mining Equipment Storage" icon_state = "outpost_mine_main" -/area/tether/surfacebase/mining_main/airlock +/area/tether/surfacebase/cargo/mining/airlock //TODO: Change to medical airlock name = "\improper Mining Airlock" -/area/tether/surfacebase/mining_main/storage - name = "\improper Mining Gear Storage" -/area/tether/surfacebase/mining_main/uxstorage - name = "\improper Mining Secondary Storage" -/area/tether/surfacebase/mining_main/ore - name = "\improper Mining Ore Storage" -/area/tether/surfacebase/mining_main/eva - name = "\improper Mining EVA" -/area/tether/surfacebase/mining_main/break_room - name = "\improper Mining Crew Area" -/area/tether/surfacebase/mining_main/refinery - name = "\improper Mining Refinery" -/area/tether/surfacebase/mining_main/external - name = "\improper Mining Refinery" -/area/tether/surfacebase/mining_main/bathroom - name = "\improper Mining Bathroom" -/area/tether/surfacebase/mining_main/lobby - name = "\improper Mining Lobby" -/area/tether/surfacebase/mining_main/surfacecargo +/area/tether/surfacebase/cargo/warehouse + name = "\improper Surface Cargo Warehouse" +/area/tether/surfacebase/cargo/office name = "\improper Surface Cargo Office" lightswitch = 0 +/area/tether/surfacebase/mining_main + icon_state = "outpost_mine_main" +/area/tether/surfacebase/mining_main/eva + name = "\improper Mining EVA" +/area/tether/surfacebase/mining_main/external //TODO: repath for medical move + name = "\improper Mining External" +/area/tether/surfacebase/mining_main/break_room + name = "\improper Mining Crew Area" +/area/tether/surfacebase/mining_main/bathroom + name = "\improper Mining Bathroom" +/area/outpost/mining_main/hangar + name = "\improper Mining Outpost Shuttle Hangar" +/area/outpost/mining_main/secondary_gear_storage + name = "\improper Mining Outpost Gear Storage" +/area/outpost/mining_main/drill_equipment + name = "\improper Mining Equipment Storage" // Mining Underdark /area/mine/unexplored/underdark @@ -1070,12 +1085,33 @@ /area/shuttle/medivac/engines name = "\improper Medivac Engines" -// Belter Dock +/area/shuttle/securiship + requires_power = 1 + icon_state = "shuttle2" +/area/shuttle/securiship/general + name = "\improper Securiship" + +/area/shuttle/securiship/cockpit + name = "\improper Securiship Cockpit" + +/area/shuttle/securiship/engines + name = "\improper Securiship Engines" + +//TFF 5/4/20 - Mining Ops move +// Asteroid Mining belter and Mining Outpost shuttles and refinery/gear areas /area/quartermaster/belterdock name = "\improper Cargo Belter Access" icon_state = "mining" - +/area/quartermaster/belterdock/gear + name = "\improper Mining Gear Storage" +/area/quartermaster/belterdock/refinery + name = "\improper Mining Refinery" +/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar + name = "\improper Mining Outpost Shuttle - Station" +area/shuttle/mining_outpost/shuttle + name = "\improper Mining Outpost Shuttle" + icon_state = "shuttle2" // Elevator area // /area/tether/elevator diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm index bf2bf12534..57b8b2a19e 100644 --- a/maps/tether/tether_defines.dm +++ b/maps/tether/tether_defines.dm @@ -32,6 +32,19 @@ #define NETWORK_EXPLORATION "Exploration" #define NETWORK_XENOBIO "Xenobiology" +/datum/map/tether/New() + ..() + var/choice = pickweight(list( + "title" = 10, + "tether" = 50, + "tether_night" = 50, + "tether2_night" = 50, + "tether2_dog" = 1, + "tether2_love" = 1 + )) + if(choice) + lobby_screens = list(choice) + /datum/map/tether name = "Virgo" full_name = "NSB Adephagia" @@ -130,11 +143,12 @@ /area/rnd/miscellaneous_lab ) +//TFF 5/4/20 - Mining Ops move, airlock path change unit_test_exempt_from_atmos = list( /area/engineering/atmos_intake, // Outside, /area/rnd/external, // Outside, /area/tether/surfacebase/mining_main/external, // Outside, - /area/tether/surfacebase/mining_main/airlock, // Its an airlock, + /area/tether/surfacebase/cargo/mining/airlock, // It's an airlock, TODO: repath for later Med EVA on Surface /area/tether/surfacebase/emergency_storage/rnd, /area/tether/surfacebase/emergency_storage/atrium) @@ -177,6 +191,10 @@ Z_LEVEL_ROGUEMINE_3, Z_LEVEL_ROGUEMINE_4) +//TFF 16/4/20 - mining outpost shuttle defines + mining_station_z = list(Z_LEVEL_SPACE_HIGH) + mining_outpost_z = list(Z_LEVEL_SURFACE_MINE) + lateload_single_pick = null //Nothing right now. planet_datums_to_make = list(/datum/planet/virgo3b) @@ -209,6 +227,10 @@ /obj/effect/overmap/visitable/sector/virgo3b name = "Virgo 3B" desc = "Full of phoron, and home to the NSB Adephagia, where you can dock and refuel your craft." + scanner_desc = @{"[i]Registration[/i]: NSB Adephagia +[i]Class[/i]: Installation +[i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF +[b]Notice[/b]: NanoTrasen Base, authorized personnel only"} base = 1 icon_state = "globe" color = "#d35b5b" @@ -298,7 +320,7 @@ /datum/map_z_level/tether/transit z = Z_LEVEL_TRANSIT name = "Transit" - flags = MAP_LEVEL_SEALED|MAP_LEVEL_PLAYER|MAP_LEVEL_CONTACT|MAP_LEVEL_XENOARCH_EXEMPT + flags = MAP_LEVEL_STATION|MAP_LEVEL_SEALED|MAP_LEVEL_PLAYER|MAP_LEVEL_CONTACT|MAP_LEVEL_XENOARCH_EXEMPT /datum/map_z_level/tether/station/space_low z = Z_LEVEL_SPACE_LOW @@ -327,11 +349,11 @@ /datum/map_z_level/tether/mine z = Z_LEVEL_SURFACE_MINE name = "Mining Outpost" - flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_SEALED + flags = MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_SEALED base_turf = /turf/simulated/floor/outdoors/rocks/virgo3b /datum/map_z_level/tether/solars z = Z_LEVEL_SOLARS name = "Solar Field" - flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_SEALED + flags = MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_SEALED base_turf = /turf/simulated/floor/outdoors/rocks/virgo3b diff --git a/maps/tether/tether_jobs.dm b/maps/tether/tether_jobs.dm index a09d05a247..f7f03758d6 100644 --- a/maps/tether/tether_jobs.dm +++ b/maps/tether/tether_jobs.dm @@ -8,7 +8,7 @@ assignable = FALSE visible = FALSE -/datum/job/talon/captain +/datum/job/talon_captain title = "Talon Captain" flag = TALCAP department_flag = TALON @@ -29,7 +29,7 @@ access = list(access_talon) minimal_access = list(access_talon) -/datum/job/talon/doctor +/datum/job/talon_doctor title = "Talon Doctor" flag = TALDOC department_flag = TALON @@ -49,7 +49,7 @@ access = list(access_talon) minimal_access = list(access_talon) -/datum/job/talon/engineer +/datum/job/talon_engineer title = "Talon Engineer" flag = TALENG department_flag = TALON @@ -69,7 +69,7 @@ access = list(access_talon) minimal_access = list(access_talon) -/datum/job/talon/pilot +/datum/job/talon_pilot title = "Talon Pilot" flag = TALPIL department_flag = TALON @@ -89,7 +89,7 @@ access = list(access_talon) minimal_access = list(access_talon) -/datum/job/talon/guard +/datum/job/talon_guard title = "Talon Guard" flag = TALSEC department_flag = TALON diff --git a/maps/tether/tether_shuttle_defs.dm b/maps/tether/tether_shuttle_defs.dm index b98d2e4adb..29489eea93 100644 --- a/maps/tether/tether_shuttle_defs.dm +++ b/maps/tether/tether_shuttle_defs.dm @@ -9,6 +9,7 @@ landmark_station = "escape_station" landmark_transition = "escape_transit" move_time = SHUTTLE_TRANSIT_DURATION_RETURN + move_direction = NORTH ////////////////////////////////////////////////////////////// /datum/shuttle/autodock/ferry/escape_pod/large_escape_pod1 @@ -21,6 +22,7 @@ landmark_transition = "escapepod1_transit" docking_controller_tag = "large_escape_pod_1" move_time = SHUTTLE_TRANSIT_DURATION_RETURN + move_direction = EAST ////////////////////////////////////////////////////////////// // Supply shuttle @@ -33,6 +35,7 @@ landmark_station = "supply_station" docking_controller_tag = "supply_shuttle" flags = SHUTTLE_FLAGS_PROCESS|SHUTTLE_FLAGS_SUPPLY + move_direction = NORTH ////////////////////////////////////////////////////////////// // Trade Ship @@ -51,6 +54,7 @@ "beach_nw" ) defer_initialisation = TRUE + move_direction = WEST ////////////////////////////////////////////////////////////// // Tether Shuttle @@ -65,6 +69,7 @@ shuttle_area = /area/shuttle/tether //crash_areas = list(/area/shuttle/tether/crash1, /area/shuttle/tether/crash2) docking_controller_tag = "tether_shuttle" + move_direction = NORTH ////////////////////////////////////////////////////////////// // Mercenary Shuttle @@ -92,6 +97,7 @@ arrival_message = "Attention. An unregistered vessel is approaching Virgo-3B." departure_message = "Attention. A unregistered vessel is now leaving Virgo-3B." defer_initialisation = TRUE + move_direction = WEST ////////////////////////////////////////////////////////////// // Ninja Shuttle @@ -122,6 +128,7 @@ arrival_message = "Attention. An unregistered vessel is approaching Virgo-3B." departure_message = "Attention. A unregistered vessel is now leaving Virgo-3B." defer_initialisation = TRUE + move_direction = NORTH ////////////////////////////////////////////////////////////// // Skipjack @@ -152,6 +159,7 @@ arrival_message = "Attention. An unregistered vessel is approaching Virgo-3B." departure_message = "Attention. A unregistered vessel is now leaving Virgo-3B." defer_initialisation = TRUE + move_direction = NORTH ////////////////////////////////////////////////////////////// // ERT Shuttle @@ -182,6 +190,7 @@ arrival_message = "Attention. An NT support vessel is approaching Virgo-3B." departure_message = "Attention. A NT support vessel is now leaving Virgo-3B." defer_initialisation = TRUE + move_direction = WEST ////////////////////////////////////////////////////////////// // RogueMiner "Belter: Shuttle @@ -196,7 +205,21 @@ landmark_offsite = "belter_zone1" landmark_transition = "belter_transit" docking_controller_tag = "belter_docking" + move_direction = EAST /datum/shuttle/autodock/ferry/belter/New() move_time = move_time + rand(-5 SECONDS, 5 SECONDS) ..() + +////////////////////////////////////////////////////////////// +//TFF 12/4/20 Surface Mining Outpost Shuttle + +/datum/shuttle/autodock/ferry/surface_mining_outpost + name = "Mining Outpost" + location = FERRY_LOCATION_STATION + warmup_time = 5 + shuttle_area = /area/shuttle/mining_outpost + landmark_station = "mining_station" + landmark_offsite = "mining_outpost" + docking_controller_tag = "mining_docking" + move_direction = NORTH diff --git a/maps/tether/tether_shuttles.dm b/maps/tether/tether_shuttles.dm index 3687ba61bb..be5f14b42f 100644 --- a/maps/tether/tether_shuttles.dm +++ b/maps/tether/tether_shuttles.dm @@ -32,6 +32,11 @@ shuttle_tag = "Trade" req_one_access = list(access_trader) +//TFF 12/4/20 - Add console for Mining Outpost Shuttle +/obj/machinery/computer/shuttle_control/surface_mining_outpost + name = "surface mining outpost shuttle control console" + shuttle_tag = "Mining Outpost" + req_one_access = list(access_mining) // // "Tram" Emergency Shuttler // Becuase the tram only has its own doors and no corresponding station doors, a docking controller is overkill. @@ -41,6 +46,7 @@ var/tag_door_offsite = "escape_shuttle_hatch_offsite" var/frequency = 1380 // Why this frequency? BECAUSE! Thats what someone decided once. var/datum/radio_frequency/radio_connection + move_direction = NORTH /datum/shuttle/autodock/ferry/emergency/New() radio_connection = radio_controller.add_object(src, frequency, null) @@ -189,6 +195,7 @@ docking_controller_tag = "expshuttle_docker" shuttle_area = list(/area/shuttle/excursion/cockpit, /area/shuttle/excursion/general, /area/shuttle/excursion/cargo) fuel_consumption = 3 + move_direction = NORTH // The 'ship' of the excursion shuttle /obj/effect/overmap/visitable/ship/landable/excursion @@ -213,6 +220,7 @@ docking_controller_tag = "tourbus_docker" shuttle_area = list(/area/shuttle/tourbus/cockpit, /area/shuttle/tourbus/general, /area/shuttle/tourbus/engines) fuel_consumption = 1 + move_direction = NORTH // The 'ship' of the excursion shuttle /obj/effect/overmap/visitable/ship/landable/tourbus @@ -237,6 +245,7 @@ docking_controller_tag = "medivac_docker" shuttle_area = list(/area/shuttle/medivac/cockpit, /area/shuttle/medivac/general, /area/shuttle/medivac/engines) fuel_consumption = 1 + move_direction = EAST // The 'ship' of the excursion shuttle /obj/effect/overmap/visitable/ship/landable/medivac @@ -250,4 +259,30 @@ /obj/machinery/computer/shuttle_control/explore/medivac name = "short jump console" shuttle_tag = "Medivac Shuttle" - req_one_access = list(access_pilot) + req_one_access = list(access_cmo, access_pilot) + +//////////////////////////////////////// +//////// Securiship ///////////// +//////////////////////////////////////// +/datum/shuttle/autodock/overmap/securiship + name = "Securiship Shuttle" + warmup_time = 0 + current_location = "tether_securiship_dock" + docking_controller_tag = "securiship_docker" + shuttle_area = list(/area/shuttle/securiship/cockpit, /area/shuttle/securiship/general, /area/shuttle/securiship/engines) + fuel_consumption = 1 + move_direction = NORTH + +// The 'ship' of the excursion shuttle +/obj/effect/overmap/visitable/ship/landable/securiship + name = "Securiship Shuttle" + desc = "A security transport ship." + vessel_mass = 3000 + vessel_size = SHIP_SIZE_SMALL + shuttle = "Securiship Shuttle" + fore_dir = EAST + +/obj/machinery/computer/shuttle_control/explore/securiship + name = "short jump console" + shuttle_tag = "Securiship Shuttle" + req_one_access = list(access_pilot, access_hos) diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm index 5e7186d1e7..c5e5175a8a 100644 --- a/maps/tether/tether_things.dm +++ b/maps/tether/tether_things.dm @@ -332,7 +332,7 @@ var/global/list/latejoin_tram = list() desc = "Wall-mounted Medical Equipment dispenser. This limited-use version dispenses antitoxins with mild painkillers for surface EVAs." icon_state = "wallmed" density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude - products = list(/obj/item/weapon/reagent_containers/pill/airlock = 10,/obj/item/device/healthanalyzer = 1) + products = list(/obj/item/weapon/reagent_containers/pill/airlock = 20) contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 2) req_log_access = access_cmo has_logs = 1 diff --git a/maps/virgo_minitest/virgo_minitest_defines.dm b/maps/virgo_minitest/virgo_minitest_defines.dm index 13a39a591e..8432fb7f22 100644 --- a/maps/virgo_minitest/virgo_minitest_defines.dm +++ b/maps/virgo_minitest/virgo_minitest_defines.dm @@ -9,21 +9,15 @@ lobby_icon = 'icons/misc/title_vr.dmi' lobby_screens = list("tether2_night") - admin_levels = list() - sealed_levels = list() - empty_levels = list() - station_levels = list(Z_LEVEL_MAIN_VIRGO_TESTING) - contact_levels = list(Z_LEVEL_MAIN_VIRGO_TESTING) - player_levels = list(Z_LEVEL_MAIN_VIRGO_TESTING) - - accessible_z_levels = list("1" = 100) // The defines can't be used here sadly. - base_turf_by_z = list("1" = /turf/space) + accessible_z_levels = list("[Z_LEVEL_MAIN_VIRGO_TESTING]" = 100) + base_turf_by_z = list("[Z_LEVEL_MAIN_VIRGO_TESTING]" = /turf/space) use_overmap = TRUE //var/overmap_size = 20 // Dimensions of overmap zlevel if overmap is used. //var/overmap_z = 0 // If 0 will generate overmap zlevel on init. Otherwise will populate the zlevel provided. //var/overmap_event_areas = 0 // How many event "clouds" will be generated + zlevel_datum_type = /datum/map_z_level/minitest station_name = "NSS Ade-testing" station_short = "VORE-testing" @@ -64,6 +58,12 @@ allowed_spawns = list("Arrivals Shuttle") +/datum/map_z_level/minitest/station + z = Z_LEVEL_MAIN_VIRGO_TESTING + name = "Station Level" + flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_CONSOLES|MAP_LEVEL_XENOARCH_EXEMPT + holomap_legend_x = 220 + holomap_legend_y = 160 /datum/map/virgo_minitest/perform_map_generation() /* diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index f67f1d3817..cd953e8217 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -22,21 +22,26 @@ var/list/all_maps = list() var/full_name = "Unnamed Map" var/path - var/list/zlevels = list() var/zlevel_datum_type // If populated, all subtypes of this type will be instantiated and used to populate the *_levels lists. - - var/list/station_levels = list() // Z-levels the station exists on - var/list/admin_levels = list() // Z-levels for admin functionality (Centcom, shuttle transit, etc) - var/list/contact_levels = list() // Z-levels that can be contacted from the station, for eg announcements - var/list/player_levels = list() // Z-levels a character can typically reach - var/list/sealed_levels = list() // Z-levels that don't allow random transit at edge - var/list/xenoarch_exempt_levels = list() //Z-levels exempt from xenoarch finds and digsites spawning. - var/list/empty_levels = null // Empty Z-levels that may be used for various things (currently used by bluespace jump) - - var/list/map_levels // Z-levels available to various consoles, such as the crew monitor (when that gets coded in). Defaults to station_levels if unset. var/list/base_turf_by_z = list() // Custom base turf by Z-level. Defaults to world.turf for unlisted Z-levels + // Automatically populated lists made static for faster lookups + var/static/list/zlevels = list() + var/static/list/station_levels = list() // Z-levels the station exists on + var/static/list/admin_levels = list() // Z-levels for admin functionality (Centcom, shuttle transit, etc) + var/static/list/contact_levels = list() // Z-levels that can be contacted from the station, for eg announcements + var/static/list/player_levels = list() // Z-levels a character can typically reach + var/static/list/sealed_levels = list() // Z-levels that don't allow random transit at edge + var/static/list/xenoarch_exempt_levels = list() //Z-levels exempt from xenoarch finds and digsites spawning. + var/static/list/empty_levels = null // Empty Z-levels that may be used for various things (currently used by bluespace jump) + // End Static Lists + + // Z-levels available to various consoles, such as the crew monitor. Defaults to station_levels if unset. + var/list/map_levels + + // E-mail TLDs to use for NTnet modular computer e-mail addresses var/list/usable_email_tlds = list("freemail.nt") + //This list contains the z-level numbers which can be accessed via space travel and the percentile chances to get there. var/list/accessible_z_levels = list() @@ -62,11 +67,13 @@ var/list/all_maps = list() var/ai_shell_restricted = FALSE //VOREStation Addition - are there z-levels restricted? var/ai_shell_allowed_levels = list() //VOREStation Addition - which z-levels ARE we allowed to visit? - //VOREStation Addition Start - belter stuff + //VOREStation Addition Start - belter stuff TFF 16/4/20 - Mining Outpost Shuttle var/list/belter_docked_z = list() var/list/belter_transit_z = list() var/list/belter_belt_z = list() - //VOREStation Addition End - belter stuff + var/list/mining_station_z = list() + var/list/mining_outpost_z = list() + //VOREStation Addition End var/station_name = "BAD Station" var/station_short = "Baddy" @@ -136,6 +143,39 @@ var/list/all_maps = list() else default_skybox = new() +// Gets the current time on a current zlevel, and returns a time datum +/datum/map/proc/get_zlevel_time(var/z) + if(!z) + z = 1 + var/datum/planet/P = SSplanets.z_to_planet[z] + // We found a planet tied to that zlevel, give them the time + if(istype(P)) + return P.current_time + + // We have to invent a time + else + var/seconds_stationtime = round(station_time_in_ticks*0.1) //Not actually ticks...... + var/datum/time/T = new(seconds_stationtime) + return T + +// Returns a boolean for if it's night or not on a particular zlevel +/datum/map/proc/get_night(var/z) + if(!z) + z = 1 + var/datum/time/now = get_zlevel_time(z) + var/percent = now.seconds_stored / now.seconds_in_day + + // First quarter, last quarter + if(percent < 0.25 || percent > 0.75) + return TRUE + // Second quarter, third quarter + else + return FALSE + +// Boolean for if we should use SSnightshift night hours +/datum/map/proc/get_nightshift() + return get_night(1) //Defaults to z1, customize however you want on your own maps + /datum/map/proc/setup_map() return diff --git a/nano/templates/apc.tmpl b/nano/templates/apc.tmpl index d99b1f8700..9b39900a81 100644 --- a/nano/templates/apc.tmpl +++ b/nano/templates/apc.tmpl @@ -201,6 +201,15 @@
      +
      +
      + Night Lighting: +
      +
      + {{:helper.link(data.nightshiftLights ? 'Enabled' : 'Disabled', data.nightshiftLights ? 'power' : 'close', {'nightshift' : 1}, null)}} +
      +
      + {{if data.siliconUser}}

      System Overrides

      diff --git a/nano/templates/disperser.tmpl b/nano/templates/disperser.tmpl new file mode 100644 index 0000000000..08db5ed2ba --- /dev/null +++ b/nano/templates/disperser.tmpl @@ -0,0 +1,91 @@ +{{if data.faillink}} +
      + ERROR: Machine is incomplete, out of range, or misaligned! +
      +{{else}} +
      +

      Targeting

      +
      +
      +
      + {{:helper.link('', 'triangle-1-nw', { 'choose' : 9 }, data.overmapdir == 9 ? 'selected' : null, null)}} + {{:helper.link('', 'triangle-1-n', { 'choose' : 1 }, data.overmapdir == 1 ? 'selected' : null, null)}} + {{:helper.link('', 'triangle-1-ne', { 'choose' : 5 }, data.overmapdir == 5 ? 'selected' : null, null)}} +
      +
      + {{:helper.link('', 'triangle-1-w', { 'choose' : 8 }, data.overmapdir == 8 ? 'selected' : null, null)}} + {{:helper.link('', 'circle-close', { 'choose' : 0 }, data.overmapdir == 0 ? 'selected' : null, null)}} + {{:helper.link('', 'triangle-1-e', { 'choose' : 4 }, data.overmapdir == 4 ? 'selected' : null, null)}} +
      +
      + {{:helper.link('', 'triangle-1-sw', { 'choose' : 10 }, data.overmapdir == 10 ? 'selected' : null, null)}} + {{:helper.link('', 'triangle-1-s', { 'choose' : 2 }, data.overmapdir == 2 ? 'selected' : null, null)}} + {{:helper.link('', 'triangle-1-se', { 'choose' : 6 }, data.overmapdir == 6 ? 'selected' : null, null)}} +
      +
      +
      +
      +
      +

      Charge

      +
      + {{if data.nopower}} + At least one part of the machine is unpowered. + {{/if}} +
      + Charge Load Type +
      +
      + {{:data.chargeload}} +
      +
      + Cooldown +
      +
      + {{if data.next_shot == 0}} + Ready + {{else}} + {{:data.next_shot}} seconds +
      Warning: Do not fire during cooldown. + {{/if}} +
      +
      +
      +
      +
      +

      Calibration

      +
      +
      + {{:data.cal_accuracy}}% +
      +
      + {{:helper.link('Pre-Calibration', 'transfer-e-w', { 'skill_calibration' : 1 }, data.skill ? null : 'disabled', null)}} +

      + {{for data.calibration}} +
      + {{:helper.link(value, 'shuffle', { 'calibration' : index }, null, null)}} +
      +
      + {{/for}} +
      +
      +
      +

      Setup

      +
      +
      + Strength +
      +
      + {{:helper.link(data.strength, 'lightbulb', { 'strength' : 1 }, null, null)}} +
      +
      + Radius +
      +
      + {{:helper.link(data.range, 'arrow-4-diag', { 'range' : 1 }, null, null)}} +
      +
      +
      +
      +{{:helper.link("Fire", 'alert', { 'fire' : 1 }, null, null)}} +
      +{{/if}} \ No newline at end of file diff --git a/nano/templates/gravity_generator.tmpl b/nano/templates/gravity_generator.tmpl new file mode 100644 index 0000000000..ad8e686c49 --- /dev/null +++ b/nano/templates/gravity_generator.tmpl @@ -0,0 +1,45 @@ +
      +
      +
      + Breaker Setting: +
      +
      + {{if data.breaker}} + Generator Enabled + {{else}} + Generator Disabled + {{/if}} +
      +
      +
      +
      + Charge Mode: +
      +
      + {{if (data.breaker && data.charge_count < 100)}} + Generator CHARGING + {{else (data.breaker && data.charge_count >= 100)}} + Generator Running + {{else (!data.breaker && data.charge_count > 0)}} + Generator DISCHARGING + {{else}} + Generator Offline + {{/if}} +
      +
      +
      +
      + Charge Status: +
      +
      + {{:data.charge_count}}% +
      +
      +
      +
      +
      +
      + {{:helper.link('Toggle Breaker', 'alert', {'gentoggle' : 1}, null)}} +
      +
      +
      \ No newline at end of file diff --git a/nano/templates/mod_uav.tmpl b/nano/templates/mod_uav.tmpl new file mode 100644 index 0000000000..94498ec109 --- /dev/null +++ b/nano/templates/mod_uav.tmpl @@ -0,0 +1,53 @@ +
      +
      +
      UAV:
      +
      + {{if data.current_uav}} + {{:data.current_uav.status}} + {{else}} + [Not Connected] + {{/if}} +
      +
      + +
      +
      Signal:
      +
      + {{if data.current_uav}} + {{:data.signal_strength}} + {{else}} + [Not Connected] + {{/if}} +
      +
      + +
      +
      Power:
      +
      + {{if data.current_uav}} + {{:helper.link(data.current_uav.power ? 'Online' : 'Offline', data.current_uav.power ? 'check' : 'close', {'power_uav' : 1}, null, data.current_uav.power ? 'linkOn' : 'redButton')}} + {{else}} + [Not Connected] + {{/if}} +
      +
      + +
      +
      Camera:
      +
      + {{if data.current_uav}} + {{:helper.link(data.current_uav.power ? 'Available' : 'Unavailable', data.current_uav.power ? 'check' : 'close', {'view_uav' : 1}, null, data.in_use ? 'linkOn' : null)}} + {{else}} + [Not Connected] + {{/if}} +
      +
      +
      +
      +
      Paired UAVs:
      +
      +{{for data.paired_uavs}} +
      + {{:helper.link(value.name, '', {'switch_uav' : value.uavref})}}{{:helper.link('', 'close', {'del_uav' : value.uavref}, null, 'redButton')}} +
      +{{/for}} diff --git a/nano/templates/psu.tmpl b/nano/templates/psu.tmpl new file mode 100644 index 0000000000..397c3cfa84 --- /dev/null +++ b/nano/templates/psu.tmpl @@ -0,0 +1,58 @@ +
      +
      + Current mode: +
      +
      + {{if data.mode == 1}} + OUTPUT ONLY + {{else data.mode == 2}} + INPUT ONLY + {{else data.mode == 3}} + INPUT AND OUTPUT + {{else}} + OFFLINE + {{/if}} +
      +
      + Input status: +
      +
      + {{:data.input_load}} / {{:data.transfer_max}} W +
      +
      + Output status: +
      +
      + {{:data.output_load}} / {{:data.transfer_max}} W +
      +
      + Control panel: +
      +
      + {{:helper.link('OFF', null, { "disable" : 1 }, (data.mode == 0) ? 'disabled' : null)}} + {{:helper.link('OUT', null, { "enable" : 1 }, (data.mode == 1) ? 'disabled' : null)}} + {{:helper.link('IN', null, { "enable" : 2 }, (data.mode == 2) ? 'disabled' : null)}} + {{:helper.link('IN/OUT', null, { "enable" : 3 }, (data.mode == 3) ? 'disabled' : null)}} + {{if data.equalise}} + {{:helper.link('EQ', null, { "equaliseoff" : 1 }, null, data.blink_tick ? 'yellowButton' : 'redButton')}} + {{else}} + {{:helper.link('EQ', null, { "equaliseon" : 1 })}} + {{/if}} +
      +
      +
      +
  • + {{for data.cells_list}} + +
    Cell {{:value.slot}} + {{if value.used}} + {{:helper.displayBar(value.percentage, 0, 100, 'good')}} + {{:value.percentage}} % + {{:helper.link('E', null, { "ejectcell" : value.id })}} + {{else}} + {{:helper.displayBar(100, 0, 100, 'bad')}} + N/C + {{:helper.link('E', null, {}, 'disabled')}} + {{/if}} + {{/for}} +
    \ No newline at end of file diff --git a/nano/templates/shutoff_monitor.tmpl b/nano/templates/shutoff_monitor.tmpl index 1b6cb6fe15..2597a1b6f5 100644 --- a/nano/templates/shutoff_monitor.tmpl +++ b/nano/templates/shutoff_monitor.tmpl @@ -1,18 +1,13 @@

    Automated Shutoff Valve Monitoring Console


    + +
    NamePositionOpenModeActions {{for data.valves}} -
    -
    - {{:value.name}} -
    -
    - - {{:helper.link(value.open ? 'Open' : 'Closed', 'alert', {'toggle_open' : value.ref})}} - {{:helper.link(value.enable ? 'Enabled' : 'Disabled', 'alert', {'toggle_enable' : value.ref})}} - - - Coordinates: ({{:value.x}}, {{:value.y}}, {{:value.z}}) - -
    -
    -{{/for}} \ No newline at end of file +
    {{:value.name}} + {{:value.x}}, {{:value.y}}, {{:value.z}} + {{:value.open ? 'Yes' : 'No'}} + {{:value.enabled ? 'Auto' : 'Manual'}} + {{:helper.link(value.open ? 'Close' : 'Open', null, {'toggle_open' : value.ref}, value.enabled ? 'disabled' : null)}} + {{:helper.link(value.enabled ? 'Manual' : 'Auto', null, {'toggle_enable' : value.ref})}} +{{/for}} +
    \ No newline at end of file diff --git a/sound/AI/airlockdone.ogg b/sound/AI/airlockdone.ogg new file mode 100644 index 0000000000..eef291a2d3 Binary files /dev/null and b/sound/AI/airlockdone.ogg differ diff --git a/sound/AI/airlockin.ogg b/sound/AI/airlockin.ogg new file mode 100644 index 0000000000..66a78128d9 Binary files /dev/null and b/sound/AI/airlockin.ogg differ diff --git a/sound/AI/airlockout.ogg b/sound/AI/airlockout.ogg new file mode 100644 index 0000000000..d4f03f446f Binary files /dev/null and b/sound/AI/airlockout.ogg differ diff --git a/sound/AI/aliens.ogg b/sound/AI/aliens.ogg index 9813204830..c88c53aadb 100644 Binary files a/sound/AI/aliens.ogg and b/sound/AI/aliens.ogg differ diff --git a/sound/AI/animes.ogg b/sound/AI/animes.ogg index a46a207edc..bdf6e15c1d 100644 Binary files a/sound/AI/animes.ogg and b/sound/AI/animes.ogg differ diff --git a/sound/AI/bright_lights.ogg b/sound/AI/bright_lights.ogg new file mode 100644 index 0000000000..4ce1bd4a00 Binary files /dev/null and b/sound/AI/bright_lights.ogg differ diff --git a/sound/AI/commandreport.ogg b/sound/AI/commandreport.ogg index 3692140439..bf322737ce 100644 Binary files a/sound/AI/commandreport.ogg and b/sound/AI/commandreport.ogg differ diff --git a/sound/AI/dim_lights.ogg b/sound/AI/dim_lights.ogg new file mode 100644 index 0000000000..02648f6285 Binary files /dev/null and b/sound/AI/dim_lights.ogg differ diff --git a/sound/AI/drone_pod.ogg b/sound/AI/drone_pod.ogg new file mode 100644 index 0000000000..dc8e3ad81b Binary files /dev/null and b/sound/AI/drone_pod.ogg differ diff --git a/sound/AI/granomalies.ogg b/sound/AI/granomalies.ogg index 89a776c385..0c0e32e3b3 100644 Binary files a/sound/AI/granomalies.ogg and b/sound/AI/granomalies.ogg differ diff --git a/sound/AI/ian_storm.ogg b/sound/AI/ian_storm.ogg new file mode 100644 index 0000000000..3d136773fc Binary files /dev/null and b/sound/AI/ian_storm.ogg differ diff --git a/sound/AI/intercept.ogg b/sound/AI/intercept.ogg index c0a3c6c783..173ecf9954 100644 Binary files a/sound/AI/intercept.ogg and b/sound/AI/intercept.ogg differ diff --git a/sound/AI/ionstorm.ogg b/sound/AI/ionstorm.ogg index 4bb414e5c9..6ba73ea1a2 100644 Binary files a/sound/AI/ionstorm.ogg and b/sound/AI/ionstorm.ogg differ diff --git a/sound/AI/meteors.ogg b/sound/AI/meteors.ogg index 4e7cdd11cc..8ea04f9ed6 100644 Binary files a/sound/AI/meteors.ogg and b/sound/AI/meteors.ogg differ diff --git a/sound/AI/newAI.ogg b/sound/AI/newAI.ogg index d21967d055..990c4ce877 100644 Binary files a/sound/AI/newAI.ogg and b/sound/AI/newAI.ogg differ diff --git a/sound/AI/newroundsexy.ogg b/sound/AI/newroundsexy.ogg index afe5630f04..5ea86bcdda 100644 Binary files a/sound/AI/newroundsexy.ogg and b/sound/AI/newroundsexy.ogg differ diff --git a/sound/AI/outbreak5.ogg b/sound/AI/outbreak5.ogg index fbdb8eed00..0b91fa64eb 100644 Binary files a/sound/AI/outbreak5.ogg and b/sound/AI/outbreak5.ogg differ diff --git a/sound/AI/outbreak7.ogg b/sound/AI/outbreak7.ogg index f35e65be9a..64d515166e 100644 Binary files a/sound/AI/outbreak7.ogg and b/sound/AI/outbreak7.ogg differ diff --git a/sound/AI/poweroff.ogg b/sound/AI/poweroff.ogg index f445f195c1..36da570c55 100644 Binary files a/sound/AI/poweroff.ogg and b/sound/AI/poweroff.ogg differ diff --git a/sound/AI/poweron.ogg b/sound/AI/poweron.ogg index 8cc3058ca0..3cc85b4f0e 100644 Binary files a/sound/AI/poweron.ogg and b/sound/AI/poweron.ogg differ diff --git a/sound/AI/preamble.ogg b/sound/AI/preamble.ogg new file mode 100644 index 0000000000..0426325752 Binary files /dev/null and b/sound/AI/preamble.ogg differ diff --git a/sound/AI/radiation.ogg b/sound/AI/radiation.ogg index 18e112a768..1889d5d230 100644 Binary files a/sound/AI/radiation.ogg and b/sound/AI/radiation.ogg differ diff --git a/sound/AI/shuttlecalled.ogg b/sound/AI/shuttlecalled.ogg index 79ec47f97e..4a77a8748d 100644 Binary files a/sound/AI/shuttlecalled.ogg and b/sound/AI/shuttlecalled.ogg differ diff --git a/sound/AI/shuttledock.ogg b/sound/AI/shuttledock.ogg index 82fac215d6..322dc2c3de 100644 Binary files a/sound/AI/shuttledock.ogg and b/sound/AI/shuttledock.ogg differ diff --git a/sound/AI/shuttlerecalled.ogg b/sound/AI/shuttlerecalled.ogg index 352990875c..b2008ae1fe 100644 Binary files a/sound/AI/shuttlerecalled.ogg and b/sound/AI/shuttlerecalled.ogg differ diff --git a/sound/AI/spanomalies.ogg b/sound/AI/spanomalies.ogg index e5ababeab7..56092c3565 100644 Binary files a/sound/AI/spanomalies.ogg and b/sound/AI/spanomalies.ogg differ diff --git a/sound/AI/tramarrived.ogg b/sound/AI/tramarrived.ogg new file mode 100644 index 0000000000..8e4e5dde10 Binary files /dev/null and b/sound/AI/tramarrived.ogg differ diff --git a/sound/AI/tramcalled.ogg b/sound/AI/tramcalled.ogg new file mode 100644 index 0000000000..c6db309e89 Binary files /dev/null and b/sound/AI/tramcalled.ogg differ diff --git a/sound/AI/tramdepart.ogg b/sound/AI/tramdepart.ogg new file mode 100644 index 0000000000..7c8171cdb8 Binary files /dev/null and b/sound/AI/tramdepart.ogg differ diff --git a/sound/AI/welcome.ogg b/sound/AI/welcome.ogg index 2224cabb2c..9057bf9abf 100644 Binary files a/sound/AI/welcome.ogg and b/sound/AI/welcome.ogg differ diff --git a/sound/effects/metalscrape1.ogg b/sound/effects/metalscrape1.ogg new file mode 100644 index 0000000000..77cd19d93c Binary files /dev/null and b/sound/effects/metalscrape1.ogg differ diff --git a/sound/effects/metalscrape2.ogg b/sound/effects/metalscrape2.ogg new file mode 100644 index 0000000000..39da935a92 Binary files /dev/null and b/sound/effects/metalscrape2.ogg differ diff --git a/sound/effects/metalscrape3.ogg b/sound/effects/metalscrape3.ogg new file mode 100644 index 0000000000..219b0cee30 Binary files /dev/null and b/sound/effects/metalscrape3.ogg differ diff --git a/sound/machines/2beep.ogg b/sound/machines/2beep.ogg new file mode 100644 index 0000000000..0953882ab7 Binary files /dev/null and b/sound/machines/2beep.ogg differ diff --git a/sound/machines/2beephigh.ogg b/sound/machines/2beephigh.ogg new file mode 100644 index 0000000000..9367872138 Binary files /dev/null and b/sound/machines/2beephigh.ogg differ diff --git a/sound/machines/2beeplow.ogg b/sound/machines/2beeplow.ogg new file mode 100644 index 0000000000..aedcf9ff6a Binary files /dev/null and b/sound/machines/2beeplow.ogg differ diff --git a/sound/machines/2beepmid.ogg b/sound/machines/2beepmid.ogg new file mode 100644 index 0000000000..dd79fcd92e Binary files /dev/null and b/sound/machines/2beepmid.ogg differ diff --git a/sound/machines/airlockcycle.ogg b/sound/machines/airlockcycle.ogg new file mode 100644 index 0000000000..8fc0197547 Binary files /dev/null and b/sound/machines/airlockcycle.ogg differ diff --git a/sound/machines/disperser_fire.ogg b/sound/machines/disperser_fire.ogg new file mode 100644 index 0000000000..19244ff69d Binary files /dev/null and b/sound/machines/disperser_fire.ogg differ diff --git a/sound/machines/quiet_beep.ogg b/sound/machines/quiet_beep.ogg new file mode 100644 index 0000000000..332d409591 Binary files /dev/null and b/sound/machines/quiet_beep.ogg differ diff --git a/sound/voice/myarp.ogg b/sound/voice/myarp.ogg new file mode 100644 index 0000000000..bc57408449 Binary files /dev/null and b/sound/voice/myarp.ogg differ diff --git a/tools/travis/compile_and_run.sh b/tools/travis/compile_and_run.sh index b4f9e403b0..fa3c382943 100644 --- a/tools/travis/compile_and_run.sh +++ b/tools/travis/compile_and_run.sh @@ -33,6 +33,6 @@ fi if [ $RUN -eq 1 ]; then DreamDaemon $BASENAME.dmb -invisible -trusted -core 2>&1 | tee log.txt; - grep "All Unit Tests Passed" log.txt - grep "Caught 0 Runtimes" log.txt + grep "All Unit Tests Passed" log.txt || exit 1 + grep "Caught 0 Runtimes" log.txt || exit 1 fi diff --git a/vorestation.dme b/vorestation.dme index c337184df9..018c70811e 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -232,6 +232,7 @@ #include "code\controllers\verbs.dm" #include "code\controllers\observer_listener\atom\observer.dm" #include "code\controllers\subsystems\ai.dm" +#include "code\controllers\subsystems\aifast.dm" #include "code\controllers\subsystems\air.dm" #include "code\controllers\subsystems\airflow.dm" #include "code\controllers\subsystems\alarm.dm" @@ -251,6 +252,7 @@ #include "code\controllers\subsystems\mapping_yw.dm" #include "code\controllers\subsystems\mobs.dm" #include "code\controllers\subsystems\nanoui.dm" +#include "code\controllers\subsystems\nightshift.dm" #include "code\controllers\subsystems\open_space.dm" #include "code\controllers\subsystems\orbits.dm" #include "code\controllers\subsystems\overlays.dm" @@ -419,6 +421,7 @@ #include "code\datums\supplypacks\robotics.dm" #include "code\datums\supplypacks\robotics_vr.dm" #include "code\datums\supplypacks\science.dm" +#include "code\datums\supplypacks\science_vr.dm" #include "code\datums\supplypacks\security.dm" #include "code\datums\supplypacks\security_vr.dm" #include "code\datums\supplypacks\security_yw.dm" @@ -559,6 +562,7 @@ #include "code\game\gamemodes\changeling\powers\absorb.dm" #include "code\game\gamemodes\changeling\powers\armblade.dm" #include "code\game\gamemodes\changeling\powers\armor.dm" +#include "code\game\gamemodes\changeling\powers\augmented_eyesight.dm" #include "code\game\gamemodes\changeling\powers\bioelectrogenesis.dm" #include "code\game\gamemodes\changeling\powers\blind_sting.dm" #include "code\game\gamemodes\changeling\powers\boost_range.dm" @@ -743,6 +747,7 @@ #include "code\game\jobs\job\department_vr.dm" #include "code\game\jobs\job\engineering.dm" #include "code\game\jobs\job\engineering_vr.dm" +#include "code\game\jobs\job\exploration_vr.dm" #include "code\game\jobs\job\job.dm" #include "code\game\jobs\job\job_vr.dm" #include "code\game\jobs\job\medical.dm" @@ -775,6 +780,7 @@ #include "code\game\machinery\cryopod.dm" #include "code\game\machinery\cryopod_vr.dm" #include "code\game\machinery\deployable.dm" +#include "code\game\machinery\deployable_vr.dm" #include "code\game\machinery\door_control.dm" #include "code\game\machinery\doorbell_vr.dm" #include "code\game\machinery\doppler_array.dm" @@ -792,6 +798,7 @@ #include "code\game\machinery\jukebox.dm" #include "code\game\machinery\lightswitch.dm" #include "code\game\machinery\machinery.dm" +#include "code\game\machinery\machinery_power.dm" #include "code\game\machinery\magnet.dm" #include "code\game\machinery\mass_driver.dm" #include "code\game\machinery\navbeacon.dm" @@ -831,6 +838,7 @@ #include "code\game\machinery\vending.dm" #include "code\game\machinery\vending_vr.dm" #include "code\game\machinery\vending_yw.dm" +#include "code\game\machinery\vitals_monitor.dm" #include "code\game\machinery\wall_frames.dm" #include "code\game\machinery\washing_machine.dm" #include "code\game\machinery\wishgranter.dm" @@ -1003,6 +1011,7 @@ #include "code\game\mecha\working\ripley.dm" #include "code\game\mecha\working\working.dm" #include "code\game\objects\banners.dm" +#include "code\game\objects\banners_vr.dm" #include "code\game\objects\buckling.dm" #include "code\game\objects\empulse.dm" #include "code\game\objects\explosion.dm" @@ -1034,6 +1043,7 @@ #include "code\game\objects\effects\chem\chemsmoke.dm" #include "code\game\objects\effects\chem\coating.dm" #include "code\game\objects\effects\chem\foam.dm" +#include "code\game\objects\effects\chem\foam_vr.dm" #include "code\game\objects\effects\chem\water.dm" #include "code\game\objects\effects\decals\cleanable.dm" #include "code\game\objects\effects\decals\contraband.dm" @@ -1049,6 +1059,8 @@ #include "code\game\objects\effects\decals\Cleanable\tracks.dm" #include "code\game\objects\effects\decals\posters\bs12.dm" #include "code\game\objects\effects\decals\posters\polarisposters.dm" +#include "code\game\objects\effects\decals\posters\polarisposters_vr.dm" +#include "code\game\objects\effects\decals\posters\tgposters.dm" #include "code\game\objects\effects\decals\posters\voreposters_vr.dm" #include "code\game\objects\effects\map_effects\beam_point.dm" #include "code\game\objects\effects\map_effects\effect_emitter.dm" @@ -1087,10 +1099,12 @@ #include "code\game\objects\items\shooting_range.dm" #include "code\game\objects\items\tailoring.dm" #include "code\game\objects\items\toys.dm" +#include "code\game\objects\items\toys_vr.dm" #include "code\game\objects\items\toys_yw.dm" #include "code\game\objects\items\trash.dm" #include "code\game\objects\items\trash_material.dm" #include "code\game\objects\items\trash_vr.dm" +#include "code\game\objects\items\uav.dm" #include "code\game\objects\items\devices\advnifrepair.dm" #include "code\game\objects\items\devices\ai_detector.dm" #include "code\game\objects\items\devices\aicard.dm" @@ -1142,6 +1156,7 @@ #include "code\game\objects\items\devices\communicator\phone.dm" #include "code\game\objects\items\devices\communicator\UI.dm" #include "code\game\objects\items\devices\PDA\cart.dm" +#include "code\game\objects\items\devices\PDA\cart_vr.dm" #include "code\game\objects\items\devices\PDA\chatroom.dm" #include "code\game\objects\items\devices\PDA\PDA.dm" #include "code\game\objects\items\devices\PDA\PDA_vr.dm" @@ -1195,6 +1210,7 @@ #include "code\game\objects\items\weapons\handcuffs.dm" #include "code\game\objects\items\weapons\handcuffs_vr.dm" #include "code\game\objects\items\weapons\improvised_components.dm" +#include "code\game\objects\items\weapons\inducer_vr.dm" #include "code\game\objects\items\weapons\manuals.dm" #include "code\game\objects\items\weapons\manuals_vr.dm" #include "code\game\objects\items\weapons\mop.dm" @@ -1203,7 +1219,8 @@ #include "code\game\objects\items\weapons\paiwire.dm" #include "code\game\objects\items\weapons\policetape.dm" #include "code\game\objects\items\weapons\RCD.dm" -#include "code\game\objects\items\weapons\RPD.dm" +#include "code\game\objects\items\weapons\RCD_vr.dm" +#include "code\game\objects\items\weapons\RPD_vr.dm" #include "code\game\objects\items\weapons\RSF.dm" #include "code\game\objects\items\weapons\scrolls.dm" #include "code\game\objects\items\weapons\shields.dm" @@ -1293,6 +1310,7 @@ #include "code\game\objects\items\weapons\material\material_weapons.dm" #include "code\game\objects\items\weapons\material\misc.dm" #include "code\game\objects\items\weapons\material\shards.dm" +#include "code\game\objects\items\weapons\material\shards_vr.dm" #include "code\game\objects\items\weapons\material\swords.dm" #include "code\game\objects\items\weapons\material\thrown.dm" #include "code\game\objects\items\weapons\material\twohanded.dm" @@ -1348,6 +1366,7 @@ #include "code\game\objects\random\unidentified\medicine.dm" #include "code\game\objects\structures\barsign.dm" #include "code\game\objects\structures\bedsheet_bin.dm" +#include "code\game\objects\structures\bedsheet_bin_vr.dm" #include "code\game\objects\structures\bonfire.dm" #include "code\game\objects\structures\catwalk.dm" #include "code\game\objects\structures\cliff.dm" @@ -1362,8 +1381,6 @@ #include "code\game\objects\structures\fireaxe.dm" #include "code\game\objects\structures\fitness.dm" #include "code\game\objects\structures\fitness_vr.dm" -#include "code\game\objects\structures\flora.dm" -#include "code\game\objects\structures\flora_vr.dm" #include "code\game\objects\structures\girders.dm" #include "code\game\objects\structures\gravemarker.dm" #include "code\game\objects\structures\grille.dm" @@ -1403,6 +1420,7 @@ #include "code\game\objects\structures\windoor_assembly.dm" #include "code\game\objects\structures\window.dm" #include "code\game\objects\structures\window_spawner.dm" +#include "code\game\objects\structures\window_vr.dm" #include "code\game\objects\structures\crates_lockers\closets.dm" #include "code\game\objects\structures\crates_lockers\crates.dm" #include "code\game\objects\structures\crates_lockers\crates_vr.dm" @@ -1419,6 +1437,7 @@ #include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" #include "code\game\objects\structures\crates_lockers\closets\l3closet_vr.dm" #include "code\game\objects\structures\crates_lockers\closets\malfunction.dm" +#include "code\game\objects\structures\crates_lockers\closets\misc_vr.dm" #include "code\game\objects\structures\crates_lockers\closets\statue.dm" #include "code\game\objects\structures\crates_lockers\closets\syndicate.dm" #include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" @@ -1442,6 +1461,8 @@ #include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\security_vr.dm" +#include "code\game\objects\structures\flora\flora.dm" +#include "code\game\objects\structures\flora\flora_vr.dm" #include "code\game\objects\structures\flora\grass.dm" #include "code\game\objects\structures\flora\trees.dm" #include "code\game\objects\structures\ghost_pods\ghost_pods.dm" @@ -1537,6 +1558,7 @@ #include "code\modules\admin\admin_ranks.dm" #include "code\modules\admin\admin_secrets.dm" #include "code\modules\admin\admin_tools.dm" +#include "code\modules\admin\admin_verb_lists.dm" #include "code\modules\admin\admin_verbs.dm" #include "code\modules\admin\banjob.dm" #include "code\modules\admin\ckey_vr.dm" @@ -1590,7 +1612,7 @@ #include "code\modules\admin\secrets\fun_secrets\triple_ai_mode.dm" #include "code\modules\admin\secrets\fun_secrets\turn_humans_into_corgies.dm" #include "code\modules\admin\secrets\fun_secrets\turn_humans_into_monkeys.dm" -#include "code\modules\admin\secrets\random_events\gravity.dm" +#include "code\modules\admin\secrets\random_events\gravity_vr.dm" #include "code\modules\admin\secrets\random_events\trigger_cordical_borer_infestation.dm" #include "code\modules\admin\secrets\random_events\trigger_xenomorph_infestation.dm" #include "code\modules\admin\verbs\adminhelp.dm" @@ -1651,12 +1673,12 @@ #include "code\modules\ai\ai_holder_movement.dm" #include "code\modules\ai\ai_holder_pathfinding.dm" #include "code\modules\ai\ai_holder_targeting.dm" +#include "code\modules\ai\ai_holder_targeting_vr.dm" #include "code\modules\ai\interfaces.dm" #include "code\modules\ai\say_list.dm" #include "code\modules\ai\aI_holder_subtypes\simple_mob_ai.dm" #include "code\modules\ai\aI_holder_subtypes\simple_mob_ai_vr.dm" #include "code\modules\ai\aI_holder_subtypes\slime_xenobio_ai.dm" -#include "code\modules\ai\aI_holder_subtypes\slime_xenobio_ai_vr.dm" #include "code\modules\alarm\alarm.dm" #include "code\modules\alarm\alarm_handler.dm" #include "code\modules\alarm\atmosphere_alarm.dm" @@ -1961,6 +1983,7 @@ #include "code\modules\clothing\under\accessories\storage.dm" #include "code\modules\clothing\under\accessories\torch.dm" #include "code\modules\clothing\under\accessories\torch_vr.dm" +#include "code\modules\clothing\under\accessories\temperature\poncho.dm" #include "code\modules\clothing\under\jobs\civilian.dm" #include "code\modules\clothing\under\jobs\engineering.dm" #include "code\modules\clothing\under\jobs\medsci.dm" @@ -2022,7 +2045,7 @@ #include "code\modules\events\event_container_vr.dm" #include "code\modules\events\event_dynamic.dm" #include "code\modules\events\event_manager.dm" -#include "code\modules\events\gravity.dm" +#include "code\modules\events\gravity_vr.dm" #include "code\modules\events\grid_check.dm" #include "code\modules\events\grubinfestation_vr.dm" #include "code\modules\events\ian_storm_vr.dm" @@ -2146,7 +2169,7 @@ #include "code\modules\gamemaster\event2\events\engineering\window_break.dm" #include "code\modules\gamemaster\event2\events\everyone\comms_blackout.dm" #include "code\modules\gamemaster\event2\events\everyone\electrical_fault.dm" -#include "code\modules\gamemaster\event2\events\everyone\gravity.dm" +#include "code\modules\gamemaster\event2\events\everyone\gravity_vr.dm" #include "code\modules\gamemaster\event2\events\everyone\infestation.dm" #include "code\modules\gamemaster\event2\events\everyone\pda_spam.dm" #include "code\modules\gamemaster\event2\events\everyone\radiation_storm.dm" @@ -2298,6 +2321,7 @@ #include "code\modules\materials\material_recipes.dm" #include "code\modules\materials\material_recipes_vr.dm" #include "code\modules\materials\material_sheets.dm" +#include "code\modules\materials\material_sheets_vr.dm" #include "code\modules\materials\material_synth.dm" #include "code\modules\materials\materials.dm" #include "code\modules\materials\materials_vr.dm" @@ -2314,6 +2338,7 @@ #include "code\modules\mining\abandonedcrates.dm" #include "code\modules\mining\abandonedcrates_vr.dm" #include "code\modules\mining\alloys.dm" +#include "code\modules\mining\alloys_vr.dm" #include "code\modules\mining\coins.dm" #include "code\modules\mining\fulton.dm" #include "code\modules\mining\machine_input_output_plates.dm" @@ -2331,10 +2356,11 @@ #include "code\modules\mining\ore.dm" #include "code\modules\mining\ore_box.dm" #include "code\modules\mining\ore_datum.dm" +#include "code\modules\mining\ore_datum_vr.dm" +#include "code\modules\mining\ore_vr.dm" #include "code\modules\mining\resonator_vr.dm" -#include "code\modules\mining\shelter_atoms.dm" #include "code\modules\mining\shelter_atoms_vr.dm" -#include "code\modules\mining\shelters.dm" +#include "code\modules\mining\shelters_vr.dm" #include "code\modules\mining\drilling\drill.dm" #include "code\modules\mining\drilling\scanner.dm" #include "code\modules\mining\ore_redemption_machine\construction.dm" @@ -2369,6 +2395,7 @@ #include "code\modules\mob\typing_indicator.dm" #include "code\modules\mob\update_icons.dm" #include "code\modules\mob\_modifiers\aura.dm" +#include "code\modules\mob\_modifiers\changeling.dm" #include "code\modules\mob\_modifiers\cloning.dm" #include "code\modules\mob\_modifiers\feysight.dm" #include "code\modules\mob\_modifiers\fire.dm" @@ -2453,7 +2480,6 @@ #include "code\modules\mob\living\carbon\alien\emote.dm" #include "code\modules\mob\living\carbon\alien\life.dm" #include "code\modules\mob\living\carbon\alien\progression.dm" -#include "code\modules\mob\living\carbon\alien\say.dm" #include "code\modules\mob\living\carbon\alien\update_icons.dm" #include "code\modules\mob\living\carbon\alien\diona\diona.dm" #include "code\modules\mob\living\carbon\alien\diona\diona_attacks.dm" @@ -2561,17 +2587,8 @@ #include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_powers.dm" #include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_species.dm" #include "code\modules\mob\living\carbon\human\species\xenomorphs\xenomorphs.dm" -#include "code\modules\mob\living\carbon\metroid\death.dm" -#include "code\modules\mob\living\carbon\metroid\emote.dm" -#include "code\modules\mob\living\carbon\metroid\examine.dm" -#include "code\modules\mob\living\carbon\metroid\life.dm" -#include "code\modules\mob\living\carbon\metroid\login.dm" -#include "code\modules\mob\living\carbon\metroid\metroid.dm" -#include "code\modules\mob\living\carbon\metroid\powers.dm" -#include "code\modules\mob\living\carbon\metroid\say.dm" -#include "code\modules\mob\living\carbon\metroid\subtypes.dm" -#include "code\modules\mob\living\carbon\metroid\update_icons.dm" #include "code\modules\mob\living\silicon\death.dm" +#include "code\modules\mob\living\silicon\emote.dm" #include "code\modules\mob\living\silicon\laws.dm" #include "code\modules\mob\living\silicon\login.dm" #include "code\modules\mob\living\silicon\say.dm" @@ -2654,11 +2671,13 @@ #include "code\modules\mob\living\simple_mob\combat.dm" #include "code\modules\mob\living\simple_mob\defense.dm" #include "code\modules\mob\living\simple_mob\hands.dm" +#include "code\modules\mob\living\simple_mob\harvesting.dm" #include "code\modules\mob\living\simple_mob\life.dm" #include "code\modules\mob\living\simple_mob\on_click.dm" #include "code\modules\mob\living\simple_mob\simple_hud.dm" #include "code\modules\mob\living\simple_mob\simple_mob.dm" #include "code\modules\mob\living\simple_mob\simple_mob_vr.dm" +#include "code\modules\mob\living\simple_mob\taming.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\animal.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\vox.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer.dm" @@ -2742,7 +2761,6 @@ #include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs.dm" #include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\illusion\illusion.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\combat_drone.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\corrupt_maint_drone_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\disbot_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\golem.dm" @@ -2751,6 +2769,8 @@ #include "code\modules\mob\living\simple_mob\subtypes\mechanical\mechanical_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\viscerator.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\wahlem_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\drones\combat_drone.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\drones\mining_drone.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\hivebot.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\hivebot_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\ranged_damage.dm" @@ -2874,6 +2894,7 @@ #include "code\modules\modular_computers\file_system\programs\engineering\atmos_control.dm" #include "code\modules\modular_computers\file_system\programs\engineering\power_monitor.dm" #include "code\modules\modular_computers\file_system\programs\engineering\rcon_console.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\shutoff_monitor.dm" #include "code\modules\modular_computers\file_system\programs\engineering\supermatter_monitor.dm" #include "code\modules\modular_computers\file_system\programs\generic\camera.dm" #include "code\modules\modular_computers\file_system\programs\generic\configurator.dm" @@ -2884,6 +2905,7 @@ #include "code\modules\modular_computers\file_system\programs\generic\ntdownloader.dm" #include "code\modules\modular_computers\file_system\programs\generic\ntnrc_client.dm" #include "code\modules\modular_computers\file_system\programs\generic\nttransfer.dm" +#include "code\modules\modular_computers\file_system\programs\generic\uav.dm" #include "code\modules\modular_computers\file_system\programs\generic\wordprocessor.dm" #include "code\modules\modular_computers\file_system\programs\medical\suit_sensors.dm" #include "code\modules\modular_computers\file_system\programs\research\email_administration.dm" @@ -2995,12 +3017,18 @@ #include "code\modules\organs\subtypes\vox_vr.dm" #include "code\modules\organs\subtypes\xenos.dm" #include "code\modules\overmap\bluespace_rift_vr.dm" +#include "code\modules\overmap\champagne.dm" #include "code\modules\overmap\helpers.dm" #include "code\modules\overmap\overmap_object.dm" #include "code\modules\overmap\overmap_shuttle.dm" #include "code\modules\overmap\sectors.dm" #include "code\modules\overmap\spacetravel.dm" #include "code\modules\overmap\turfs.dm" +#include "code\modules\overmap\disperser\disperser.dm" +#include "code\modules\overmap\disperser\disperser_charge.dm" +#include "code\modules\overmap\disperser\disperser_circuit.dm" +#include "code\modules\overmap\disperser\disperser_console.dm" +#include "code\modules\overmap\disperser\disperser_fire.dm" #include "code\modules\overmap\events\event_handler.dm" #include "code\modules\overmap\events\generation.dm" #include "code\modules\overmap\events\overmap_event.dm" @@ -3014,6 +3042,7 @@ #include "code\modules\overmap\ships\computers\shuttle.dm" #include "code\modules\overmap\ships\engines\engine.dm" #include "code\modules\overmap\ships\engines\gas_thruster.dm" +#include "code\modules\overmap\ships\engines\gas_thruster_vr.dm" #include "code\modules\overmap\ships\engines\ion_thruster.dm" #include "code\modules\paperwork\adminpaper.dm" #include "code\modules\paperwork\carbonpaper.dm" @@ -3056,11 +3085,11 @@ #include "code\modules\power\cable_ender.dm" #include "code\modules\power\cable_heavyduty.dm" #include "code\modules\power\cell.dm" -#include "code\modules\power\fractal_reactor.dm" +#include "code\modules\power\debug_items.dm" #include "code\modules\power\generator.dm" #include "code\modules\power\generator_type2.dm" #include "code\modules\power\generator_yw.dm" -#include "code\modules\power\gravitygenerator.dm" +#include "code\modules\power\gravitygenerator_vr.dm" #include "code\modules\power\grid_checker.dm" #include "code\modules\power\lighting.dm" #include "code\modules\power\lighting_vr.dm" @@ -3080,6 +3109,7 @@ #include "code\modules\power\antimatter\control.dm" #include "code\modules\power\antimatter\shielding.dm" #include "code\modules\power\cells\device_cells.dm" +#include "code\modules\power\cells\device_cells_vr.dm" #include "code\modules\power\cells\power_cells.dm" #include "code\modules\power\fusion\_setup.dm" #include "code\modules\power\fusion\fusion_circuits.dm" @@ -3121,6 +3151,7 @@ #include "code\modules\power\tesla\telsa_construction.dm" #include "code\modules\power\tesla\tesla_act.dm" #include "code\modules\projectiles\ammunition.dm" +#include "code\modules\projectiles\broken.dm" #include "code\modules\projectiles\dnalocking.dm" #include "code\modules\projectiles\gun.dm" #include "code\modules\projectiles\projectile.dm" @@ -3131,6 +3162,10 @@ #include "code\modules\projectiles\ammunition\magnetic.dm" #include "code\modules\projectiles\ammunition\rounds.dm" #include "code\modules\projectiles\ammunition\smartmag.dm" +#include "code\modules\projectiles\brokenguns\energy.dm" +#include "code\modules\projectiles\brokenguns\launcher.dm" +#include "code\modules\projectiles\brokenguns\magnetic.dm" +#include "code\modules\projectiles\brokenguns\projectile.dm" #include "code\modules\projectiles\guns\energy.dm" #include "code\modules\projectiles\guns\launcher.dm" #include "code\modules\projectiles\guns\modular_guns.dm" @@ -3162,6 +3197,8 @@ #include "code\modules\projectiles\guns\energy\cell_loaded_vr\cell_loaded.dm" #include "code\modules\projectiles\guns\energy\cell_loaded_vr\ml3m.dm" #include "code\modules\projectiles\guns\energy\cell_loaded_vr\ml3m_cells.dm" +#include "code\modules\projectiles\guns\energy\cell_loaded_vr\multi_cannon.dm" +#include "code\modules\projectiles\guns\energy\cell_loaded_vr\multi_cannon_cells.dm" #include "code\modules\projectiles\guns\energy\cell_loaded_vr\nsfw.dm" #include "code\modules\projectiles\guns\energy\cell_loaded_vr\nsfw_cells.dm" #include "code\modules\projectiles\guns\launcher\crossbow.dm" @@ -3519,7 +3556,7 @@ #include "code\modules\vore\appearance\update_icons_vr.dm" #include "code\modules\vore\eating\belly_dat_vr.dm" #include "code\modules\vore\eating\belly_obj_vr.dm" -#include "code\modules\vore\eating\bellymodes_tf_vr.dm" +#include "code\modules\vore\eating\bellymodes_datum_vr.dm" #include "code\modules\vore\eating\bellymodes_vr.dm" #include "code\modules\vore\eating\contaminate_vr.dm" #include "code\modules\vore\eating\digest_act_vr.dm" @@ -3562,6 +3599,8 @@ #include "code\modules\xenoarcheaology\artifacts\crystal.dm" #include "code\modules\xenoarcheaology\artifacts\gigadrill.dm" #include "code\modules\xenoarcheaology\artifacts\replicator.dm" +#include "code\modules\xenoarcheaology\artifacts\predefined\_predefined.dm" +#include "code\modules\xenoarcheaology\artifacts\predefined\hungry_statue.dm" #include "code\modules\xenoarcheaology\effects\animate_anomaly.dm" #include "code\modules\xenoarcheaology\effects\badfeeling.dm" #include "code\modules\xenoarcheaology\effects\berserk.dm" @@ -3653,10 +3692,6 @@ #include "interface\interface.dm" #include "interface\skin.dmf" #include "maps\RandomZLevels\blackmarketpackers.dm" -#include "maps\southern_cross\items\encryptionkey_sc.dm" -#include "maps\southern_cross\items\encryptionkey_vr.dm" -#include "maps\southern_cross\items\headset_sc.dm" -#include "maps\southern_cross\items\headset_vr.dm" #include "maps\southern_cross\items\clothing\sc_accessory.dm" #include "maps\southern_cross\items\clothing\sc_suit.dm" #include "maps\southern_cross\items\clothing\sc_under.dm"