diff --git a/.travis.yml b/.travis.yml index 3095262290..35fec579bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ sudo: false env: global: - BYOND_MAJOR="511" - - BYOND_MINOR="1380" + - BYOND_MINOR="1385" - NODE_VERSION="4" - BUILD_TOOLS=false - BUILD_TESTING=false diff --git a/LICENSE-AGPLv3.txt b/LICENSE similarity index 100% rename from LICENSE-AGPLv3.txt rename to LICENSE diff --git a/_maps/RandomRuins/SpaceRuins/DJstation.dmm b/_maps/RandomRuins/SpaceRuins/DJstation.dmm index 8841e350dd..6a859fccdc 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation.dmm @@ -55,8 +55,7 @@ /area/ruin/space/djstation) "an" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/smes/magical{ desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; @@ -66,16 +65,13 @@ /area/ruin/space/djstation) "ao" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, /area/ruin/space/djstation) "ap" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/machinery/power/apc{ dir = 0; @@ -86,8 +82,6 @@ /area/ruin/space/djstation) "aq" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/item/storage/box/lights/mixed, @@ -101,8 +95,6 @@ /area/ruin/space/djstation) "ar" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plating, diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm index cc960def1c..e65b6552eb 100644 --- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm @@ -13,16 +13,13 @@ "ad" = ( /obj/machinery/power/tracker, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel/airless, /area/solar/derelict_starboard) "ae" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/template_noop, @@ -35,8 +32,7 @@ /area/solar/derelict_starboard) "ag" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel/airless{ icon_state = "damaged5" @@ -48,8 +44,7 @@ name = "Derelict Solar Array" }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel/airless, /area/solar/derelict_starboard) @@ -60,13 +55,9 @@ "aj" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/template_noop, @@ -74,8 +65,6 @@ "ak" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/template_noop, @@ -83,18 +72,12 @@ "al" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/template_noop, @@ -102,13 +85,9 @@ "am" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/template_noop, @@ -116,18 +95,12 @@ "an" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/template_noop, @@ -135,13 +108,9 @@ "ao" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/template_noop, @@ -162,8 +131,7 @@ "ar" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/template_noop, /area/solar/derelict_starboard) @@ -179,8 +147,6 @@ name = "External Engineering" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating, @@ -188,8 +154,6 @@ "av" = ( /obj/effect/spawner/structure/window/hollow/reinforced/middle, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, @@ -197,8 +161,6 @@ "aw" = ( /obj/effect/spawner/structure/window/hollow/reinforced/middle, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating, @@ -220,8 +182,6 @@ /area/ruin/space/derelict/solar_control) "aB" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel, @@ -229,15 +189,13 @@ "aC" = ( /obj/machinery/power/smes, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/solar_control) "aD" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/solar_control{ id = "derelictsolar"; @@ -263,16 +221,12 @@ dir = 8 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/solar_control) "aH" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel, @@ -282,15 +236,12 @@ dir = 1 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/solar_control) "aJ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/light/small{ @@ -318,8 +269,6 @@ /area/ruin/space/derelict/solar_control) "aN" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -357,15 +306,12 @@ }, /obj/structure/cable, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/solar_control) "aU" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel, @@ -390,20 +336,15 @@ "aZ" = ( /obj/machinery/computer/monitor, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/solar_control) "ba" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/light/small, @@ -411,8 +352,6 @@ /area/ruin/space/derelict/solar_control) "bb" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, @@ -448,8 +387,6 @@ req_access_txt = "10" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -473,8 +410,6 @@ "bm" = ( /obj/machinery/door/window, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -678,15 +613,12 @@ pixel_x = -24 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/bridge/ai_upload) "bX" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating/airless, @@ -712,8 +644,6 @@ /area/template_noop) "cc" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless, @@ -724,24 +654,18 @@ /area/ruin/space/derelict/bridge/ai_upload) "ce" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/closed/wall/r_wall, /area/ruin/space/derelict/bridge/ai_upload) "cf" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/closed/wall/r_wall, /area/ruin/space/derelict/bridge/ai_upload) "cg" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/closed/wall/r_wall, @@ -754,16 +678,12 @@ /area/template_noop) "cj" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/closed/wall/r_wall, /area/ruin/space/derelict/bridge/ai_upload) "ck" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel, @@ -802,8 +722,6 @@ /area/ruin/space/derelict/gravity_generator) "cr" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/closed/wall, @@ -814,8 +732,6 @@ "ct" = ( /obj/machinery/door/airlock/maintenance, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -880,8 +796,6 @@ /area/ruin/space/derelict/bridge/access) "cF" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -904,45 +818,33 @@ /area/template_noop) "cJ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/closed/wall, /area/ruin/space/derelict/bridge/access) "cK" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/bridge/access) "cL" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/bridge/access) "cM" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/bridge/access) "cN" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel, @@ -1001,8 +903,6 @@ req_access_txt = "18" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -1017,8 +917,6 @@ "cX" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -1063,36 +961,28 @@ /area/ruin/unpowered/no_grav) "df" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/item/wallframe/apc, /turf/open/floor/plating/airless, /area/ruin/space/derelict/gravity_generator) "dg" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/gravity_generator) "dh" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/gravity_generator) "di" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/structure/frame/machine, @@ -1114,21 +1004,15 @@ /area/ruin/space/derelict/bridge/access) "dm" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating, /area/ruin/space/derelict/bridge/access) "dn" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel, @@ -1136,8 +1020,6 @@ "do" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, @@ -1145,8 +1027,6 @@ "dp" = ( /obj/machinery/door/airlock/glass, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, @@ -1154,8 +1034,6 @@ "dq" = ( /obj/item/reagent_containers/food/drinks/beer, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel, @@ -1173,8 +1051,6 @@ /area/ruin/space/derelict/gravity_generator) "dt" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless, @@ -1209,8 +1085,6 @@ "dy" = ( /obj/structure/window/reinforced, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -1232,8 +1106,6 @@ req_access_txt = "10" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless, @@ -1261,8 +1133,7 @@ "dH" = ( /obj/structure/frame/computer, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/bridge) @@ -1334,8 +1205,6 @@ /area/ruin/space/derelict/singularity_engine) "dS" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, @@ -1346,16 +1215,12 @@ req_access_txt = "10" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/gravity_generator) "dU" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel, @@ -1376,8 +1241,6 @@ /area/ruin/space/derelict/singularity_engine) "dY" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -1472,8 +1335,6 @@ /area/ruin/space/derelict/singularity_engine) "ep" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/window/reinforced, @@ -1532,8 +1393,6 @@ /area/ruin/space/derelict/singularity_engine) "eA" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -1576,21 +1435,15 @@ /area/ruin/space/derelict/singularity_engine) "eH" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/bridge/access) "eI" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, @@ -1600,32 +1453,24 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/bridge/access) "eK" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/bridge) "eL" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/bridge) "eM" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel, @@ -1653,8 +1498,6 @@ /area/ruin/space/derelict/bridge) "eR" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -1935,8 +1778,6 @@ "fK" = ( /obj/machinery/door/window, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -1993,8 +1834,6 @@ /area/ruin/space/derelict/bridge/access) "fT" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless, @@ -2049,8 +1888,6 @@ /area/ruin/space/derelict/hallway/primary) "gb" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -2059,37 +1896,27 @@ /area/ruin/space/derelict/hallway/primary) "gc" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/primary) "gd" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/bridge/access) "ge" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/bridge/access) "gf" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/airless, @@ -2119,8 +1946,6 @@ /area/ruin/space/derelict/hallway/primary) "gl" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless, @@ -2184,16 +2009,12 @@ /area/ruin/space/derelict/singularity_engine) "gx" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/hallway/primary) "gy" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, @@ -2334,8 +2155,6 @@ /area/ruin/space/derelict/singularity_engine) "ha" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plating/airless, @@ -2545,8 +2364,6 @@ /area/ruin/space/derelict/singularity_engine) "hO" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless, @@ -2795,8 +2612,6 @@ /area/ruin/unpowered/no_grav) "iF" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless{ @@ -2951,8 +2766,6 @@ /area/ruin/unpowered/no_grav) "jc" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless, @@ -2967,16 +2780,12 @@ /area/ruin/space/derelict/medical/chapel) "jf" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/airless/white, /area/ruin/space/derelict/medical) "jg" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/window/reinforced{ @@ -2986,8 +2795,6 @@ /area/ruin/space/derelict/medical) "jh" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless/white, @@ -3048,8 +2855,6 @@ /area/ruin/unpowered/no_grav) "jq" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless, @@ -3098,8 +2903,7 @@ pixel_x = 24 }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/medical/chapel) @@ -3181,8 +2985,6 @@ "jM" = ( /obj/machinery/door/window, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless, @@ -3190,8 +2992,6 @@ "jN" = ( /obj/machinery/door/window/southleft, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless/white, @@ -3202,21 +3002,15 @@ /area/ruin/space/derelict/medical) "jP" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/primary) "jQ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/research{ @@ -3235,8 +3029,6 @@ /area/ruin/unpowered/no_grav) "jS" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, @@ -3270,8 +3062,6 @@ /area/ruin/space/derelict/hallway/primary) "jX" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless{ @@ -3295,16 +3085,12 @@ /area/ruin/space/derelict/hallway/primary) "kb" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/airless, /area/ruin/unpowered/no_grav) "kc" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless, @@ -3324,16 +3110,12 @@ "kf" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless, /area/ruin/unpowered/no_grav) "kg" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/window/fulltile, @@ -3341,8 +3123,6 @@ /area/ruin/unpowered/no_grav) "kh" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/research{ @@ -3353,24 +3133,18 @@ /area/ruin/space/derelict/arrival) "ki" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/ruin/space/derelict/arrival) "kj" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/ruin/space/derelict/arrival) "kk" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel, @@ -3427,16 +3201,12 @@ /area/ruin/space/derelict/arrival) "kt" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/hallway/primary) "ku" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -3445,8 +3215,6 @@ /area/ruin/space/derelict/hallway/primary) "kv" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless, @@ -3458,50 +3226,36 @@ icon_state = "right" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/primary) "kx" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/primary) "ky" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/primary) "kz" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/primary) "kA" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/airless, @@ -3520,8 +3274,6 @@ /area/ruin/space/derelict/hallway/primary) "kE" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/airless, @@ -3533,31 +3285,24 @@ icon_state = "right" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/primary) "kG" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/primary) "kH" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/airless, @@ -3609,8 +3354,6 @@ req_access_txt = "1" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless, @@ -3807,8 +3550,6 @@ /area/ruin/unpowered/no_grav) "lB" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/window/reinforced, @@ -3892,8 +3633,6 @@ /area/ruin/space/derelict/atmospherics) "lQ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless, @@ -4106,8 +3845,6 @@ "mC" = ( /obj/item/wirecutters, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/airless, @@ -4141,8 +3878,6 @@ /area/ruin/unpowered/no_grav) "mI" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless, @@ -4215,8 +3950,7 @@ /area/ruin/space/derelict/hallway/secondary) "mX" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable, /obj/machinery/power/apc{ @@ -4252,23 +3986,18 @@ pixel_y = 24 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/atmospherics) "nd" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/secondary) "ne" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -4280,8 +4009,6 @@ dir = 1 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -4290,8 +4017,6 @@ /area/ruin/space/derelict/hallway/secondary) "ng" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -4300,8 +4025,6 @@ /area/ruin/space/derelict/hallway/secondary) "nh" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -4310,8 +4033,6 @@ /area/ruin/space/derelict/hallway/secondary) "ni" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -4320,8 +4041,6 @@ /area/ruin/space/derelict/hallway/secondary) "nj" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -4330,8 +4049,6 @@ /area/ruin/space/derelict/hallway/secondary) "nk" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -4343,8 +4060,6 @@ dir = 1 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -4353,21 +4068,15 @@ /area/ruin/space/derelict/hallway/secondary) "nm" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/secondary) "nn" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/airless, @@ -4437,8 +4146,6 @@ /area/ruin/space/derelict/se_solar) "nC" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/airlock/engineering{ @@ -4460,8 +4167,6 @@ /area/ruin/space/derelict/hallway/secondary) "nF" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/firedoor, @@ -4483,29 +4188,21 @@ /area/ruin/unpowered/no_grav) "nJ" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/closed/wall/r_wall, /area/ruin/space/derelict/se_solar) "nK" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/closed/wall/r_wall, /area/ruin/space/derelict/se_solar) "nL" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/door/airlock/engineering{ @@ -4529,8 +4226,6 @@ /area/ruin/space/derelict/se_solar) "nP" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless, @@ -4564,8 +4259,7 @@ dir = 1 }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/item/drone_shell/dusty, /turf/open/floor/plasteel/airless, @@ -4583,8 +4277,7 @@ /area/ruin/space/derelict/se_solar) "nY" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable, /obj/machinery/power/solar_control{ @@ -4643,8 +4336,6 @@ icon_state = "right" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless, @@ -4674,8 +4365,6 @@ /area/ruin/space/derelict/se_solar) "ok" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/airlock/external, @@ -4688,16 +4377,14 @@ /area/solar/derelict_aft) "om" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/structure/lattice/catwalk, /turf/template_noop, /area/solar/derelict_aft) "on" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/solar{ id = "derelictsolar"; @@ -4707,8 +4394,6 @@ /area/solar/derelict_aft) "oo" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/lattice/catwalk, @@ -4716,8 +4401,7 @@ /area/solar/derelict_aft) "op" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/solar{ id = "derelictsolar"; @@ -4736,13 +4420,9 @@ "or" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/template_noop, @@ -4750,18 +4430,12 @@ "os" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/template_noop, @@ -4769,26 +4443,18 @@ "ot" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/template_noop, /area/solar/derelict_aft) "ou" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/lattice/catwalk, @@ -4797,18 +4463,12 @@ "ov" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/template_noop, @@ -4816,13 +4476,9 @@ "ow" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/template_noop, @@ -4847,21 +4503,15 @@ "oA" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/template_noop, /area/solar/derelict_aft) "oB" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/lattice/catwalk, @@ -4870,13 +4520,9 @@ "oC" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/template_noop, diff --git a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm index 66c738fb77..70cfbe72ba 100644 --- a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm +++ b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm @@ -9,16 +9,13 @@ power = 1 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/abandonedzoo) "ac" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, @@ -30,12 +27,9 @@ power = 1 }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating/airless, @@ -47,13 +41,10 @@ power = 1 }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/abandonedzoo) @@ -64,7 +55,6 @@ power = 1 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating/airless, @@ -86,8 +76,6 @@ "ak" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -192,8 +180,6 @@ /area/ruin/space/has_grav/abandonedzoo) "aD" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/highsecurity{ @@ -211,30 +197,21 @@ power = 1 }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating, /area/ruin/space/has_grav/abandonedzoo) "aF" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/closed/wall/r_wall, @@ -242,8 +219,6 @@ "aG" = ( /obj/structure/table/reinforced, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/item/gun/energy/floragun, @@ -253,8 +228,6 @@ /area/ruin/space/has_grav/abandonedzoo) "aH" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/darkgreen, @@ -263,8 +236,6 @@ /obj/structure/table/reinforced, /obj/machinery/computer/med_data/laptop, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel{ @@ -278,17 +249,12 @@ power = 1 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating, @@ -306,8 +272,6 @@ /area/ruin/space/has_grav/abandonedzoo) "aM" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/closed/wall/r_wall, @@ -358,8 +322,7 @@ pixel_x = -24 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/structure/rack, /obj/item/melee/baton/cattleprod, @@ -370,13 +333,9 @@ /area/ruin/space/has_grav/abandonedzoo) "aT" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/rack, @@ -463,8 +422,6 @@ /area/ruin/space/has_grav/abandonedzoo) "bc" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/darkgreen, @@ -472,8 +429,6 @@ "bd" = ( /obj/machinery/power/terminal, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/darkgreen, @@ -491,8 +446,6 @@ }, /obj/structure/cable, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel{ @@ -568,19 +521,13 @@ power = 1 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating, @@ -606,8 +553,6 @@ /obj/structure/table/reinforced, /obj/machinery/microwave, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel{ @@ -616,17 +561,12 @@ /area/ruin/space/has_grav/abandonedzoo) "bs" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/shieldwallgen, @@ -634,7 +574,6 @@ /area/ruin/space/has_grav/abandonedzoo) "bt" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/shieldwallgen, @@ -764,8 +703,6 @@ power = 1 }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable, @@ -780,8 +717,6 @@ /area/space) "bS" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable, diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index da3185effc..504be30a14 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -59,8 +59,6 @@ /area/ruin/space/has_grav/derelictoutpost/cargobay) "an" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel, @@ -73,7 +71,6 @@ pixel_x = 24 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plasteel, @@ -107,8 +104,6 @@ /area/ruin/space/has_grav/derelictoutpost/dockedship) "au" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -301,8 +296,7 @@ "bb" = ( /obj/machinery/power/smes, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/powerstorage) @@ -310,13 +304,9 @@ /obj/structure/table, /obj/item/stock_parts/cell/hyper, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel, @@ -324,7 +314,6 @@ "bd" = ( /obj/machinery/power/smes, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plasteel, @@ -467,8 +456,6 @@ /area/ruin/space/has_grav/derelictoutpost/powerstorage) "bs" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -736,13 +723,9 @@ /area/ruin/space/has_grav/derelictoutpost/powerstorage) "bZ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel, @@ -756,7 +739,6 @@ pixel_y = 2 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plasteel, @@ -790,8 +772,6 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -837,8 +817,6 @@ /area/ruin/space/has_grav/derelictoutpost) "cj" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel, @@ -851,7 +829,6 @@ pixel_y = -24 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plasteel, @@ -892,8 +869,6 @@ /area/ruin/space/has_grav/derelictoutpost/powerstorage) "cp" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel, @@ -901,8 +876,6 @@ "cq" = ( /obj/structure/barricade/wooden, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, @@ -914,24 +887,18 @@ }, /obj/structure/barricade/wooden, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/powerstorage) "cs" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargobay) "ct" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel, @@ -963,13 +930,9 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel, @@ -981,8 +944,6 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, @@ -994,8 +955,6 @@ name = "checkpoint security doors" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/firedoor, @@ -1003,8 +962,6 @@ /area/ruin/space/has_grav/derelictoutpost) "cz" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, @@ -1016,16 +973,12 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost) "cB" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel, @@ -1104,16 +1057,12 @@ opened = 1 }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargobay) "cI" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/janitorialcart, @@ -1126,8 +1075,6 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/item/mop, @@ -1145,8 +1092,6 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, @@ -1163,8 +1108,6 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, @@ -1177,8 +1120,6 @@ }, /obj/structure/glowshroom/single, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, @@ -1190,13 +1131,9 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -1356,8 +1293,6 @@ }, /obj/machinery/light, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel, @@ -1374,8 +1309,6 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, @@ -1397,8 +1330,6 @@ name = "pried-open airlock" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, @@ -1418,8 +1349,6 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating, @@ -1515,8 +1444,6 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -1639,8 +1566,6 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -1725,8 +1650,6 @@ name = "gelatinous floor" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -1777,8 +1700,6 @@ dir = 9 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -1947,8 +1868,6 @@ name = "dried blood trail" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -2012,9 +1931,7 @@ pixel_x = 24 }, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargostorage) @@ -2072,8 +1989,6 @@ /area/ruin/space/has_grav/derelictoutpost/cargostorage) "eu" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -2120,8 +2035,6 @@ dir = 5 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -2186,8 +2099,6 @@ dir = 10 }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel, @@ -2204,8 +2115,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, @@ -2217,8 +2126,6 @@ dir = 6 }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plating, diff --git a/_maps/RandomRuins/SpaceRuins/crashedship.dmm b/_maps/RandomRuins/SpaceRuins/crashedship.dmm index 4f118ee7fe..e1ef887172 100644 --- a/_maps/RandomRuins/SpaceRuins/crashedship.dmm +++ b/_maps/RandomRuins/SpaceRuins/crashedship.dmm @@ -110,8 +110,6 @@ /area/awaymission/BMPship/Midship) "ay" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating/airless, @@ -119,8 +117,6 @@ "az" = ( /obj/structure/table/optable, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, @@ -128,7 +124,6 @@ "aA" = ( /obj/machinery/computer/operating, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating/airless, @@ -202,8 +197,6 @@ /area/awaymission/BMPship/Midship) "aL" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless, @@ -296,8 +289,6 @@ /area/awaymission/BMPship/Midship) "bc" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/item/clothing/glasses/regular/hipster, @@ -305,8 +296,6 @@ /area/awaymission/BMPship/Midship) "bd" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, @@ -314,16 +303,12 @@ "be" = ( /obj/machinery/door/unpowered/shuttle, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, /area/awaymission/BMPship/Midship) "bf" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ @@ -333,8 +318,6 @@ /area/awaymission/BMPship/Aft) "bg" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating, @@ -387,8 +370,6 @@ /area/awaymission/BMPship/Fore) "br" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -461,16 +442,12 @@ /area/awaymission/BMPship/Midship) "bD" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating, /area/awaymission/BMPship/Aft) "bE" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/item/hand_labeler, @@ -478,16 +455,12 @@ /area/awaymission/BMPship/Aft) "bF" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/awaymission/BMPship/Aft) "bG" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/item/storage/box, @@ -583,8 +556,6 @@ /area/awaymission/BMPship/Aft) "bT" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/turf_decal/stripes/line{ @@ -603,8 +574,7 @@ /area/awaymission/BMPship/Fore) "bW" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/apc{ dir = 1; @@ -718,8 +688,6 @@ /area/awaymission/BMPship/Midship) "cn" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/poddoor/shutters{ @@ -729,8 +697,6 @@ /area/awaymission/BMPship/Aft) "co" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -792,8 +758,6 @@ /area/awaymission/BMPship/Aft) "cD" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -809,16 +773,12 @@ /area/awaymission/BMPship/Fore) "cH" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/carpet, /area/awaymission/BMPship/Fore) "cI" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/carpet, @@ -838,9 +798,7 @@ "cM" = ( /obj/structure/window/reinforced, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel/barber, /area/awaymission/BMPship/Midship) @@ -861,9 +819,7 @@ /area/awaymission/BMPship/Midship) "cQ" = ( /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel/showroomfloor, /area/awaymission/BMPship/Aft) @@ -895,9 +851,7 @@ /area/awaymission/BMPship/Aft) "cW" = ( /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/apc{ dir = 1; @@ -933,8 +887,6 @@ /area/awaymission/BMPship/Fore) "db" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -961,37 +913,27 @@ /area/awaymission/BMPship/Midship) "dg" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/bar, /area/awaymission/BMPship/Midship) "dh" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/bar, /area/awaymission/BMPship/Midship) "di" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/bar, /area/awaymission/BMPship/Midship) "dj" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/showroomfloor, @@ -1001,55 +943,39 @@ /area/awaymission/BMPship/Aft) "dl" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel, /area/awaymission/BMPship/Aft) "dm" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/awaymission/BMPship/Aft) "dn" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating, /area/awaymission/BMPship/Aft) "do" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating, /area/awaymission/BMPship/Aft) "dp" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/light/small{ @@ -1093,8 +1019,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -1107,24 +1031,18 @@ /area/awaymission/BMPship/Midship) "dx" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/bar, /area/awaymission/BMPship/Midship) "dy" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/bar, /area/awaymission/BMPship/Midship) "dz" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/bar, @@ -1155,16 +1073,12 @@ /area/awaymission/BMPship/Aft) "dE" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, /area/awaymission/BMPship/Aft) "dF" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/turf_decal/stripes/line{ @@ -1184,13 +1098,9 @@ /area/awaymission/BMPship/Fore) "dI" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/carpet, @@ -1198,16 +1108,12 @@ "dJ" = ( /obj/machinery/door/airlock/silver, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/carpet, /area/awaymission/BMPship/Fore) "dK" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/bar, @@ -1215,28 +1121,22 @@ "dL" = ( /obj/machinery/shieldwallgen, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating, /area/awaymission/BMPship/Midship) "dM" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/bar, /area/awaymission/BMPship/Midship) "dN" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/apc{ dir = 1; @@ -1286,8 +1186,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/bar, @@ -1333,8 +1231,6 @@ /area/awaymission/BMPship/Aft) "dZ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/hydrofloor, @@ -1345,20 +1241,17 @@ name = "power storage unit" }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating, /area/awaymission/BMPship/Aft) "eb" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/machinery/power/terminal{ dir = 8 @@ -1367,13 +1260,9 @@ /area/awaymission/BMPship/Aft) "ec" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/effect/turf_decal/stripes/line{ @@ -1450,8 +1339,6 @@ /area/awaymission/BMPship/Aft) "ep" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment{ @@ -1491,8 +1378,6 @@ /area/awaymission/BMPship/Aft) "eu" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/turf_decal/stripes/line{ @@ -1502,24 +1387,18 @@ /area/awaymission/BMPship/Aft) "ev" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/carpet, /area/awaymission/BMPship/Fore) "ew" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/carpet, /area/awaymission/BMPship/Fore) "ex" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/carpet, @@ -1531,39 +1410,27 @@ /area/awaymission/BMPship/Midship) "ez" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/bar, /area/awaymission/BMPship/Midship) "eA" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/bar, /area/awaymission/BMPship/Midship) "eB" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/bar, @@ -1634,34 +1501,24 @@ /area/awaymission/BMPship/Midship) "eM" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/bar, /area/awaymission/BMPship/Midship) "eN" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/showroomfloor, /area/awaymission/BMPship/Aft) "eO" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/showroomfloor, @@ -1684,8 +1541,6 @@ /area/awaymission/BMPship/Aft) "eR" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/effect/turf_decal/stripes/line{ @@ -1739,8 +1594,6 @@ /area/awaymission/BMPship/Aft) "fa" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/item/stock_parts/cell/high, @@ -1756,8 +1609,6 @@ /area/awaymission/BMPship/Fore) "fd" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/unpowered/shuttle, @@ -1870,8 +1721,6 @@ /area/awaymission/BMPship/Fore) "fw" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating/airless, @@ -1881,16 +1730,12 @@ icon_state = "small" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, /area/awaymission/BMPship/Fore) "fy" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless{ @@ -1899,8 +1744,6 @@ /area/awaymission/BMPship/Fore) "fz" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating/airless{ @@ -1909,8 +1752,6 @@ /area/awaymission/BMPship/Fore) "fA" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/item/kitchen/knife, @@ -1924,24 +1765,18 @@ /area/awaymission/BMPship/Midship) "fC" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/showroomfloor, /area/awaymission/BMPship/Aft) "fD" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/showroomfloor, /area/awaymission/BMPship/Aft) "fE" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/showroomfloor, @@ -1986,16 +1821,12 @@ /area/awaymission/BMPship/Fore) "fM" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless, /area/awaymission/BMPship/Fore) "fN" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/bar, @@ -2015,8 +1846,6 @@ /area/awaymission/BMPship/Aft) "fR" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -2065,8 +1894,6 @@ locked = 1 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -2074,8 +1901,6 @@ "ga" = ( /obj/machinery/door/unpowered/shuttle, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -2091,8 +1916,6 @@ /area/awaymission/BMPship) "gd" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/airlock/silver, @@ -2216,41 +2039,30 @@ "gA" = ( /obj/effect/decal/remains/human, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, /area/awaymission/BMPship/Aft) "gB" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/awaymission/BMPship/Aft) "gC" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel, /area/awaymission/BMPship/Aft) "gD" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/item/wallframe/apc, @@ -2309,8 +2121,6 @@ /obj/item/bedsheet, /obj/item/storage/wallet/random, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -2340,15 +2150,12 @@ /area/awaymission/BMPship/Midship) "gU" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating/airless, /area/awaymission/BMPship/Midship) "gV" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, @@ -2356,24 +2163,18 @@ "gW" = ( /obj/machinery/door/unpowered/shuttle, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/closed/wall/mineral/titanium/interior, /area/awaymission/BMPship/Midship) "gX" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/awaymission/BMPship/Aft) "gY" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel, diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index bcf66ad556..06b5407fbc 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -200,8 +200,6 @@ /area/ruin/space/has_grav/deepstorage/crusher) "aC" = ( /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating{ @@ -210,8 +208,6 @@ /area/ruin/space/has_grav/deepstorage/crusher) "aD" = ( /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating{ @@ -220,7 +216,6 @@ /area/ruin/space/has_grav/deepstorage/crusher) "aE" = ( /obj/structure/cable/yellow{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/power/apc{ @@ -369,8 +364,6 @@ req_access_txt = "200" }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -546,8 +539,6 @@ /area/ruin/space/has_grav/deepstorage/kitchen) "be" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -732,8 +723,6 @@ /area/ruin/space/has_grav/deepstorage/kitchen) "by" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light{ @@ -818,8 +807,6 @@ "bJ" = ( /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/cafeteria{ @@ -831,8 +818,6 @@ dir = 6 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/cafeteria{ @@ -844,8 +829,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/cafeteria{ @@ -857,8 +840,6 @@ dir = 9 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/cafeteria{ @@ -867,7 +848,6 @@ /area/ruin/space/has_grav/deepstorage/kitchen) "bN" = ( /obj/structure/cable/yellow{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/power/apc{ @@ -888,8 +868,6 @@ /area/ruin/space/has_grav/deepstorage/kitchen) "bP" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/firealarm{ @@ -981,8 +959,6 @@ "bY" = ( /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/firedoor, @@ -1002,13 +978,9 @@ /area/ruin/space/has_grav/deepstorage/kitchen) "ca" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, @@ -1019,8 +991,6 @@ "cb" = ( /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -1029,8 +999,6 @@ /area/ruin/space/has_grav/deepstorage) "cc" = ( /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/firedoor, @@ -1042,8 +1010,6 @@ "cd" = ( /obj/structure/table, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/hydrofloor{ @@ -1052,8 +1018,6 @@ /area/ruin/space/has_grav/deepstorage/hydroponics) "ce" = ( /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/hydrofloor{ @@ -1062,8 +1026,6 @@ /area/ruin/space/has_grav/deepstorage/hydroponics) "cf" = ( /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, @@ -1073,7 +1035,6 @@ /area/ruin/space/has_grav/deepstorage/hydroponics) "cg" = ( /obj/structure/cable/yellow{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/power/apc/highcap/five_k{ @@ -1159,8 +1120,6 @@ }, /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/bar{ @@ -1211,8 +1170,6 @@ /area/ruin/space/has_grav/deepstorage) "ct" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -1313,8 +1270,6 @@ dir = 5 }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/floorgrime{ @@ -1330,8 +1285,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -1344,8 +1297,6 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -1390,8 +1341,6 @@ "cK" = ( /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/bar{ @@ -1435,8 +1384,6 @@ "cP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -1457,8 +1404,6 @@ "cR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/computer/arcade, @@ -1493,8 +1438,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/bar{ @@ -1535,7 +1478,6 @@ /area/ruin/space/has_grav/deepstorage) "da" = ( /obj/structure/cable/yellow{ - d2 = 2; icon_state = "0-2" }, /obj/machinery/door/firedoor, @@ -1605,9 +1547,7 @@ "dh" = ( /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /obj/structure/cable/yellow{ - icon_state = "1-4"; - d1 = 1; - d2 = 4 + icon_state = "1-4" }, /obj/machinery/computer/arcade, /turf/open/floor/plasteel/floorgrime{ @@ -1619,8 +1559,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/chair/stool, @@ -1634,13 +1572,9 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/floorgrime{ @@ -1652,8 +1586,6 @@ dir = 10 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -1662,13 +1594,9 @@ /area/ruin/space/has_grav/deepstorage) "dl" = ( /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/floorgrime{ @@ -1677,8 +1605,6 @@ /area/ruin/space/has_grav/deepstorage) "dm" = ( /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -1688,13 +1614,9 @@ "dn" = ( /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -1729,13 +1651,9 @@ "dr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/floorgrime{ @@ -1744,12 +1662,9 @@ /area/ruin/space/has_grav/deepstorage) "ds" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable/yellow{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/door/firedoor, @@ -1857,8 +1772,6 @@ "dC" = ( /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light{ @@ -1881,8 +1794,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -1903,8 +1814,6 @@ }, /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -1946,8 +1855,6 @@ "dL" = ( /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -2010,8 +1917,6 @@ dir = 6 }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/floorgrime{ @@ -2023,8 +1928,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/firedoor, @@ -2038,8 +1941,6 @@ "dT" = ( /obj/machinery/atmospherics/pipe/manifold/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -2072,9 +1973,7 @@ "dW" = ( /obj/machinery/atmospherics/pipe/manifold/supplymain/hidden, /obj/structure/cable/yellow{ - icon_state = "1-4"; - d1 = 1; - d2 = 4 + icon_state = "1-4" }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/floorgrime{ @@ -2086,8 +1985,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -2099,13 +1996,9 @@ dir = 1 }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -2118,8 +2011,6 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -2129,8 +2020,6 @@ "ea" = ( /obj/machinery/atmospherics/pipe/manifold/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -2142,8 +2031,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/firedoor, @@ -2157,18 +2044,12 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/floorgrime{ @@ -2178,8 +2059,6 @@ "ed" = ( /obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -2195,8 +2074,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/black{ @@ -2208,8 +2085,6 @@ dir = 10 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/black{ @@ -2218,8 +2093,6 @@ /area/ruin/space/has_grav/deepstorage/armory) "eg" = ( /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/black{ @@ -2232,7 +2105,6 @@ pixel_y = 5 }, /obj/structure/cable/yellow{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/power/apc/highcap/five_k{ @@ -2281,8 +2153,6 @@ "em" = ( /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -2329,8 +2199,6 @@ }, /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -2346,13 +2214,9 @@ "et" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/light{ @@ -2364,12 +2228,9 @@ /area/ruin/space/has_grav/deepstorage) "eu" = ( /obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable/yellow{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/door/firedoor, @@ -2456,8 +2317,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -2551,14 +2410,10 @@ }, /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable/yellow{ - icon_state = "1-4"; - d1 = 1; - d2 = 4 + icon_state = "1-4" }, /turf/open/floor/plasteel/floorgrime{ baseturf = /turf/open/floor/plating/asteroid/airless @@ -2570,8 +2425,6 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/firealarm{ @@ -2586,7 +2439,6 @@ dir = 10 }, /obj/structure/cable/yellow{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/power/apc{ @@ -2660,8 +2512,6 @@ "eQ" = ( /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light{ @@ -2691,12 +2541,9 @@ id = "bunkershutter" }, /obj/structure/cable/yellow{ - d2 = 4; icon_state = "0-4" }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/door/firedoor, @@ -2710,8 +2557,6 @@ dir = 8 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -2720,8 +2565,6 @@ /area/ruin/space/has_grav/deepstorage/airlock) "eV" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -2756,8 +2599,6 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -2809,8 +2650,6 @@ "fe" = ( /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/extinguisher_cabinet{ @@ -2869,8 +2708,6 @@ "fl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -2983,12 +2820,9 @@ "fx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable/yellow{ - d2 = 2; icon_state = "0-2" }, /obj/machinery/power/apc{ @@ -3223,8 +3057,6 @@ /area/ruin/space/has_grav/deepstorage) "fW" = ( /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -3236,8 +3068,6 @@ /area/ruin/space/has_grav/deepstorage/power) "fX" = ( /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -3255,8 +3085,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -3271,8 +3099,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -3351,14 +3177,10 @@ /area/ruin/space/has_grav/deepstorage/dorm) "gh" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable/yellow{ - icon_state = "1-4"; - d1 = 1; - d2 = 4 + icon_state = "1-4" }, /obj/machinery/light/small{ dir = 8 @@ -3375,7 +3197,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d2 = 4; icon_state = "0-4" }, /turf/open/floor/plating{ @@ -3385,8 +3206,6 @@ "gj" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -3447,9 +3266,7 @@ /area/ruin/space/has_grav/deepstorage/power) "gq" = ( /obj/structure/cable/yellow{ - icon_state = "1-4"; - d1 = 1; - d2 = 4 + icon_state = "1-4" }, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/airless @@ -3458,7 +3275,6 @@ "gr" = ( /obj/machinery/power/smes/engineering, /obj/structure/cable/yellow{ - d2 = 8; icon_state = "0-8" }, /obj/structure/sign/electricshock{ @@ -3473,8 +3289,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -3484,13 +3298,9 @@ "gt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -3561,8 +3371,6 @@ dir = 8 }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -3640,8 +3448,6 @@ dir = 8 }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating{ @@ -3650,13 +3456,9 @@ /area/ruin/space/has_grav/deepstorage/power) "gK" = ( /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating{ @@ -3669,8 +3471,6 @@ req_access_txt = "200" }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating{ @@ -3680,8 +3480,6 @@ "gM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -3727,8 +3525,6 @@ "gR" = ( /obj/structure/grille, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating{ @@ -3738,13 +3534,9 @@ "gS" = ( /obj/structure/grille, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/door/firedoor, @@ -3800,8 +3592,6 @@ "gX" = ( /obj/machinery/power/rtg/advanced, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable/yellow, @@ -3901,8 +3691,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/turf_decal/stripes/corner{ @@ -3917,8 +3705,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/firealarm{ @@ -3939,8 +3725,6 @@ "hl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/firealarm{ @@ -3979,7 +3763,6 @@ "hp" = ( /obj/machinery/power/smes/engineering, /obj/structure/cable/yellow{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating{ diff --git a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm index dab408a8b1..069f27eb3e 100644 --- a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm @@ -50,8 +50,7 @@ pixel_y = 26 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating/airless, /area/tcommsat/chamber) @@ -60,8 +59,6 @@ dir = 1 }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating/airless, @@ -107,8 +104,6 @@ /area/template_noop) "au" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless, diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 920adcefce..3a0da1bf0c 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -234,8 +234,7 @@ start_charge = 0 }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/comm) @@ -280,8 +279,6 @@ "aU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -474,8 +471,6 @@ "bx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/airlock/maintenance_hatch, @@ -560,8 +555,6 @@ /area/ruin/space/has_grav/ancientstation) "bP" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/effect/decal/cleanable/dirt, @@ -573,8 +566,6 @@ "bQ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/floorgrime, @@ -713,8 +704,6 @@ /area/ruin/space/has_grav/ancientstation/powered) "cl" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -818,8 +807,6 @@ icon_state = "plant-25" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/effect/decal/cleanable/dirt, @@ -829,8 +816,6 @@ /area/ruin/space/has_grav/ancientstation/deltacorridor) "cA" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -841,8 +826,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/science, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -850,8 +833,6 @@ /area/ruin/space/has_grav/ancientstation/deltacorridor) "cC" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -860,8 +841,6 @@ /area/ruin/space/has_grav/ancientstation/deltacorridor) "cD" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -869,8 +848,6 @@ /area/ruin/space/has_grav/ancientstation/deltacorridor) "cE" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/effect/decal/cleanable/dirt, @@ -934,8 +911,6 @@ /area/ruin/space/has_grav/ancientstation) "cO" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -1001,8 +976,6 @@ /area/ruin/space/has_grav/ancientstation/deltacorridor) "cY" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -1101,8 +1074,6 @@ /area/ruin/space/has_grav/ancientstation/engi) "dm" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -1191,8 +1162,6 @@ /area/ruin/space/has_grav/ancientstation/sec) "dw" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -1280,13 +1249,9 @@ "dK" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/template_noop, @@ -1294,7 +1259,6 @@ "dL" = ( /obj/machinery/power/solar, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating/airless{ @@ -1350,8 +1314,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/apc{ dir = 8; @@ -1387,8 +1350,6 @@ /area/ruin/space/has_grav/ancientstation/sec) "dW" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -1464,8 +1425,6 @@ "ei" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/template_noop, @@ -1551,8 +1510,6 @@ /area/ruin/space/has_grav/ancientstation/hydroponics) "et" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -1586,8 +1543,6 @@ /area/ruin/space/has_grav/ancientstation/sec) "ey" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -1649,8 +1604,7 @@ /area/ruin/space/has_grav/ancientstation/betanorth) "eI" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/machinery/power/solar, /turf/open/floor/plating/airless{ @@ -1660,7 +1614,6 @@ /area/template_noop) "eJ" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating/airless{ @@ -1706,8 +1659,6 @@ /area/ruin/space/has_grav/ancientstation/engi) "eO" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -1749,8 +1700,6 @@ /area/ruin/space/has_grav/ancientstation/hydroponics) "eU" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -1772,8 +1721,6 @@ "eW" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -1821,8 +1768,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -1832,8 +1778,7 @@ charge = 0 }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, @@ -1848,8 +1793,6 @@ "fg" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -1939,8 +1882,6 @@ /area/ruin/space/has_grav/ancientstation/sec) "ft" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -2008,8 +1949,6 @@ "fE" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -2061,8 +2000,6 @@ /area/ruin/space/has_grav/ancientstation/sec) "fL" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -2098,8 +2035,7 @@ "fQ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/apc{ dir = 1; @@ -2111,8 +2047,6 @@ /area/ruin/space/has_grav/ancientstation/deltacorridor) "fR" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -2172,8 +2106,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless/floorgrime, @@ -2183,8 +2115,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, @@ -2202,16 +2132,12 @@ "gc" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ dir = 4 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/template_noop, @@ -2219,8 +2145,6 @@ "gd" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ @@ -2231,19 +2155,12 @@ "ge" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" + icon_state = "1-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ @@ -2254,13 +2171,9 @@ "gf" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ @@ -2277,8 +2190,6 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ @@ -2289,8 +2200,6 @@ "gh" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ @@ -2301,14 +2210,10 @@ "gi" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ @@ -2319,13 +2224,9 @@ "gj" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/effect/decal/cleanable/dirt, @@ -2336,15 +2237,10 @@ /area/ruin/space/has_grav/ancientstation/engi) "gk" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" + icon_state = "1-4" }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2364,19 +2260,13 @@ /area/ruin/space/has_grav/ancientstation/engi) "gm" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, @@ -2385,12 +2275,10 @@ "gn" = ( /obj/effect/spawner/structure/window/hollow/reinforced, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -2402,18 +2290,12 @@ /area/ruin/space/has_grav/ancientstation/powered) "go" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -2424,8 +2306,6 @@ /area/ruin/space/has_grav/ancientstation) "gp" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -2434,8 +2314,6 @@ /area/ruin/space/has_grav/ancientstation) "gq" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/maintenance_hatch, @@ -2447,8 +2325,6 @@ /area/ruin/space/has_grav/ancientstation) "gr" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -2466,12 +2342,9 @@ start_charge = 0 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ @@ -2481,8 +2354,6 @@ /area/ruin/space/has_grav/ancientstation/hydroponics) "gt" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -2494,8 +2365,6 @@ /area/ruin/space/has_grav/ancientstation) "gu" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -2510,20 +2379,15 @@ start_charge = 0 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/kitchen) "gw" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -2536,8 +2400,6 @@ /area/ruin/space/has_grav/ancientstation) "gx" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/maintenance_hatch, @@ -2546,8 +2408,6 @@ /area/ruin/space/has_grav/ancientstation) "gy" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -2558,8 +2418,6 @@ /area/ruin/space/has_grav/ancientstation) "gz" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2571,12 +2429,10 @@ "gA" = ( /obj/effect/spawner/structure/window/hollow/reinforced, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -2588,14 +2444,10 @@ /area/ruin/space/has_grav/ancientstation/sec) "gB" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2606,8 +2458,6 @@ "gC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2618,8 +2468,6 @@ "gD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -2632,12 +2480,10 @@ "gE" = ( /obj/effect/spawner/structure/window/hollow/reinforced, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ dir = 4 @@ -2646,8 +2492,6 @@ /area/ruin/space/has_grav/ancientstation/sec) "gF" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ @@ -2658,8 +2502,6 @@ "gG" = ( /obj/effect/spawner/structure/window/hollow/reinforced, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ @@ -2670,8 +2512,6 @@ "gH" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ @@ -2682,13 +2522,9 @@ "gI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/visible{ @@ -2699,8 +2535,6 @@ "gJ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/maintenance_hatch, @@ -2711,18 +2545,12 @@ /area/ruin/space/has_grav/ancientstation/deltacorridor) "gK" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -2740,7 +2568,6 @@ start_charge = 0 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -2826,16 +2653,12 @@ "gW" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/engi) "gX" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -2918,8 +2741,6 @@ "hl" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/yellow/corner{ @@ -2945,8 +2766,6 @@ /area/ruin/space/has_grav/ancientstation/engi) "ho" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -2959,8 +2778,6 @@ "hq" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -3045,8 +2862,6 @@ "hC" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -3131,16 +2946,13 @@ /area/ruin/space/has_grav/ancientstation/deltacorridor) "hL" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/ancientstation/betanorth) "hM" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating/airless{ tag = "icon-floor"; @@ -3150,8 +2962,6 @@ "hN" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/template_noop, @@ -3159,8 +2969,6 @@ "hO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light/small{ @@ -3182,8 +2990,6 @@ /area/ruin/space/has_grav/ancientstation/engi) "hQ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -3277,16 +3083,12 @@ "ib" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" + icon_state = "1-4" }, /turf/template_noop, /area/template_noop) "ic" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plasteel/airless, @@ -3323,8 +3125,6 @@ /area/ruin/space/has_grav/ancientstation/engi) "ig" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -3334,8 +3134,6 @@ /area/ruin/space/has_grav/ancientstation/engi) "ih" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -3550,8 +3348,6 @@ /area/ruin/space/has_grav/ancientstation/sec) "iC" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -3737,9 +3533,7 @@ name = "backup power storage unit" }, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -3814,8 +3608,6 @@ /area/ruin/space/has_grav/ancientstation/deltacorridor) "jh" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, @@ -3987,10 +3779,7 @@ /area/ruin/space/has_grav/ancientstation/engi) "jE" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" + icon_state = "1-4" }, /obj/effect/decal/cleanable/dirt, /obj/item/twohanded/required/kirbyplants{ @@ -4000,8 +3789,6 @@ /area/ruin/space/has_grav/ancientstation) "jF" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/effect/decal/cleanable/dirt, @@ -4028,18 +3815,13 @@ icon_state = "plant-25" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" + icon_state = "1-4" }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/deltacorridor) "jK" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -4049,8 +3831,6 @@ "jL" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -4058,8 +3838,6 @@ /area/ruin/space/has_grav/ancientstation/deltacorridor) "jM" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/effect/decal/cleanable/dirt, @@ -4076,8 +3854,6 @@ /area/ruin/space/has_grav/ancientstation/atmo) "jP" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless, @@ -4121,8 +3897,6 @@ req_access_txt = "200" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/white/side, @@ -4198,16 +3972,13 @@ start_charge = 0 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/ancientstation/proto) "kh" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/white, diff --git a/_maps/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/onehalf.dmm index a4beb6859c..8b37e791a1 100644 --- a/_maps/RandomRuins/SpaceRuins/onehalf.dmm +++ b/_maps/RandomRuins/SpaceRuins/onehalf.dmm @@ -4,8 +4,6 @@ /area/template_noop) "ab" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/lattice/catwalk, @@ -13,8 +11,6 @@ /area/template_noop) "ac" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/lattice/catwalk, @@ -22,8 +18,6 @@ /area/template_noop) "ad" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/lattice/catwalk, @@ -40,8 +34,6 @@ /area/template_noop) "af" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/lattice/catwalk, @@ -56,8 +48,6 @@ /area/ruin/space/has_grav/onehalf/dorms_med) "ai" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/lattice/catwalk, @@ -98,8 +88,6 @@ "aq" = ( /obj/machinery/door/airlock/external, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -189,8 +177,6 @@ /area/ruin/space/has_grav/onehalf/dorms_med) "aD" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light/small{ @@ -233,15 +219,12 @@ /area/ruin/space/has_grav/onehalf/dorms_med) "aL" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/onehalf/dorms_med) "aM" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/structure/closet/crate/medical, @@ -302,8 +285,6 @@ /area/template_noop) "aT" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless{ @@ -318,8 +299,6 @@ "aV" = ( /obj/machinery/door/airlock/glass_medical, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/white, @@ -330,13 +309,9 @@ /area/ruin/space/has_grav/onehalf/dorms_med) "aX" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/turf_decal/stripes/line{ @@ -346,7 +321,6 @@ /area/ruin/space/has_grav/onehalf/drone_bay) "aY" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/power/apc{ @@ -470,13 +444,9 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/airless{ @@ -488,8 +458,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -501,8 +469,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless, @@ -513,13 +479,9 @@ dir = 4 }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -531,13 +493,9 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/airless, @@ -548,8 +506,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless, @@ -560,8 +516,6 @@ }, /obj/machinery/door/airlock/glass, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, @@ -571,8 +525,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel, @@ -843,8 +795,7 @@ /area/ruin/space/has_grav/onehalf/bridge) "cf" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/machinery/power/apc{ dir = 1; @@ -855,8 +806,6 @@ /area/ruin/space/has_grav/onehalf/bridge) "cg" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/table/reinforced, @@ -939,13 +888,9 @@ /area/ruin/space/has_grav/onehalf/bridge) "cp" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/table/reinforced, @@ -955,16 +900,12 @@ "cq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/door/poddoor/preopen{ @@ -1021,9 +962,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/door/poddoor/preopen{ id = "bridge_onehalf"; @@ -1041,8 +980,6 @@ "cC" = ( /obj/structure/lattice, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/space, @@ -1129,8 +1066,6 @@ "cO" = ( /obj/structure/lattice, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/space, @@ -1169,8 +1104,7 @@ "cV" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/structure/cable, /obj/machinery/door/poddoor/preopen{ @@ -1181,13 +1115,9 @@ /area/ruin/space/has_grav/onehalf/bridge) "cW" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/lattice/catwalk, @@ -1195,8 +1125,6 @@ /area/template_noop) "cX" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless{ @@ -1227,8 +1155,6 @@ "dc" = ( /obj/structure/grille/broken, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless{ @@ -1246,13 +1172,10 @@ "de" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/machinery/door/poddoor/preopen{ id = "bridge_onehalf"; @@ -1263,11 +1186,9 @@ "df" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/door/poddoor/preopen{ @@ -1279,12 +1200,9 @@ "dg" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/door/poddoor/preopen{ @@ -1300,8 +1218,6 @@ /area/template_noop) "di" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/item/shard{ @@ -1312,13 +1228,9 @@ /area/template_noop) "dj" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/item/stack/rods, @@ -1327,13 +1239,9 @@ /area/template_noop) "dk" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/lattice/catwalk, diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index f577cbbf37..9dd1b448f6 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -13,7 +13,6 @@ "ad" = ( /obj/machinery/power/solar, /obj/structure/cable/yellow{ - d2 = 2; icon_state = "0-2" }, /turf/open/floor/plating/airless, @@ -21,46 +20,33 @@ "ae" = ( /obj/machinery/power/solar, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable/yellow{ - d2 = 2; icon_state = "0-2" }, /turf/open/floor/plating/airless, /area/ruin/unpowered/no_grav) "af" = ( /obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating/airless, /area/ruin/unpowered/no_grav) "ag" = ( /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, /area/ruin/unpowered/no_grav) "ah" = ( /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating/airless, @@ -68,15 +54,12 @@ "ai" = ( /obj/machinery/power/tracker, /obj/structure/cable/yellow{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating/airless, /area/ruin/unpowered/no_grav) "aj" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless, @@ -85,16 +68,12 @@ /obj/machinery/power/solar, /obj/structure/cable/yellow, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating/airless, /area/ruin/unpowered/no_grav) "al" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plating/airless, @@ -661,8 +640,7 @@ pixel_y = -24 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom{ @@ -670,8 +648,6 @@ }) "bO" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -724,8 +700,7 @@ pixel_y = -24 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom{ @@ -733,8 +708,6 @@ }) "bU" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -787,8 +760,7 @@ pixel_y = -24 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom{ @@ -796,8 +768,6 @@ }) "ca" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -850,8 +820,7 @@ pixel_y = -24 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom{ @@ -859,8 +828,6 @@ }) "cg" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -903,8 +870,6 @@ name = "Guest Room A3" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -924,8 +889,6 @@ name = "Guest Room A4" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -945,8 +908,6 @@ name = "Guest Room A5" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -966,8 +927,6 @@ name = "Guest Room A6" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -1014,8 +973,6 @@ /area/ruin/space/has_grav/hotel) "cy" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -1099,8 +1056,6 @@ /area/ruin/space/has_grav/hotel) "cI" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1110,8 +1065,6 @@ /area/ruin/space/has_grav/hotel) "cJ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1125,8 +1078,6 @@ req_access_txt = "201" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1136,8 +1087,6 @@ /area/ruin/space/has_grav/hotel) "cL" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1147,18 +1096,12 @@ /area/ruin/space/has_grav/hotel) "cM" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, @@ -1166,8 +1109,6 @@ /area/ruin/space/has_grav/hotel) "cN" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1178,8 +1119,6 @@ /area/ruin/space/has_grav/hotel) "cO" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -1189,8 +1128,6 @@ /area/ruin/space/has_grav/hotel) "cP" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1200,8 +1137,6 @@ /area/ruin/space/has_grav/hotel) "cQ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -1213,8 +1148,6 @@ /area/ruin/space/has_grav/hotel) "cS" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -1271,8 +1204,6 @@ name = "Guest Room A2" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -1297,8 +1228,6 @@ name = "Guest Room A1" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -1335,8 +1264,6 @@ name = "Hotel Staff Storage" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/firedoor, @@ -1381,8 +1308,7 @@ pixel_y = 25 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom{ @@ -1390,8 +1316,6 @@ }) "do" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -1462,8 +1386,7 @@ pixel_y = 25 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom{ @@ -1471,8 +1394,6 @@ }) "dw" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -1513,8 +1434,6 @@ /area/ruin/space/has_grav/hotel/workroom) "dB" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -1643,8 +1562,6 @@ /area/ruin/space/has_grav/hotel/workroom) "dW" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -1652,8 +1569,6 @@ /area/ruin/space/has_grav/hotel/workroom) "dX" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -1663,8 +1578,6 @@ /area/ruin/space/has_grav/hotel/workroom) "dY" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -1674,8 +1587,6 @@ /area/ruin/space/has_grav/hotel/workroom) "dZ" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -1799,8 +1710,6 @@ /area/ruin/space/has_grav/hotel/workroom) "eq" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1914,13 +1823,9 @@ /area/ruin/space/has_grav/hotel) "eI" = ( /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/supply/hidden, @@ -1928,16 +1833,12 @@ /area/ruin/space/has_grav/hotel) "eJ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/ruin/space/has_grav/hotel) "eK" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating, @@ -2043,8 +1944,6 @@ "fd" = ( /obj/effect/decal/cleanable/cobweb, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2054,8 +1953,6 @@ /area/ruin/space/has_grav/hotel) "fe" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2411,8 +2308,6 @@ "gj" = ( /obj/effect/decal/cleanable/oil, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -2707,8 +2602,6 @@ /area/ruin/space/has_grav/hotel) "hf" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -2872,8 +2765,7 @@ pixel_y = -24 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /mob/living/simple_animal/bot/medbot{ name = "Accidents Happen" @@ -2972,8 +2864,6 @@ /area/ruin/space/has_grav/hotel/dock) "hP" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2983,13 +2873,9 @@ /area/ruin/space/has_grav/hotel) "hQ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -2999,8 +2885,6 @@ /area/ruin/space/has_grav/hotel) "hR" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, @@ -3011,8 +2895,6 @@ icon_state = "cobweb2" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -3093,8 +2975,6 @@ req_access_txt = "200,201" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -3135,8 +3015,6 @@ /area/ruin/space/has_grav/hotel) "ik" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -3147,8 +3025,6 @@ "il" = ( /obj/machinery/door/airlock/glass, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/firedoor, @@ -3159,8 +3035,6 @@ /area/ruin/space/has_grav/hotel/dock) "im" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -3182,16 +3056,12 @@ /area/ruin/space/has_grav/hotel/dock) "ip" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating/airless, /area/ruin/unpowered/no_grav) "iq" = ( /obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating/airless, @@ -3208,13 +3078,9 @@ /area/ruin/space/has_grav/hotel/power) "it" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -3224,8 +3090,6 @@ /area/ruin/space/has_grav/hotel/power) "iu" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/sign/fire{ @@ -3240,8 +3104,6 @@ /area/ruin/space/has_grav/hotel/power) "iv" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/airalarm{ @@ -3258,7 +3120,6 @@ pixel_y = 25 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plasteel/yellow/side{ @@ -3307,8 +3168,6 @@ /area/ruin/space/has_grav/hotel) "iE" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -3318,8 +3177,6 @@ /area/ruin/space/has_grav/hotel) "iF" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -3341,8 +3198,6 @@ /area/ruin/space/has_grav/hotel/power) "iI" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -3371,8 +3226,6 @@ /area/ruin/space/has_grav/hotel) "iN" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, @@ -3384,8 +3237,6 @@ /area/ruin/space/has_grav/hotel) "iP" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/wood, @@ -3423,12 +3274,9 @@ pixel_y = -24 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -3438,8 +3286,6 @@ /area/ruin/space/has_grav/hotel/security) "iV" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, @@ -3447,8 +3293,6 @@ /area/ruin/space/has_grav/hotel) "iW" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -3459,13 +3303,9 @@ /area/ruin/space/has_grav/hotel) "iX" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -3475,8 +3315,6 @@ /area/ruin/space/has_grav/hotel) "iY" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/airalarm{ @@ -3495,12 +3333,9 @@ pixel_y = -24 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -3510,8 +3345,6 @@ /area/ruin/space/has_grav/hotel/pool) "ja" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -3521,8 +3354,6 @@ /area/ruin/space/has_grav/hotel) "jb" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -3532,8 +3363,6 @@ /area/ruin/space/has_grav/hotel) "jc" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -3583,8 +3412,6 @@ /area/ruin/space/has_grav/hotel/power) "jj" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -3706,8 +3533,6 @@ /obj/item/stock_parts/cell/high, /obj/item/stock_parts/cell/high, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/yellow/side{ @@ -3716,8 +3541,6 @@ /area/ruin/space/has_grav/hotel/power) "jB" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel, @@ -3859,8 +3682,6 @@ /area/ruin/space/has_grav/hotel/power) "kc" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -3873,28 +3694,22 @@ "kd" = ( /obj/machinery/power/terminal, /obj/structure/cable/yellow{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/hotel/power) "ke" = ( /obj/machinery/power/terminal, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable/yellow{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/hotel/power) "kf" = ( /obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/components/binary/valve{ @@ -3955,8 +3770,6 @@ "kq" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/yellow/side{ @@ -3966,12 +3779,9 @@ "kr" = ( /obj/machinery/power/smes/engineering, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/structure/sign/electricshock{ @@ -3982,15 +3792,12 @@ "ks" = ( /obj/machinery/power/smes/engineering, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plasteel/yellow/side, /area/ruin/space/has_grav/hotel/power) "kt" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -3999,20 +3806,15 @@ "ku" = ( /obj/machinery/power/solar_control, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable/yellow{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel/yellow/side, /area/ruin/space/has_grav/hotel/power) "kv" = ( /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/sign/vacuum{ @@ -4022,8 +3824,6 @@ /area/ruin/space/has_grav/hotel/power) "kw" = ( /obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/yellow/side{ @@ -4105,8 +3905,6 @@ "kJ" = ( /obj/machinery/door/airlock/glass_external, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -4218,8 +4016,6 @@ dir = 4 }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -4398,8 +4194,6 @@ /area/ruin/unpowered/no_grav) "lD" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -4409,8 +4203,6 @@ /area/ruin/unpowered/no_grav) "lE" = ( /obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -4458,13 +4250,9 @@ /area/ruin/space/has_grav/hotel/pool) "lJ" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating/airless, @@ -4530,38 +4318,28 @@ "lV" = ( /obj/machinery/power/solar, /obj/structure/cable/yellow{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating/airless, /area/ruin/unpowered/no_grav) "lW" = ( /obj/machinery/power/solar, /obj/structure/cable/yellow{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating/airless, /area/ruin/unpowered/no_grav) "lX" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating/airless, @@ -4569,12 +4347,9 @@ "lY" = ( /obj/machinery/power/solar, /obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable/yellow{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating/airless, @@ -4582,7 +4357,6 @@ "lZ" = ( /obj/machinery/power/solar, /obj/structure/cable/yellow{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating/airless, @@ -4720,8 +4494,6 @@ /area/ruin/space/has_grav/hotel/custodial) "mw" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -4735,8 +4507,6 @@ req_access_txt = "200,201" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -4746,8 +4516,6 @@ /area/ruin/space/has_grav/hotel/custodial) "my" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, @@ -4847,8 +4615,6 @@ /area/ruin/unpowered/no_grav) "mP" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/black, @@ -4859,56 +4625,42 @@ req_access_txt = "200" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/black, /area/ruin/space/has_grav/hotel/workroom) "mR" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "mS" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "mT" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "mU" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "mV" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/carpet, diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm index 9227ab0fd9..4da94082d9 100644 --- a/_maps/RandomZLevels/Academy.dmm +++ b/_maps/RandomZLevels/Academy.dmm @@ -42,9 +42,7 @@ /area/awaymission/academy/headmaster) "aj" = ( /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/apc{ dir = 1; @@ -62,16 +60,12 @@ /area/awaymission/academy/headmaster) "al" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/carpet, /area/awaymission/academy/headmaster) "am" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/light/small, @@ -79,24 +73,18 @@ /area/awaymission/academy/headmaster) "an" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/carpet, /area/awaymission/academy/headmaster) "ao" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/carpet, /area/awaymission/academy/headmaster) "ap" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -116,8 +104,6 @@ /area/awaymission/academy/headmaster) "at" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/airlock/wood{ @@ -127,21 +113,15 @@ /area/awaymission/academy/headmaster) "au" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, /area/awaymission/academy/headmaster) "av" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/carpet, @@ -164,8 +144,6 @@ /area/awaymission/academy/headmaster) "az" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/item/stack/sheet/animalhide/monkey, @@ -173,7 +151,6 @@ /area/awaymission/academy/headmaster) "aA" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/light/small{ @@ -209,8 +186,6 @@ /area/space) "aH" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light{ @@ -268,8 +243,6 @@ locked = 1 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -283,8 +256,6 @@ /area/awaymission/academy/headmaster) "aU" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/wood, @@ -314,8 +285,6 @@ "ba" = ( /obj/structure/table/wood, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/item/pen/red, @@ -354,8 +323,6 @@ "bh" = ( /obj/structure/table/wood, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/item/dice/d20, @@ -376,8 +343,6 @@ dir = 1 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -408,8 +373,6 @@ "bq" = ( /obj/machinery/door/airlock/gold, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -530,16 +493,12 @@ /area/awaymission/academy/headmaster) "bN" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/black, /area/awaymission/academy/headmaster) "bO" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/vault{ @@ -548,8 +507,6 @@ /area/awaymission/academy/headmaster) "bP" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/black, @@ -557,8 +514,6 @@ "bQ" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/vault{ @@ -567,12 +522,9 @@ /area/awaymission/academy/headmaster) "bR" = ( /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/effect/spawner/structure/window/reinforced, @@ -588,9 +540,7 @@ "bU" = ( /obj/machinery/autolathe, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel, /area/awaymission/academy/classrooms) @@ -630,8 +580,6 @@ /area/awaymission/academy/headmaster) "ce" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/vault{ @@ -640,9 +588,7 @@ /area/awaymission/academy/headmaster) "cf" = ( /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -662,8 +608,6 @@ "ci" = ( /obj/structure/table, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime, @@ -683,8 +627,6 @@ /area/awaymission/academy/headmaster) "cm" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/black, @@ -705,8 +647,6 @@ "cq" = ( /obj/structure/table, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/item/pen/red, @@ -744,8 +684,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -757,8 +695,6 @@ "cz" = ( /obj/structure/table, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/item/stack/cable_coil/random, @@ -784,21 +720,15 @@ /area/awaymission/academy/headmaster) "cE" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/carpet, /area/awaymission/academy/headmaster) "cF" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/plasma, @@ -806,8 +736,6 @@ /area/awaymission/academy/headmaster) "cG" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/black, @@ -838,8 +766,6 @@ /area/awaymission/academy/headmaster) "cM" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -904,32 +830,24 @@ /area/awaymission/academy/headmaster) "cX" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel, /area/awaymission/academy/classrooms) "cY" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/awaymission/academy/classrooms) "cZ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime, /area/awaymission/academy/classrooms) "da" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel, @@ -1002,9 +920,7 @@ "do" = ( /obj/machinery/mech_bay_recharge_port, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating, /area/awaymission/academy/classrooms) @@ -1014,9 +930,7 @@ "dq" = ( /obj/machinery/computer/mech_bay_power_console, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/circuit/green, /area/awaymission/academy/classrooms) @@ -1061,8 +975,6 @@ /area/awaymission/academy/headmaster) "dz" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/reagent_dispensers/fueltank, @@ -1070,18 +982,12 @@ /area/awaymission/academy/classrooms) "dA" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/reagent_dispensers/fueltank, @@ -1089,13 +995,9 @@ /area/awaymission/academy/classrooms) "dB" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -1154,16 +1056,12 @@ /area/awaymission/academy/classrooms) "dN" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel, /area/awaymission/academy/classrooms) "dO" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/green/side{ @@ -1173,24 +1071,18 @@ "dP" = ( /obj/machinery/door/airlock/freezer, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/white, /area/awaymission/academy/classrooms) "dQ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/white, /area/awaymission/academy/classrooms) "dR" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/white, @@ -1206,8 +1098,6 @@ "dU" = ( /obj/structure/mineral_door/iron, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -1230,8 +1120,6 @@ /area/awaymission/academy/classrooms) "dZ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/white, @@ -1259,8 +1147,6 @@ /area/awaymission/academy/classrooms) "ef" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/yellow/side{ @@ -1292,8 +1178,7 @@ /area/awaymission/academy/classrooms) "ek" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/apc{ dir = 1; @@ -1310,8 +1195,6 @@ /area/awaymission/academy/classrooms) "em" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -1366,8 +1249,6 @@ /area/awaymission/academy/classrooms) "ew" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/grimy, @@ -1379,8 +1260,6 @@ "ey" = ( /obj/machinery/door/airlock/freezer, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/white, @@ -1438,8 +1317,6 @@ /area/awaymission/academy/classrooms) "eI" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/barber{ @@ -1474,8 +1351,6 @@ /area/awaymission/academy/classrooms) "eO" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/chapel{ @@ -1525,8 +1400,6 @@ /area/awaymission/academy/classrooms) "eX" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/chapel{ @@ -1567,37 +1440,27 @@ /area/awaymission/academy/classrooms) "fd" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/carpet, /area/awaymission/academy/classrooms) "fe" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/carpet, /area/awaymission/academy/classrooms) "ff" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/carpet, /area/awaymission/academy/classrooms) "fg" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/grimy, @@ -1605,16 +1468,12 @@ "fh" = ( /obj/structure/mineral_door/wood, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/bar, /area/awaymission/academy/classrooms) "fi" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/escape{ @@ -1624,8 +1483,6 @@ "fj" = ( /obj/structure/table, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/escape{ @@ -1635,8 +1492,6 @@ "fk" = ( /obj/structure/table/reinforced, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/barber{ @@ -1645,8 +1500,6 @@ /area/awaymission/academy/classrooms) "fl" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/barber{ @@ -1655,8 +1508,6 @@ /area/awaymission/academy/classrooms) "fm" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/barber{ @@ -1736,13 +1587,9 @@ /area/awaymission/academy/classrooms) "fx" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/yellow/side{ @@ -1751,8 +1598,6 @@ /area/awaymission/academy/classrooms) "fy" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/noticeboard{ @@ -1763,34 +1608,24 @@ /area/awaymission/academy/classrooms) "fz" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/grimy, /area/awaymission/academy/classrooms) "fA" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/grimy, /area/awaymission/academy/classrooms) "fB" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -1806,8 +1641,6 @@ /area/awaymission/academy/academyaft) "fE" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -1817,13 +1650,10 @@ /area/awaymission/academy/academyaft) "fG" = ( /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -1831,8 +1661,6 @@ "fH" = ( /obj/machinery/shieldwallgen, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ @@ -1842,8 +1670,6 @@ /area/awaymission/academy/classrooms) "fI" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/white/side{ @@ -1852,8 +1678,6 @@ /area/awaymission/academy/classrooms) "fJ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/white/side{ @@ -1885,9 +1709,7 @@ /area/awaymission/academy/classrooms) "fQ" = ( /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel/vault, /area/awaymission/academy/classrooms) @@ -1937,9 +1759,7 @@ "fZ" = ( /obj/structure/cable, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -1976,29 +1796,22 @@ /area/awaymission/academy/academycellar) "gg" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/awaymission/academy/classrooms) "gh" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/grimy, /area/awaymission/academy/academyaft) "gi" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/carpet, @@ -2010,8 +1823,6 @@ /area/awaymission/academy/classrooms) "gk" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/recharger, @@ -2054,8 +1865,6 @@ dir = 8 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -2071,9 +1880,7 @@ /area/awaymission/academy/classrooms) "gs" = ( /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -2081,8 +1888,6 @@ /area/awaymission/academy/classrooms) "gt" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/vault{ @@ -2152,8 +1957,7 @@ /area/awaymission/academy/classrooms) "gE" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -2161,16 +1965,12 @@ /area/awaymission/academy/classrooms) "gF" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/carpet, /area/awaymission/academy/academyaft) "gG" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/carpet, @@ -2240,13 +2040,9 @@ /area/awaymission/academy/classrooms) "gS" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/carpet, @@ -2256,16 +2052,12 @@ locked = 1 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/carpet, /area/awaymission/academy/classrooms) "gU" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/vault{ @@ -2274,8 +2066,6 @@ /area/awaymission/academy/classrooms) "gV" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/vault{ @@ -2300,8 +2090,7 @@ "gY" = ( /obj/structure/cable, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -2309,7 +2098,6 @@ "gZ" = ( /obj/machinery/shieldwallgen, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/effect/turf_decal/stripes/line{ @@ -2334,8 +2122,6 @@ "hd" = ( /obj/structure/mineral_door/wood, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -2349,53 +2135,40 @@ /area/awaymission/academy/academyaft) "hg" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating, /area/awaymission/academy/academyaft) "hh" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/awaymission/academy/academyaft) "hi" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/hydrofloor, /area/awaymission/academy/academyaft) "hj" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/hydrofloor, /area/awaymission/academy/academyaft) "hk" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/hydrofloor, /area/awaymission/academy/academyaft) "hl" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/apc{ dir = 1; @@ -2410,9 +2183,7 @@ "hm" = ( /obj/structure/grille, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating, /area/awaymission/academy/academyaft) @@ -2446,39 +2217,30 @@ /area/awaymission/academy/academyaft) "ht" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel, /area/awaymission/academy/academyaft) "hu" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/hydrofloor, /area/awaymission/academy/academyaft) "hv" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/awaymission/academy/academyaft) "hw" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/awaymission/academy/academyaft) "hx" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating, @@ -2487,8 +2249,7 @@ /obj/machinery/power/smes/magical, /obj/structure/cable, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating, /area/awaymission/academy/academyaft) @@ -2497,49 +2258,36 @@ dir = 8 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating, /area/awaymission/academy/academyaft) "hA" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/hydrofloor, /area/awaymission/academy/academyaft) "hB" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/hydrofloor, /area/awaymission/academy/academyaft) "hC" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/hydrofloor, /area/awaymission/academy/academyaft) "hD" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/maintenance_hatch, @@ -2547,26 +2295,18 @@ /area/awaymission/academy/academyaft) "hE" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating, /area/awaymission/academy/academyaft) "hF" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/green/side{ @@ -2575,16 +2315,12 @@ /area/awaymission/academy/academyaft) "hG" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/awaymission/academy/academyaft) "hH" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/green/side{ @@ -2593,34 +2329,24 @@ /area/awaymission/academy/academyaft) "hI" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/carpet, /area/awaymission/academy/academyaft) "hJ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/carpet, /area/awaymission/academy/academyaft) "hK" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/item/caution, @@ -2634,8 +2360,6 @@ /area/awaymission/academy/classrooms) "hM" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/hydrofloor, @@ -2646,16 +2370,12 @@ /area/awaymission/academy/academyaft) "hO" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, /area/awaymission/academy/academyaft) "hP" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/hydrofloor, @@ -2749,13 +2469,9 @@ /area/awaymission/academy/academyaft) "if" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel, @@ -2783,8 +2499,6 @@ /area/awaymission/academy/academyaft) "ik" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -2981,8 +2695,6 @@ /area/awaymission/academy/academyaft) "iO" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/wood, @@ -3013,8 +2725,6 @@ dir = 1 }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/red/side{ @@ -3023,35 +2733,25 @@ /area/awaymission/academy/academyaft) "iT" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/awaymission/academy/academyaft) "iU" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/carpet, /area/awaymission/academy/academyaft) "iV" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable, @@ -3063,8 +2763,6 @@ dir = 1 }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/airless/white{ @@ -3096,21 +2794,16 @@ /area/awaymission/academy/academyaft) "jb" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/awaymission/academy/academyaft) "jc" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/red/side{ @@ -3119,9 +2812,7 @@ /area/awaymission/academy/academyaft) "jd" = ( /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -3130,22 +2821,16 @@ "je" = ( /obj/structure/cable, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/awaymission/academy/academyaft) "jf" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/airless/white{ @@ -3154,8 +2839,6 @@ /area/awaymission/academy/academyaft) "jg" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/airless{ @@ -3165,7 +2848,6 @@ /area/awaymission/academy/academyaft) "jh" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/effect/spawner/structure/window/reinforced, @@ -3178,8 +2860,6 @@ /area/awaymission/academy/academyaft) "jj" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/red/side{ @@ -3188,8 +2868,6 @@ /area/awaymission/academy/academyaft) "jk" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light{ @@ -3209,8 +2887,6 @@ /area/awaymission/academy/academyaft) "jn" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/airless/white{ @@ -3229,13 +2905,9 @@ /area/awaymission/academy/academyaft) "jp" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/item/weldingtool, @@ -3253,8 +2925,6 @@ /area/awaymission/academy/academyaft) "js" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/airless/white{ @@ -3264,7 +2934,6 @@ "jt" = ( /obj/structure/grille, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/item/shard, @@ -3333,8 +3002,6 @@ /area/awaymission/academy/academyaft) "jF" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/window/reinforced{ @@ -3356,16 +3023,12 @@ /area/awaymission/academy/academyaft) "jI" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/carpet, /area/awaymission/academy/academyaft) "jJ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/window/reinforced{ @@ -3408,8 +3071,6 @@ "jQ" = ( /obj/machinery/door/airlock/hatch, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -3429,8 +3090,6 @@ /area/awaymission/academy/academygate) "jU" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -3451,8 +3110,6 @@ /area/awaymission/academy/academygate) "jZ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/window, @@ -3464,29 +3121,21 @@ /area/awaymission/academy/academygate) "kb" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/carpet, /area/awaymission/academy/academygate) "kc" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/carpet, /area/awaymission/academy/academygate) "kd" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/carpet, @@ -3500,8 +3149,6 @@ /area/awaymission/academy/academygate) "kg" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/carpet, @@ -3516,8 +3163,7 @@ req_access = "" }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/carpet, /area/awaymission/academy/academygate) @@ -3527,24 +3173,18 @@ /area/awaymission/academy/academygate) "kj" = ( /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating, /area/awaymission/academy/academygate) "kk" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating, /area/awaymission/academy/academygate) "kl" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/carpet, @@ -3554,8 +3194,6 @@ dir = 9 }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating, @@ -3565,8 +3203,6 @@ dir = 1 }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating, @@ -3676,8 +3312,6 @@ /area/awaymission/academy/academyaft) "kH" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/red/side{ @@ -3698,8 +3332,6 @@ "kK" = ( /obj/structure/table, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/item/book/manual/ripley_build_and_repair, @@ -3711,18 +3343,12 @@ /area/awaymission/academy/classrooms) "kM" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/trap/chill, @@ -3845,20 +3471,15 @@ /area/awaymission/academy/headmaster) "ln" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/vault, /area/awaymission/academy/academyengine) "lo" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/vault, @@ -3869,7 +3490,6 @@ pixel_y = 32 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/vault, @@ -3948,16 +3568,12 @@ /area/awaymission/academy/academyengine) "lG" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating, /area/awaymission/academy/academyengine) "lH" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating, @@ -3978,9 +3594,7 @@ }, /obj/structure/cable, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating, /area/awaymission/academy/academyengine) @@ -4001,16 +3615,12 @@ /area/awaymission/academy/academyengine) "lO" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plating, /area/awaymission/academy/academyengine) "lP" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating, diff --git a/_maps/RandomZLevels/Cabin.dmm b/_maps/RandomZLevels/Cabin.dmm index b4869790a8..dd40e3c024 100644 --- a/_maps/RandomZLevels/Cabin.dmm +++ b/_maps/RandomZLevels/Cabin.dmm @@ -108,15 +108,13 @@ name = "cabin APC" }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating, /area/awaymission/cabin) "aw" = ( /obj/machinery/power/smes/magical, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating, @@ -131,7 +129,6 @@ name = "geothermal generator" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating, @@ -179,15 +176,12 @@ dir = 1 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating, /area/awaymission/cabin) "aF" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm index 022208313e..fc2640782e 100644 --- a/_maps/RandomZLevels/centcomAway.dmm +++ b/_maps/RandomZLevels/centcomAway.dmm @@ -1554,15 +1554,12 @@ /obj/machinery/power/smes, /obj/structure/cable, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "fN" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, @@ -1571,7 +1568,6 @@ /obj/machinery/power/smes, /obj/structure/cable, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating, @@ -2247,8 +2243,7 @@ "ih" = ( /obj/machinery/mech_bay_recharge_port, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) diff --git a/_maps/RandomZLevels/challenge.dmm b/_maps/RandomZLevels/challenge.dmm index f22805b750..ec4df0307e 100644 --- a/_maps/RandomZLevels/challenge.dmm +++ b/_maps/RandomZLevels/challenge.dmm @@ -968,9 +968,7 @@ "cZ" = ( /obj/machinery/gateway, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -990,8 +988,6 @@ /area/awaymission/challenge/end) "dc" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/black, @@ -1061,13 +1057,9 @@ /area/awaymission/challenge/end) "dm" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /mob/living/simple_animal/hostile/syndicate{ @@ -1077,8 +1069,6 @@ /area/awaymission/challenge/end) "dn" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/black, diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 2b3dcfef6d..bd48aae344 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -404,8 +404,7 @@ "aX" = ( /obj/machinery/gateway, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel/vault{ dir = 8; @@ -472,8 +471,6 @@ /area/awaymission/moonoutpost19/syndicate) "bg" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/black{ @@ -601,8 +598,6 @@ req_access_txt = "150" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/turf_decal/stripes/line{ @@ -701,8 +696,6 @@ /area/awaymission/moonoutpost19/syndicate) "bC" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -808,8 +801,6 @@ /area/awaymission/moonoutpost19/syndicate) "bQ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/airlock/highsecurity{ @@ -824,8 +815,6 @@ /area/awaymission/moonoutpost19/syndicate) "bR" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/table, @@ -844,12 +833,10 @@ /area/awaymission/moonoutpost19/syndicate) "bS" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/machinery/computer/monitor, /obj/effect/turf_decal/stripes/line{ @@ -868,7 +855,6 @@ outputting = 1 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating{ @@ -1005,8 +991,6 @@ /area/awaymission/moonoutpost19/syndicate) "cf" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -1049,8 +1033,6 @@ /area/awaymission/moonoutpost19/syndicate) "ci" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/table, @@ -1080,8 +1062,7 @@ dir = 1 }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -1170,13 +1151,9 @@ /area/awaymission/moonoutpost19/syndicate) "ct" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel{ @@ -1186,8 +1163,6 @@ /area/awaymission/moonoutpost19/syndicate) "cu" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -1199,8 +1174,6 @@ /area/awaymission/moonoutpost19/syndicate) "cv" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/red/side{ @@ -1212,8 +1185,6 @@ /area/awaymission/moonoutpost19/syndicate) "cw" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/engineering{ @@ -1226,8 +1197,6 @@ /area/awaymission/moonoutpost19/syndicate) "cx" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plating{ @@ -1236,8 +1205,6 @@ /area/awaymission/moonoutpost19/syndicate) "cy" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating{ @@ -1246,18 +1213,12 @@ /area/awaymission/moonoutpost19/syndicate) "cz" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/effect/decal/cleanable/dirt, @@ -1267,8 +1228,6 @@ /area/awaymission/moonoutpost19/syndicate) "cA" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating{ @@ -2174,8 +2133,6 @@ /area/awaymission/moonoutpost19/research) "ei" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -2186,8 +2143,6 @@ /area/awaymission/moonoutpost19/research) "ej" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/alien/weeds, @@ -2200,7 +2155,6 @@ /area/awaymission/moonoutpost19/research) "ek" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/shieldwallgen{ @@ -2208,8 +2162,7 @@ req_access = null }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating{ heat_capacity = 1e+006 @@ -2312,8 +2265,6 @@ /area/awaymission/moonoutpost19/research) "ex" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/manifold{ @@ -2340,8 +2291,7 @@ /area/awaymission/moonoutpost19/research) "ez" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/door/poddoor/preopen{ desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; @@ -2438,8 +2388,6 @@ /area/awaymission/moonoutpost19/research) "eN" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/general/visible, @@ -2495,8 +2443,7 @@ name = "P.A.C.M.A.N.-type portable generator" }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating{ heat_capacity = 1e+006 @@ -2508,8 +2455,7 @@ name = "S.U.P.E.R.P.A.C.M.A.N.-type portable generator" }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating{ broken = 1; @@ -2534,8 +2480,7 @@ dir = 4 }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/airalarm{ frequency = 1439; @@ -2549,8 +2494,7 @@ /area/awaymission/moonoutpost19/research) "eW" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/smes{ charge = 1.5e+006; @@ -2565,8 +2509,6 @@ /area/awaymission/moonoutpost19/research) "eX" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating{ @@ -2575,8 +2517,6 @@ /area/awaymission/moonoutpost19/research) "eY" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/item/newspaper, @@ -2586,8 +2526,6 @@ /area/awaymission/moonoutpost19/research) "eZ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating{ @@ -2598,8 +2536,6 @@ /area/awaymission/moonoutpost19/research) "fa" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/blood/tracks{ @@ -2613,8 +2549,6 @@ /area/awaymission/moonoutpost19/research) "fb" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating{ @@ -2623,8 +2557,6 @@ /area/awaymission/moonoutpost19/research) "fc" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/maintenance{ @@ -2642,8 +2574,6 @@ /area/awaymission/moonoutpost19/research) "fd" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/blood/tracks{ @@ -2661,8 +2591,6 @@ pixel_x = 32 }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/alien/weeds, @@ -2741,8 +2669,6 @@ /area/awaymission/moonoutpost19/research) "fl" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/general/visible, @@ -2762,8 +2688,7 @@ "fn" = ( /obj/structure/cable, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/door/poddoor/preopen{ desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; @@ -2793,8 +2718,6 @@ /area/awaymission/moonoutpost19/research) "fq" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating{ @@ -2803,13 +2726,9 @@ /area/awaymission/moonoutpost19/research) "fr" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -2820,8 +2739,6 @@ /area/awaymission/moonoutpost19/research) "fs" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plating{ @@ -2830,8 +2747,6 @@ /area/awaymission/moonoutpost19/research) "ft" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating{ @@ -2842,8 +2757,6 @@ /area/awaymission/moonoutpost19/research) "fu" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating{ @@ -2866,13 +2779,9 @@ /area/awaymission/moonoutpost19/research) "fw" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/alien/weeds, @@ -2883,8 +2792,6 @@ /area/awaymission/moonoutpost19/research) "fx" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/firedoor, @@ -2903,8 +2810,6 @@ /area/awaymission/moonoutpost19/research) "fy" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -2914,8 +2819,6 @@ /area/awaymission/moonoutpost19/research) "fz" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel{ @@ -2924,8 +2827,6 @@ /area/awaymission/moonoutpost19/research) "fA" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/firedoor, @@ -2938,8 +2839,6 @@ /area/awaymission/moonoutpost19/research) "fB" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/alien/weeds/node, @@ -2947,8 +2846,6 @@ /area/awaymission/moonoutpost19/research) "fC" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -2995,8 +2892,6 @@ icon_state = "medium" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/engine, @@ -3091,13 +2986,9 @@ /area/awaymission/moonoutpost19/research) "fP" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating{ @@ -3110,8 +3001,6 @@ req_one_access_txt = "0" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating{ @@ -3120,13 +3009,9 @@ /area/awaymission/moonoutpost19/research) "fR" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/effect/decal/cleanable/oil, @@ -3199,8 +3084,6 @@ pixel_x = 32 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/alien/weeds, @@ -3242,8 +3125,7 @@ /area/awaymission/moonoutpost19/research) "gb" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/structure/grille, /obj/machinery/door/poddoor/preopen{ @@ -3297,8 +3179,6 @@ "gh" = ( /obj/effect/decal/cleanable/oil, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating{ @@ -3341,8 +3221,6 @@ /area/awaymission/moonoutpost19/research) "gm" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/firealarm{ @@ -3427,8 +3305,7 @@ /area/awaymission/moonoutpost19/research) "gt" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/structure/disposalpipe/segment{ desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; @@ -3633,8 +3510,7 @@ name = "Acid-Proof containment chamber blast door" }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating{ @@ -3651,8 +3527,6 @@ /area/awaymission/moonoutpost19/research) "gN" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/item/stack/rods, @@ -3824,8 +3698,6 @@ /area/awaymission/moonoutpost19/research) "hd" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/effect/decal/cleanable/cobweb, @@ -3835,8 +3707,6 @@ /area/awaymission/moonoutpost19/research) "he" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -3846,8 +3716,6 @@ /area/awaymission/moonoutpost19/research) "hf" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/effect/decal/cleanable/dirt, @@ -3941,8 +3809,6 @@ /area/awaymission/moonoutpost19/research) "hp" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/oil, @@ -4278,8 +4144,6 @@ /area/awaymission/moonoutpost19/arrivals) "hW" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating{ @@ -4635,8 +4499,6 @@ /area/awaymission/moonoutpost19/arrivals) "iE" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -4971,8 +4833,6 @@ /area/awaymission/moonoutpost19/arrivals) "jp" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/oil, @@ -5117,8 +4977,7 @@ /area/awaymission/moonoutpost19/arrivals) "jH" = ( /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/apc/highcap/fifteen_k{ dir = 1; @@ -5224,8 +5083,6 @@ /area/awaymission/moonoutpost19/arrivals) "jS" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating{ @@ -5236,8 +5093,6 @@ /area/awaymission/moonoutpost19/research) "jT" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/light/small{ @@ -5250,8 +5105,6 @@ /area/awaymission/moonoutpost19/arrivals) "jU" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel{ @@ -5260,8 +5113,6 @@ /area/awaymission/moonoutpost19/arrivals) "jV" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -5271,8 +5122,6 @@ /area/awaymission/moonoutpost19/arrivals) "jW" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -5282,8 +5131,6 @@ /area/awaymission/moonoutpost19/arrivals) "jX" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/item/cigbutt, @@ -5297,8 +5144,6 @@ dir = 1 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/airalarm{ @@ -5314,8 +5159,6 @@ /area/awaymission/moonoutpost19/arrivals) "jZ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/purple/corner{ @@ -5325,8 +5168,6 @@ /area/awaymission/moonoutpost19/arrivals) "ka" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -5337,8 +5178,6 @@ /area/awaymission/moonoutpost19/arrivals) "kb" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/firedoor{ @@ -5352,8 +5191,6 @@ /area/awaymission/moonoutpost19/arrivals) "kc" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel{ @@ -5367,8 +5204,6 @@ /area/awaymission/moonoutpost19/arrivals) "kd" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel{ @@ -5382,8 +5217,6 @@ /area/awaymission/moonoutpost19/arrivals) "ke" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -5399,8 +5232,6 @@ dir = 1 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -5412,8 +5243,6 @@ /area/awaymission/moonoutpost19/arrivals) "kg" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel{ @@ -5427,8 +5256,6 @@ /area/awaymission/moonoutpost19/arrivals) "kh" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating{ @@ -5441,8 +5268,6 @@ /area/awaymission/moonoutpost19/arrivals) "ki" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel{ @@ -5456,8 +5281,6 @@ /area/awaymission/moonoutpost19/arrivals) "kj" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -5474,8 +5297,6 @@ "kk" = ( /obj/machinery/light/small, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/floorgrime{ @@ -5485,8 +5306,6 @@ /area/awaymission/moonoutpost19/arrivals) "kl" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/effect/decal/cleanable/dirt, diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 9a85544ca9..98d9a594c7 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -270,8 +270,6 @@ /area/space) "aY" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light/small{ @@ -362,13 +360,10 @@ /area/awaymission/research/interior/gateway) "bm" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /obj/machinery/power/apc/highcap/ten_k{ auto_name = 1; @@ -486,8 +481,6 @@ /area/awaymission/research/interior/gateway) "bD" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -664,32 +657,24 @@ pixel_x = 24 }, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel/black, /area/awaymission/research/interior/gateway) "cc" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating, /area/awaymission/research/interior/maint) "cd" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/awaymission/research/interior/maint) "ce" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating, @@ -740,8 +725,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/window/reinforced, @@ -749,16 +732,12 @@ /area/awaymission/research/interior/gateway) "cm" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plating, /area/awaymission/research/interior/maint) "cn" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/light/small, @@ -766,8 +745,6 @@ /area/awaymission/research/interior/maint) "co" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -813,16 +790,12 @@ /area/awaymission/research/interior/gateway) "cu" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/black, /area/awaymission/research/interior/gateway) "cv" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/table, @@ -830,8 +803,6 @@ /area/awaymission/research/interior/gateway) "cw" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plating, @@ -848,8 +819,6 @@ /area/awaymission/research/interior/maint) "cz" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /mob/living/simple_animal/hostile/syndicate/ranged, @@ -880,16 +849,12 @@ /area/awaymission/research/interior/gateway) "cE" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/black, /area/awaymission/research/interior/gateway) "cF" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/table, @@ -931,8 +896,6 @@ /area/awaymission/research/interior/genetics) "cL" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /mob/living/simple_animal/hostile/syndicate/ranged, @@ -968,8 +931,6 @@ /area/awaymission/research/interior/secure) "cR" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/airlock/highsecurity{ @@ -981,8 +942,6 @@ /area/awaymission/research/interior/gateway) "cS" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/power/apc/highcap/five_k{ @@ -991,9 +950,7 @@ pixel_x = 24 }, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating, /area/awaymission/research/interior/genetics) @@ -1021,8 +978,6 @@ /area/awaymission/research/interior/genetics) "cY" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/item/ammo_casing/c9mm, @@ -1087,8 +1042,6 @@ /area/awaymission/research/interior/secure) "dg" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -1110,8 +1063,6 @@ /area/awaymission/research/interior/genetics) "dk" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/blood/drip, @@ -1182,8 +1133,6 @@ /area/awaymission/research/interior/genetics) "dw" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/effect/decal/cleanable/blood/drip, @@ -1191,8 +1140,6 @@ /area/awaymission/research/interior/maint) "dx" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/item/ammo_casing/c9mm, @@ -1200,8 +1147,6 @@ /area/awaymission/research/interior/maint) "dy" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/light/small{ @@ -1337,8 +1282,6 @@ /area/awaymission/research/interior/genetics) "dR" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/item/ammo_casing/c45, @@ -1346,13 +1289,9 @@ /area/awaymission/research/interior/maint) "dS" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plating, @@ -1401,8 +1340,6 @@ /area/awaymission/research/interior) "dZ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light/small{ @@ -1440,8 +1377,6 @@ /area/awaymission/research/interior/maint) "eg" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/blood/drip, @@ -1514,8 +1449,6 @@ req_access_txt = "12" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -1602,16 +1535,12 @@ req_access_txt = "12" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/awaymission/research/interior/maint) "eI" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/whitepurple/side{ @@ -1663,8 +1592,7 @@ "eR" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating, /area/awaymission/research/interior/security) @@ -1720,8 +1648,6 @@ }, /obj/structure/cable, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/whitepurple, @@ -1787,8 +1713,6 @@ /area/awaymission/research/interior/cryo) "fj" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/whitepurple/side{ @@ -1825,24 +1749,18 @@ /area/awaymission/research/interior/security) "fr" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/whitered/side, /area/awaymission/research/interior/security) "fs" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/whitered/side, /area/awaymission/research/interior/security) "ft" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/light{ @@ -1873,8 +1791,6 @@ /area/awaymission/research/interior/secure) "fx" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/light/small{ @@ -1889,7 +1805,6 @@ pixel_x = 24 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plasteel/black, @@ -1915,8 +1830,6 @@ /area/awaymission/research/interior) "fC" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/whitepurple, @@ -1975,8 +1888,6 @@ /area/awaymission/research/interior) "fN" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/whitepurple/side{ @@ -2027,8 +1938,6 @@ /area/awaymission/research/interior/security) "fX" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/whitered, @@ -2039,8 +1948,6 @@ /area/awaymission/research/interior/security) "fZ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/chair{ @@ -2072,20 +1979,15 @@ dir = 1 }, /obj/structure/cable{ - d2 = 4; icon_state = "0-4" }, /turf/open/floor/plasteel/black, /area/awaymission/research/interior/secure) "ge" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/black, @@ -2093,12 +1995,9 @@ "gf" = ( /obj/machinery/power/terminal, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d2 = 4; icon_state = "0-4" }, /turf/open/floor/plasteel/black, @@ -2110,32 +2009,24 @@ req_access_txt = "36" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/black, /area/awaymission/research/interior/secure) "gh" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/black, /area/awaymission/research/interior/secure) "gi" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/black, /area/awaymission/research/interior/secure) "gj" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /mob/living/simple_animal/hostile/nanotrasen/ranged/smg, @@ -2143,8 +2034,6 @@ /area/awaymission/research/interior/secure) "gk" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/barricade/security, @@ -2152,8 +2041,6 @@ /area/awaymission/research/interior/secure) "gl" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/highsecurity{ @@ -2166,8 +2053,6 @@ "gm" = ( /obj/structure/barricade/security, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/black, @@ -2178,30 +2063,22 @@ req_access_txt = "9,63" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/awaymission/research/interior/secure) "go" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/awaymission/research/interior) "gp" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/light/small, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plating, @@ -2212,34 +2089,24 @@ req_access_txt = "9" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/awaymission/research/interior) "gr" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/whitepurple, /area/awaymission/research/interior) "gs" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/whitepurple, @@ -2300,8 +2167,6 @@ dir = 8 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/whitepurple, @@ -2337,39 +2202,27 @@ /area/awaymission/research/interior/security) "gJ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/whitered, /area/awaymission/research/interior/security) "gK" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/whitered, /area/awaymission/research/interior/security) "gL" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/chair{ @@ -2379,8 +2232,6 @@ /area/awaymission/research/interior/security) "gM" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/table, @@ -2388,8 +2239,6 @@ /area/awaymission/research/interior/security) "gN" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/table, @@ -2399,8 +2248,6 @@ /area/awaymission/research/interior/security) "gO" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/chair{ @@ -2410,8 +2257,6 @@ /area/awaymission/research/interior/security) "gP" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/whitered/side{ @@ -2453,8 +2298,6 @@ /area/awaymission/research/interior) "gW" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/whitepurple, @@ -2524,8 +2367,6 @@ /area/awaymission/research/interior/security) "hi" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/whitered/side{ @@ -2557,8 +2398,6 @@ /area/awaymission/research/interior/security) "ho" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/whitered/side{ @@ -2567,8 +2406,6 @@ /area/awaymission/research/interior/security) "hp" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel/whitered/side{ @@ -2583,8 +2420,6 @@ /area/awaymission/research/interior/security) "hr" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light{ @@ -2615,29 +2450,21 @@ /area/awaymission/research/interior/cryo) "hw" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/awaymission/research/interior/maint) "hx" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/awaymission/research/interior/maint) "hy" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/effect/decal/cleanable/blood/drip, @@ -2664,8 +2491,6 @@ /area/awaymission/research/interior) "hD" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/light/small{ @@ -2693,8 +2518,6 @@ /area/awaymission/research/interior/security) "hH" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/vending/security, @@ -2773,8 +2596,6 @@ /area/awaymission/research/interior) "hR" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/table, @@ -2873,8 +2694,6 @@ /area/awaymission/research/interior/maint) "ie" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/light/small{ @@ -2888,8 +2707,6 @@ /area/awaymission/research/interior) "ig" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/light/small{ @@ -2925,8 +2742,6 @@ /area/awaymission/research/interior/security) "ik" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light/small{ @@ -2984,21 +2799,15 @@ /area/awaymission/research/interior/bathroom) "iq" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, /area/awaymission/research/interior/maint) "ir" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/whitegreen/side{ @@ -3007,16 +2816,12 @@ /area/awaymission/research/interior) "is" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/whitegreen, /area/awaymission/research/interior) "it" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/whitegreen/side{ @@ -3025,13 +2830,9 @@ /area/awaymission/research/interior) "iu" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -3042,8 +2843,6 @@ req_access_txt = "63" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -3055,13 +2854,9 @@ pixel_x = 24 }, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plating, @@ -3116,12 +2911,9 @@ pixel_y = 24 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, @@ -3205,8 +2997,6 @@ /area/awaymission/research/interior/maint) "iT" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/maintenance_hatch{ @@ -3216,15 +3006,12 @@ /area/awaymission/research/interior/maint) "iU" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, /area/awaymission/research/interior/maint) "iV" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating, @@ -3651,14 +3438,10 @@ pixel_x = 24 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plating, /area/awaymission/research/interior/dorm) @@ -3760,8 +3543,6 @@ /area/awaymission/research/interior/dorm) "kG" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/maintenance_hatch{ @@ -3771,8 +3552,6 @@ /area/awaymission/research/interior/maint) "kH" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/whitegreen/side{ @@ -3781,16 +3560,12 @@ /area/awaymission/research/interior) "kI" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/whitegreen, /area/awaymission/research/interior) "kJ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/whitegreen/side{ @@ -3799,8 +3574,6 @@ /area/awaymission/research/interior) "kK" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, @@ -3824,8 +3597,6 @@ /area/awaymission/research/interior/medbay) "kP" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light/small{ @@ -4211,15 +3982,12 @@ dir = 1 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, /area/awaymission/research/interior/maint) "lW" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/power/apc{ @@ -4242,8 +4010,6 @@ /area/awaymission/research/interior/dorm) "lZ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/power/apc{ @@ -4252,7 +4018,6 @@ pixel_y = -24 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating, diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index e77a80ec67..f8070b272f 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -219,9 +219,7 @@ /area/awaymission/snowdin/base) "aE" = ( /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating{ @@ -256,8 +254,6 @@ /area/awaymission/snowdin/base) "aJ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel{ @@ -497,9 +493,7 @@ "bp" = ( /obj/machinery/gateway, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel{ @@ -556,9 +550,7 @@ dir = 8 }, /obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel{ baseturf = /turf/open/floor/plating/asteroid/snow; @@ -585,8 +577,6 @@ "bx" = ( /obj/effect/landmark/awaystart, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel{ @@ -596,8 +586,6 @@ /area/awaymission/snowdin/base) "by" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/landmark/awaystart, @@ -676,12 +664,9 @@ dir = 8 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel{ @@ -691,8 +676,6 @@ /area/awaymission/snowdin/base) "bI" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/landmark/awaystart, @@ -703,14 +686,10 @@ /area/awaymission/snowdin/base) "bJ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/landmark/awaystart, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel{ @@ -728,8 +707,6 @@ /area/awaymission/snowdin/base) "bL" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/effect/landmark/awaystart, diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index 300e4f05a7..38e40cdc6f 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -1831,8 +1831,6 @@ "ed" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/airlock/command{ @@ -2343,8 +2341,7 @@ start_charge = 100 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel/green/side{ dir = 2; @@ -2353,8 +2350,6 @@ /area/awaymission/undergroundoutpost45/central) "fh" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/extinguisher_cabinet{ @@ -2367,8 +2362,6 @@ /area/awaymission/undergroundoutpost45/central) "fi" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, @@ -2379,8 +2372,6 @@ /area/awaymission/undergroundoutpost45/central) "fj" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/green/side{ @@ -2391,8 +2382,6 @@ "fk" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/green/side{ @@ -2402,8 +2391,6 @@ /area/awaymission/undergroundoutpost45/central) "fl" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/green/side{ @@ -2497,8 +2484,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel/black{ @@ -2507,8 +2492,6 @@ /area/awaymission/undergroundoutpost45/central) "fx" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -2524,8 +2507,6 @@ /area/awaymission/undergroundoutpost45/central) "fy" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -2537,8 +2518,6 @@ /area/awaymission/undergroundoutpost45/central) "fz" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/disposalpipe/segment{ @@ -2683,8 +2662,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "fP" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -2802,8 +2779,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "gb" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -2867,8 +2842,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "gj" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -2921,8 +2894,6 @@ /area/awaymission/undergroundoutpost45/central) "gp" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/disposalpipe/segment{ @@ -2937,8 +2908,6 @@ /area/awaymission/undergroundoutpost45/central) "gq" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/disposalpipe/segment{ @@ -3056,8 +3025,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "gH" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -3126,8 +3093,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "gQ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -3666,8 +3631,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "hW" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -3697,8 +3660,7 @@ "hZ" = ( /obj/machinery/gateway, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + icon_state = "0-2" }, /turf/open/floor/plasteel/vault{ dir = 8; @@ -3871,8 +3833,6 @@ /area/awaymission/undergroundoutpost45/gateway) "iu" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/window{ @@ -4066,8 +4026,6 @@ /area/awaymission/undergroundoutpost45/research) "iM" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -4102,8 +4060,6 @@ /area/awaymission/undergroundoutpost45/gateway) "iP" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel{ @@ -4308,8 +4264,6 @@ /area/awaymission/undergroundoutpost45/gateway) "ji" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -4497,8 +4451,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "jD" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -4659,8 +4611,7 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "jV" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/machinery/power/apc/highcap/fifteen_k{ dir = 1; @@ -4676,8 +4627,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "jW" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/light/small{ @@ -4693,13 +4642,9 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "jX" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/junction{ @@ -4716,8 +4661,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "jY" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -4736,8 +4679,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "jZ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -4752,8 +4693,6 @@ /area/awaymission/undergroundoutpost45/central) "ka" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -4769,8 +4708,6 @@ /area/awaymission/undergroundoutpost45/central) "kb" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -4787,8 +4724,6 @@ /area/awaymission/undergroundoutpost45/central) "kc" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/disposalpipe/segment{ @@ -4872,8 +4807,6 @@ "kl" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -4966,8 +4899,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "ku" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -5438,8 +5369,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "lm" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/junction, @@ -5473,8 +5402,6 @@ /area/awaymission/undergroundoutpost45/gateway) "lp" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel{ @@ -5483,8 +5410,6 @@ /area/awaymission/undergroundoutpost45/gateway) "lq" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -5496,13 +5421,9 @@ /area/awaymission/undergroundoutpost45/gateway) "lr" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/machinery/airalarm{ @@ -5525,8 +5446,6 @@ /area/awaymission/undergroundoutpost45/gateway) "ls" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5538,8 +5457,6 @@ /area/awaymission/undergroundoutpost45/gateway) "lt" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5568,8 +5485,6 @@ /area/awaymission/undergroundoutpost45/research) "lv" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, @@ -5579,8 +5494,6 @@ /area/awaymission/undergroundoutpost45/gateway) "lw" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -5593,8 +5506,6 @@ "lx" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5610,8 +5521,6 @@ /area/awaymission/undergroundoutpost45/gateway) "ly" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5624,8 +5533,6 @@ /area/awaymission/undergroundoutpost45/gateway) "lz" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, @@ -5636,8 +5543,6 @@ /area/awaymission/undergroundoutpost45/gateway) "lA" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/firealarm{ @@ -5659,8 +5564,6 @@ /area/awaymission/undergroundoutpost45/gateway) "lB" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5676,8 +5579,6 @@ /area/awaymission/undergroundoutpost45/gateway) "lC" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5692,8 +5593,6 @@ "lD" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5710,8 +5609,6 @@ /area/awaymission/undergroundoutpost45/gateway) "lE" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5725,13 +5622,9 @@ /area/awaymission/undergroundoutpost45/research) "lF" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/disposalpipe/segment{ @@ -5749,8 +5642,6 @@ /area/awaymission/undergroundoutpost45/research) "lG" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/light, @@ -5770,7 +5661,6 @@ /area/awaymission/undergroundoutpost45/research) "lH" = ( /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/machinery/power/apc/highcap/fifteen_k{ @@ -5936,8 +5826,6 @@ "lW" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -6048,8 +5936,6 @@ /area/awaymission/undergroundoutpost45/research) "mg" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -6249,8 +6135,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "my" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -6377,8 +6261,6 @@ /area/awaymission/undergroundoutpost45/research) "mK" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -6393,13 +6275,9 @@ /area/awaymission/undergroundoutpost45/research) "mL" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel{ @@ -6620,8 +6498,6 @@ /area/awaymission/undergroundoutpost45/engineering) "nj" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -6710,8 +6586,6 @@ /area/awaymission/undergroundoutpost45/research) "ns" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/disposalpipe/segment{ @@ -6727,8 +6601,6 @@ /area/awaymission/undergroundoutpost45/research) "nt" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -6745,8 +6617,6 @@ /area/awaymission/undergroundoutpost45/research) "nu" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -6761,8 +6631,6 @@ /area/awaymission/undergroundoutpost45/research) "nv" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -6781,8 +6649,6 @@ /area/awaymission/undergroundoutpost45/research) "nw" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -6798,8 +6664,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "nx" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/disposalpipe/segment{ @@ -6898,8 +6762,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "nI" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -6912,8 +6774,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "nJ" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/effect/turf_decal/stripes/corner{ @@ -6925,18 +6785,12 @@ /area/awaymission/undergroundoutpost45/engineering) "nK" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ @@ -6948,8 +6802,6 @@ /area/awaymission/undergroundoutpost45/engineering) "nL" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/effect/turf_decal/stripes/corner{ @@ -6965,8 +6817,6 @@ /area/awaymission/undergroundoutpost45/research) "nN" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -7132,8 +6982,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "oa" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/disposalpipe/segment{ @@ -7148,8 +6996,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "ob" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7166,8 +7012,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "oc" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7184,8 +7028,6 @@ "od" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7201,8 +7043,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "oe" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7221,8 +7061,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "of" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7238,8 +7076,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "og" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/light/small{ @@ -7259,8 +7095,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "oh" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/airalarm{ @@ -7283,8 +7117,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "oi" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7298,8 +7130,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "oj" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7316,8 +7146,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "ok" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7336,8 +7164,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "ol" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7353,8 +7179,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "om" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7371,8 +7195,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "on" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7387,8 +7209,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "oo" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/junction{ @@ -7406,8 +7226,6 @@ "op" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7425,8 +7243,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "oq" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -7441,13 +7257,9 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "or" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/junction{ @@ -7462,8 +7274,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "os" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/turf_decal/stripes/line{ @@ -7501,8 +7311,6 @@ /area/awaymission/undergroundoutpost45/engineering) "ov" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/turf_decal/stripes/line{ @@ -7514,8 +7322,6 @@ /area/awaymission/undergroundoutpost45/engineering) "ow" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -7742,8 +7548,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "oT" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/airalarm{ @@ -7767,8 +7571,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "oU" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light/small{ @@ -7791,8 +7593,7 @@ name = "P.A.C.M.A.N.-type portable generator" }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating{ heat_capacity = 1e+006 @@ -7808,12 +7609,10 @@ }, /obj/item/wrench, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating{ heat_capacity = 1e+006 @@ -7828,7 +7627,6 @@ name = "P.A.C.M.A.N.-type portable generator" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating{ @@ -7837,8 +7635,6 @@ /area/awaymission/undergroundoutpost45/engineering) "oY" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light/small{ @@ -7864,8 +7660,6 @@ /area/awaymission/undergroundoutpost45/engineering) "pb" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/disposalpipe/segment{ @@ -7879,8 +7673,6 @@ /area/awaymission/undergroundoutpost45/research) "pc" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/disposalpipe/segment{ @@ -7971,8 +7763,6 @@ /area/awaymission/undergroundoutpost45/engineering) "pk" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -8115,8 +7905,6 @@ /area/awaymission/undergroundoutpost45/engineering) "pz" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -8132,8 +7920,6 @@ /area/awaymission/undergroundoutpost45/engineering) "pA" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -8148,13 +7934,9 @@ /area/awaymission/undergroundoutpost45/engineering) "pB" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -8169,8 +7951,6 @@ /area/awaymission/undergroundoutpost45/engineering) "pC" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ @@ -8182,8 +7962,6 @@ /area/awaymission/undergroundoutpost45/engineering) "pD" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/effect/turf_decal/stripes/corner{ @@ -8219,8 +7997,6 @@ /area/awaymission/undergroundoutpost45/engineering) "pG" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -8408,8 +8184,6 @@ /area/awaymission/undergroundoutpost45/engineering) "qc" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, @@ -8446,8 +8220,6 @@ /area/awaymission/undergroundoutpost45/engineering) "qf" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -8695,8 +8467,7 @@ /area/awaymission/undergroundoutpost45/engineering) "qE" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/machinery/computer/monitor{ name = "primary power monitoring console" @@ -8711,13 +8482,9 @@ /area/awaymission/undergroundoutpost45/engineering) "qF" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/effect/decal/cleanable/dirt, @@ -8728,8 +8495,6 @@ /area/awaymission/undergroundoutpost45/engineering) "qG" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -8741,8 +8506,6 @@ /area/awaymission/undergroundoutpost45/engineering) "qH" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, @@ -8850,8 +8613,6 @@ /area/awaymission/undergroundoutpost45/engineering) "qO" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -8955,8 +8716,6 @@ /area/awaymission/undergroundoutpost45/research) "qX" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -9034,8 +8793,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "rf" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light/small{ @@ -9154,8 +8911,7 @@ /area/awaymission/undergroundoutpost45/engineering) "rp" = ( /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/machinery/power/apc/highcap/fifteen_k{ dir = 8; @@ -9271,8 +9027,6 @@ /area/awaymission/undergroundoutpost45/engineering) "ry" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -9396,8 +9150,6 @@ /area/awaymission/undergroundoutpost45/research) "rK" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -9440,13 +9192,9 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "rO" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/disposalpipe/segment{ @@ -9469,8 +9217,6 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/firedoor, @@ -9480,8 +9226,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "rQ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -9497,8 +9241,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "rR" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -9514,8 +9256,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "rS" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -9532,8 +9272,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "rT" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/airalarm{ @@ -9555,8 +9293,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "rU" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -9573,8 +9309,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "rV" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -9591,8 +9325,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "rW" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -9609,8 +9341,6 @@ "rX" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -9630,8 +9360,6 @@ /area/awaymission/undergroundoutpost45/engineering) "rY" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -9646,8 +9374,6 @@ /area/awaymission/undergroundoutpost45/engineering) "rZ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -9660,8 +9386,6 @@ /area/awaymission/undergroundoutpost45/engineering) "sa" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/disposalpipe/segment{ @@ -9984,8 +9708,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "sD" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -10088,8 +9810,6 @@ /area/awaymission/undergroundoutpost45/engineering) "sN" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -10194,8 +9914,6 @@ /area/awaymission/undergroundoutpost45/engineering) "sV" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ @@ -10300,8 +10018,6 @@ /area/awaymission/undergroundoutpost45/engineering) "tg" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/disposalpipe/segment{ @@ -10315,8 +10031,6 @@ /area/awaymission/undergroundoutpost45/research) "th" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -10331,8 +10045,6 @@ /area/awaymission/undergroundoutpost45/research) "ti" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -10349,8 +10061,6 @@ /area/awaymission/undergroundoutpost45/research) "tj" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /obj/structure/disposalpipe/segment{ @@ -10417,8 +10127,6 @@ /area/awaymission/undergroundoutpost45/research) "tr" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -10448,8 +10156,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "tu" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light/small{ @@ -10489,8 +10195,6 @@ /area/awaymission/undergroundoutpost45/engineering) "tx" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -10560,8 +10264,6 @@ /area/awaymission/undergroundoutpost45/engineering) "tD" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ @@ -10668,8 +10370,6 @@ /area/awaymission/undergroundoutpost45/research) "tO" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/disposalpipe/segment{ @@ -10686,8 +10386,6 @@ /area/awaymission/undergroundoutpost45/research) "tP" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -10702,8 +10400,6 @@ /area/awaymission/undergroundoutpost45/research) "tQ" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/junction{ @@ -10722,8 +10418,6 @@ /area/awaymission/undergroundoutpost45/research) "tR" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -10737,8 +10431,6 @@ /area/awaymission/undergroundoutpost45/research) "tS" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -10755,8 +10447,6 @@ /area/awaymission/undergroundoutpost45/research) "tT" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -10774,8 +10464,6 @@ /area/awaymission/undergroundoutpost45/research) "tU" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -10791,8 +10479,6 @@ /area/awaymission/undergroundoutpost45/research) "tV" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/structure/disposalpipe/segment{ @@ -10840,8 +10526,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "ua" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -10874,8 +10558,6 @@ "ue" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -10917,8 +10599,6 @@ /area/awaymission/undergroundoutpost45/engineering) "uj" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/components/binary/pump{ @@ -11121,8 +10801,6 @@ /area/awaymission/undergroundoutpost45/engineering) "uC" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -11158,8 +10836,6 @@ /area/awaymission/undergroundoutpost45/engineering) "uG" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, @@ -11322,8 +10998,6 @@ /area/awaymission/undergroundoutpost45/engineering) "uW" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -11390,8 +11064,6 @@ "vb" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/door/poddoor/preopen{ @@ -11552,8 +11224,6 @@ /area/awaymission/undergroundoutpost45/crew_quarters) "vr" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -11572,8 +11242,6 @@ /area/awaymission/undergroundoutpost45/engineering) "vt" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/disposalpipe/segment{ @@ -11587,8 +11255,6 @@ /area/awaymission/undergroundoutpost45/engineering) "vu" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ @@ -11603,13 +11269,9 @@ /area/awaymission/undergroundoutpost45/engineering) "vv" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/structure/disposalpipe/segment{ @@ -11625,8 +11287,6 @@ /area/awaymission/undergroundoutpost45/engineering) "vw" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -11638,8 +11298,6 @@ /area/awaymission/undergroundoutpost45/engineering) "vx" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -11652,8 +11310,6 @@ /area/awaymission/undergroundoutpost45/engineering) "vy" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/yellow/side{ @@ -11663,8 +11319,6 @@ /area/awaymission/undergroundoutpost45/engineering) "vz" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/door/airlock/engineering{ @@ -11677,8 +11331,6 @@ /area/awaymission/undergroundoutpost45/engineering) "vA" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel{ @@ -11687,8 +11339,6 @@ /area/awaymission/undergroundoutpost45/engineering) "vB" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/plasteel{ @@ -11775,8 +11425,6 @@ "vO" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -11831,8 +11479,6 @@ /area/awaymission/undergroundoutpost45/engineering) "vT" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, @@ -12016,8 +11662,6 @@ /area/awaymission/undergroundoutpost45/mining) "wi" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -12042,8 +11686,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plating{ heat_capacity = 1e+006 @@ -12052,11 +11695,9 @@ "wl" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating{ @@ -12065,14 +11706,10 @@ /area/awaymission/undergroundoutpost45/engineering) "wm" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/door/airlock/glass_command{ @@ -12151,8 +11788,6 @@ /area/awaymission/undergroundoutpost45/mining) "wv" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -12206,8 +11841,6 @@ /area/awaymission/undergroundoutpost45/engineering) "wA" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment{ @@ -12244,8 +11877,6 @@ /area/awaymission/undergroundoutpost45/mining) "wD" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /obj/effect/decal/cleanable/dirt, @@ -12255,8 +11886,6 @@ /area/awaymission/undergroundoutpost45/mining) "wE" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -12266,14 +11895,10 @@ /area/awaymission/undergroundoutpost45/mining) "wF" = ( /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -12304,8 +11929,6 @@ /area/awaymission/undergroundoutpost45/engineering) "wJ" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -12371,8 +11994,6 @@ /area/awaymission/undergroundoutpost45/mining) "wP" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -12385,8 +12006,6 @@ "wQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -12429,8 +12048,6 @@ /area/awaymission/undergroundoutpost45/engineering) "wU" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /obj/machinery/light/small{ @@ -12489,8 +12106,6 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/brown{ @@ -12523,8 +12138,6 @@ /area/awaymission/undergroundoutpost45/engineering) "xd" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; icon_state = "2-4" }, /turf/open/floor/plasteel/neutral{ @@ -12540,8 +12153,6 @@ pixel_y = -28 }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /obj/effect/decal/cleanable/dirt, @@ -12577,8 +12188,6 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel{ @@ -12674,8 +12283,6 @@ req_access = null }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime{ @@ -12715,8 +12322,6 @@ "xt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel{ @@ -12777,8 +12382,6 @@ dir = 8 }, /obj/structure/cable{ - d1 = 1; - d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel{ @@ -12859,8 +12462,6 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /turf/open/floor/plasteel{ @@ -12876,8 +12477,6 @@ req_access_txt = "201" }, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel{ @@ -12890,8 +12489,6 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel{ @@ -12903,8 +12500,6 @@ dir = 8 }, /obj/structure/cable{ - d1 = 2; - d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel{ @@ -12959,8 +12554,7 @@ "xQ" = ( /obj/machinery/computer/mech_bay_power_console, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + icon_state = "0-4" }, /turf/open/floor/plasteel{ heat_capacity = 1e+006 @@ -12968,13 +12562,9 @@ /area/awaymission/undergroundoutpost45/mining) "xR" = ( /obj/structure/cable{ - d1 = 1; - d2 = 4; icon_state = "1-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 8; icon_state = "1-8" }, /turf/open/floor/mech_bay_recharge_floor, @@ -12985,7 +12575,6 @@ dir = 8 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/open/floor/plating, diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index ea922f35db..8e4b3d9f2d 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -4496,6 +4496,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/light, /turf/open/floor/plasteel/red/side, /area/security/brig) "akq" = ( @@ -6671,7 +6672,8 @@ frequency = 1441; id = "waste_out" }, -/turf/open/floor/plating/airless, +/obj/structure/lattice/catwalk, +/turf/open/space, /area/engine/atmos) "apJ" = ( /turf/closed/wall, @@ -11594,7 +11596,7 @@ /turf/open/floor/plasteel/white/side{ dir = 4 }, -/area/space) +/area/crew_quarters/theatre) "aCr" = ( /turf/closed/wall, /area/crew_quarters/theatre) @@ -12174,7 +12176,7 @@ /turf/open/floor/plasteel/white/side{ dir = 4 }, -/area/space) +/area/crew_quarters/theatre) "aDS" = ( /obj/machinery/door/airlock{ name = "Unisex Showers"; @@ -12784,7 +12786,7 @@ }, /obj/structure/dresser, /turf/open/floor/plasteel/redblue/redside, -/area/space) +/area/crew_quarters/theatre) "aFm" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -13352,7 +13354,7 @@ pixel_x = -28 }, /turf/open/floor/plasteel/redblue, -/area/space) +/area/crew_quarters/theatre) "aGE" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -13954,7 +13956,7 @@ /obj/structure/table/wood, /obj/item/device/flashlight/lamp/bananalamp, /turf/open/floor/plasteel/redblue, -/area/space) +/area/crew_quarters/theatre) "aIa" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -36960,10 +36962,7 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "bMl" = ( -/obj/machinery/processor{ - desc = "A machine used to process slimes and retrieve their extract."; - name = "Slime Processor" - }, +/obj/machinery/processor/slime, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/xenobiology) @@ -38749,7 +38748,7 @@ }, /area/engine/atmos) "bQA" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating/airless, /area/engine/atmos) "bQB" = ( @@ -60298,6 +60297,7 @@ /obj/item/pen, /obj/item/hand_labeler, /obj/item/book/manual/wiki/security_space_law, +/obj/machinery/light, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "Qvn" = ( @@ -84171,7 +84171,7 @@ cjJ cjJ aaa aaa -QvL +QvK aaf aaa aaa @@ -84428,7 +84428,7 @@ cpo cjJ aaa aaa -QvM +QvK aaf Qoi aaa @@ -88293,7 +88293,7 @@ cSH cGu cGH QvT -QvW +QvT cGR csd csd @@ -89061,7 +89061,7 @@ cFe cMD cFM czE -QvO +QvN ccw cGT csd @@ -89477,11 +89477,11 @@ anS aoy Qvz QvA -QvB -QvC -QvD -QvE -QvF +QvA +QvA +QvA +QvA +QvA QvG axB anz @@ -90089,7 +90089,7 @@ cFh cMD cFM czE -QvP +QvN ccw cGT csd @@ -90346,7 +90346,7 @@ cEz cMD cFR cSJ -QvQ +QvN cMm ciZ cHd @@ -90609,7 +90609,7 @@ cGS cHe cHe cHr -Qwb +Qwa ccw aaf aaT @@ -90863,7 +90863,7 @@ cSK cGx cGK QvU -QvX +QvU cGY csd csd @@ -91010,7 +91010,7 @@ agn ajd ajb akr -Qvx +Qvw QpO amo QpU @@ -92532,9 +92532,9 @@ aaa aaa aaf aaf -QoE -QoE -QoE +abp +abp +abp abq abq abq diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 96bdc28a33..b454b9f9c2 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -102554,6 +102554,2910 @@ /obj/machinery/vending/kink, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) +"YGP" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YGQ" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YGR" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YGS" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 2; + name = "External Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YGT" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YGU" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YGV" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YGW" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YGX" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YGY" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YGZ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHa" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHb" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHc" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YHd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YHe" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YHf" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHg" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHh" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHi" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHj" = ( +/obj/structure/window/reinforced, +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHk" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHl" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHm" = ( +/obj/structure/closet/firecloset/full, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHn" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHo" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHp" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel/greenblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YHq" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/circuitboard/machine/hydroponics, +/turf/open/floor/plasteel/greenblue/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"YHr" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YHs" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 1; + glass = 1; + name = "Internal Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YHt" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YHu" = ( +/obj/structure/closet/secure_closet/freezer/kitchen/mining, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/flour, +/turf/open/floor/plasteel/greenblue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"YHv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YHw" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHx" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHy" = ( +/obj/structure/closet/emcloset, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHz" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHA" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHB" = ( +/obj/structure/closet/crate{ + name = "emergency supplies crate" + }, +/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/emergency, +/obj/item/device/flashlight/flare{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/flashlight/flare{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/crowbar, +/obj/item/wrench, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/extinguisher, +/obj/item/extinguisher, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHC" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/box/hug/medical, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHD" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_maintenance{ + name = "Maintenance" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHE" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHF" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YHG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YHH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHI" = ( +/obj/structure/sink/kitchen{ + pixel_z = 30 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YHJ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YHK" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHL" = ( +/obj/machinery/door/airlock/glass_maintenance{ + name = "Maintenance" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHN" = ( +/obj/structure/closet/crate{ + name = "spare equipment crate" + }, +/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/relic, +/obj/item/device/t_scanner, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 4 + }, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHO" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHP" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHQ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHR" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHS" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YHT" = ( +/obj/machinery/vending/hydroseeds, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"YHU" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/stack/sheet/metal/fifty, +/obj/item/circuitboard/machine/hydroponics, +/obj/item/circuitboard/machine/gibber, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/green/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YHV" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHY" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner, +/area/shuttle/abandoned) +"YHZ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"YIa" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YIb" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIc" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YId" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIe" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIf" = ( +/obj/structure/closet/wardrobe, +/obj/item/clothing/under/trek/command/next, +/obj/item/clothing/under/trek/command/next, +/obj/item/clothing/under/trek/engsec/next, +/obj/item/clothing/under/trek/engsec/next, +/obj/item/clothing/under/trek/medsci/next, +/obj/item/clothing/under/trek/medsci/next, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/spawner/lootdrop/costume, +/obj/item/clothing/under/rank/centcom_commander{ + desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; + name = "\improper dusty old CentCom jumpsuit" + }, +/obj/item/clothing/under/rank/centcom_officer{ + desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; + name = "\improper dusty old CentCom jumpsuit" + }, +/obj/item/clothing/under/rank/centcom_officer{ + desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; + name = "\improper dusty old CentCom jumpsuit" + }, +/obj/item/clothing/head/centhat{ + desc = "There's a gouge through the top where something has clawed clean through it. Whoever was wearing it probably doesn't need a hat any more."; + name = "\improper damaged CentCom hat" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"YIg" = ( +/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"YIh" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YIi" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YIj" = ( +/obj/item/storage/bag/plants/portaseeder, +/obj/structure/table, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 13; + pixel_y = 5 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/rh{ + pixel_x = -2; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YIk" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YIm" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIn" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YIo" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YIp" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YIq" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIr" = ( +/obj/item/soap, +/obj/structure/curtain, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/shower{ + pixel_y = 15 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/abandoned) +"YIs" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIt" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIu" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"YIv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"YIw" = ( +/obj/structure/table, +/obj/item/storage/pill_bottle/dice, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"YIx" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIy" = ( +/obj/structure/table, +/obj/item/wrench, +/obj/item/crowbar, +/obj/item/clothing/suit/apron, +/obj/item/shovel/spade, +/obj/item/cultivator, +/obj/item/device/plant_analyzer, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/wirecutters, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YIz" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/box/donkpockets, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIA" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIC" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YID" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIE" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/abandoned) +"YIF" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/abandoned) +"YIH" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YII" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIJ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/mopbucket, +/turf/open/floor/plasteel/greenblue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"YIK" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YIL" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YIM" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YIO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIP" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YIQ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIR" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/corner, +/area/shuttle/abandoned) +"YIS" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + name = "Laborotary" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YIU" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIV" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + name = "Laborotary" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YIW" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIX" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIY" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"YIZ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/toy/cards/deck, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJa" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJb" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + glass = 1; + name = "Dormitory"; + opacity = 0 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJc" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"YJd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/gun/energy/floragun, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJe" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJf" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJg" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YJh" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + name = "Laborotary" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJi" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJj" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJk" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJl" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJm" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJn" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/bed, +/turf/open/floor/plasteel/greenblue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"YJo" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"YJp" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/mop, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"YJq" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJr" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/device/gps{ + gpstag = "ITVSAC"; + pixel_x = -1; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YJs" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJt" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJu" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YJw" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJx" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/obj/structure/mirror{ + pixel_x = -30 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJy" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/bikehorn/rubberducky, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJz" = ( +/obj/structure/urinal{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJA" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJB" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJC" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJD" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJE" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJF" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJG" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YJH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + glass = 1; + name = "Crew Quarters"; + opacity = 0 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YJI" = ( +/obj/machinery/vending/boozeomat, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJJ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + glass = 1; + name = "Crew Quarters"; + opacity = 0 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YJK" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YJL" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJM" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/obj/structure/mirror{ + pixel_x = -30 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YJO" = ( +/obj/structure/urinal{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJP" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJQ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJR" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/latex/nitrile, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/suit/apron/surgical, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"YJS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YJT" = ( +/obj/structure/closet/crate/freezer/blood, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"YJU" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJV" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/clothing/head/helmet/swat/nanotrasen, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"YJW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/built{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJY" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJZ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/clothing/gloves/color/black, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"YKa" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKb" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKc" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKd" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKe" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKf" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKg" = ( +/obj/structure/table/optable, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/defibrillator/loaded, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YKh" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YKi" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YKj" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKk" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/obj/structure/table, +/obj/item/clothing/suit/armor/vest, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"YKl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKm" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKn" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKo" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/obj/structure/table, +/obj/item/gun/energy/e_gun/mini, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"YKp" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKq" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"YKr" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"YKs" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/bot, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YKt" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKu" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/computer, +/obj/item/circuitboard/computer/operating, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YKw" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YKx" = ( +/obj/machinery/sleeper{ + icon_state = "sleeper-open"; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YKy" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKz" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/arrival/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YKA" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/suit/armor/vest, +/obj/effect/decal/cleanable/blood/gibs/body, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKC" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/crowbar/red, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKD" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKE" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 4; + glass = 1; + name = "Internal Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YKF" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YKG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YKH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YKI" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 8; + name = "External Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YKJ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKK" = ( +/obj/machinery/iv_drip, +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = -28; + req_access_txt = "0"; + use_power = 0 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YKL" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YKM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YKN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_medical{ + id_tag = null; + name = "Infirmary"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YKO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/arrival{ + dir = 8 + }, +/area/shuttle/abandoned) +"YKP" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKQ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKR" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/head/helmet/swat/nanotrasen, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKT" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKU" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKV" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKW" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKX" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKY" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKZ" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"YLa" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct, +/turf/open/floor/plasteel/whiteblue/side, +/area/shuttle/abandoned) +"YLb" = ( +/obj/structure/closet/secure_closet/medical2{ + req_access = null + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/glasses/hud/health/sunglasses, +/turf/open/floor/plasteel/whiteblue/side, +/area/shuttle/abandoned) +"YLc" = ( +/obj/structure/sign/bluecross_2, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/arrival/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YLe" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLf" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLg" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLh" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLi" = ( +/obj/structure/sign/engineering, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLj" = ( +/obj/machinery/autolathe, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YLk" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/tank_dispenser, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"YLl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLm" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLn" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLo" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLp" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLq" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLr" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLs" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLt" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/gibs/down, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLu" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/closet/crate/science, +/obj/effect/decal/cleanable/leaper_sludge, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLw" = ( +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/rglass{ + amount = 20 + }, +/obj/item/stack/sheet/mineral/titanium/fifty, +/turf/open/floor/plasteel/yellow/corner, +/area/shuttle/abandoned) +"YLx" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YLy" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/rglass{ + amount = 20 + }, +/obj/item/clothing/head/welding, +/obj/structure/light_construct{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YLz" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"YLA" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLB" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YLC" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLD" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"YLE" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YLF" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YLG" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YLH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YLI" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/paper/crumpled/bloody{ + info = "Your vessel will be transporting artifact E-395 to our nearby research station. Under no circumstances is the container to be opened. Half of the payment will be given now, rest upon completion. In the event of containment breach--" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLJ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YLK" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLL" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YLM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_engineering{ + name = "Engineering Storage" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YLN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YLO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/head/welding, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"YLP" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLQ" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YLR" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YLS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YLT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YLU" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YLV" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/research{ + glass = 1; + name = "Research Lab" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YLW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/purple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YLX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/gloves/color/black, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLY" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLZ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/greenglow, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMa" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/airlock_painter, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/yellow/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YMb" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMc" = ( +/obj/structure/closet/toolcloset, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YMd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/rods/twentyfive, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"YMe" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/structure/light_construct/small, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMf" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMg" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YMh" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/computer, +/obj/item/stock_parts/console_screen, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YMi" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/circuitboard/machine/circuit_imprinter, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YMj" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/machine, +/turf/open/floor/plasteel/whitepurple/corner, +/area/shuttle/abandoned) +"YMk" = ( +/obj/structure/sign/science, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YMm" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMn" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMo" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMp" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMq" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMr" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMs" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YMt" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMu" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMv" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YMw" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/machine, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YMx" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YMy" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/machine, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YMz" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMA" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YMC" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMD" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YME" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMF" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 4; + glass = 1; + name = "Internal Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YMG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YMH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YMI" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YMJ" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 8; + name = "External Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/docking_port/mobile{ + dheight = 0; + dir = 8; + dwidth = 11; + height = 15; + id = "whiteship"; + launch_status = 0; + name = "White-Ship"; + port_direction = 8; + preferred_direction = 8; + roundstart_move = "whiteship_away"; + width = 32 + }, +/obj/docking_port/stationary{ + dir = 8; + dwidth = 11; + height = 15; + id = "whiteship_home"; + name = "SS13: Auxiliary Dock, Station-Fore"; + width = 32 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YMK" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YML" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"YMM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plasteel/whitepurple/side, +/area/shuttle/abandoned) +"YMN" = ( +/obj/structure/closet/crate/science{ + name = "spare circuit boards crate" + }, +/obj/item/circuitboard/computer/rdconsole, +/obj/item/circuitboard/machine/protolathe, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/reagent_containers/glass/beaker/sulphuric, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 6 + }, +/area/shuttle/abandoned) +"YMO" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMP" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMQ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner, +/area/shuttle/abandoned) +"YMR" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/built, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"YMS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YMT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMU" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMV" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YMW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YMX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YMY" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMZ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNa" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNb" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNc" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNd" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNe" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_command{ + name = "Bridge"; + welded = 1 + }, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"YNf" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNg" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNh" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNi" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_command{ + name = "Bridge"; + welded = 1 + }, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"YNj" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNk" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNl" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNm" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNn" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNo" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNp" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/cobweb, +/obj/item/stack/spacecash/c1000, +/obj/item/stack/spacecash/c1000, +/turf/open/floor/plasteel/blue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"YNq" = ( +/obj/structure/closet/crate, +/obj/item/paper_bin, +/obj/item/stack/sheet/metal/twenty, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/under/gimmick/rank/captain/suit, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YNr" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNs" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/device/megaphone, +/turf/open/floor/plasteel/blue/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YNt" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/built{ + dir = 1 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YNu" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YNv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNw" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel/blue/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YNx" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/device/camera, +/turf/open/floor/plasteel/blue/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"YNy" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNz" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNA" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/obj/item/phone, +/turf/open/floor/plasteel/blue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YNB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNC" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YND" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/gibs/torso, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNE" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/shard, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNF" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNI" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YNJ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNK" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YNL" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"YNM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YNN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/pen/fountain/captain, +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"YNO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNP" = ( +/obj/structure/chair/comfy/black, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNQ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNR" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"YNS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/photo_album, +/turf/open/floor/plasteel/blue/corner, +/area/shuttle/abandoned) +"YNT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side{ + dir = 6 + }, +/area/shuttle/abandoned) +"YNU" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YNV" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YNW" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YNX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/fancy/cigarettes/cigars/cohiba, +/turf/open/floor/plasteel/blue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"YNY" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ + x_offset = -7; + y_offset = -8 + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"YNZ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/device/pda/clear, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"YOa" = ( +/obj/machinery/computer/shuttle/white_ship, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"YOb" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/device/radio, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"YOc" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"YOd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side{ + dir = 6 + }, +/area/shuttle/abandoned) +"YOe" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOf" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOg" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOh" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOi" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOj" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOk" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOl" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOm" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOn" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOo" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOp" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"YOq" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"YOr" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"YOs" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"YOt" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"YOu" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"YOv" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) (1,1,1) = {" aaa @@ -124240,19 +127144,19 @@ aNF aPi aNV aSK -aIU +YOq aWc aNV aSK -aIU +YOs aWc aNV aSK -aIU +YOu aWc aNV aWc -aIU +YOv aSK aNV aaH @@ -130347,28 +133251,28 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGW +YHl +YHA +YHP +YIe +YIt +YII +YIX +YJm +YJB +YJQ +YKf +YKu +YKJ +YKY +YLn +YLC +YLR +YMg +YMv +YMK +YMZ aaa aaa aaa @@ -130603,29 +133507,29 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGP +YGX +YHm +YHB +YHQ +YIf +YIu +YIJ +YIY +YJn +YJC +YJR +YKg +YKv +YKK +YKZ +YLo +YLD +YLS +YMh +YMw +YML +YNa aaa aaa aaa @@ -130663,15 +133567,15 @@ aaa aaf aNV aPy -aIU +YOp aTf aNV aWv -aIU +YOr aZy aNV aWv -aIU +YOt aZy aNV aJg @@ -130860,33 +133764,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGQ +YGY +YHn +YHC +YHR +YIg +YIv +YIK +YIZ +YJo +YJD +YJS +YKh +YKw +YKL +YLa +YLp +YLE +YLT +YMi +YMx +YMM +YNb +YNo +YNz +YNK +YNV aaa aaa aaa @@ -131118,33 +134022,33 @@ 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 +YGZ +YHo +YHD +YHS +YIh +YIw +YIL +YJa +YJp +YJE +YJT +YKi +YKx +YKM +YLb +YLq +YLF +YLU +YMj +YMy +YMN +YNc +YNp +YNA +YNL +YNW +YOg aaa aaa aaa @@ -131375,33 +134279,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YHa +YHp +YHE +YHT +YIi +YIx +YIM +YJb +YJq +YJF +YJU +YKj +YKy +YKN +YLc +YLr +YLG +YLV +YMk +YMz +YMO +YNd +YNq +YNB +YNM +YNX +YOh aaa aaa aaa @@ -131632,33 +134536,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YHb +YHq +YHF +YHU +YIj +YIy +YIN +YJc +YJr +YJG +YJV +YKk +YKz +YKO +YLd +YLs +YLH +YLW +YMl +YMA +YMP +YNe +YNr +YNC +YNN +YNY +YOi aaa aaa aaa @@ -131888,34 +134792,34 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGR +YHc +YHr +YHG +YHV +YIk +YIz +YIO +YJd +YJs +YJH +YJW +YKl +YKA +YKP +YLe +YLt +YLI +YLX +YMm +YMB +YMQ +YNf +YNs +YND +YNO +YNZ +YOj aaa aaa aaa @@ -132145,34 +135049,34 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGS +YHd +YHs +YHH +YHW +YIl +YIA +YIP +YJe +YJt +YJI +YJX +YKm +YKB +YKQ +YLf +YLu +YLJ +YLY +YMn +YMC +YMR +YNg +YNt +YNE +YNP +YOa +YOk aaa aaa aaa @@ -132402,34 +135306,34 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGT +YHe +YHt +YHI +YHX +YIm +YIB +YIQ +YJf +YJu +YJJ +YJY +YKn +YKC +YKR +YLg +YLv +YLK +YLZ +YMo +YMD +YMS +YNh +YNu +YNF +YNQ +YOb +YOl aaa aaa aaa @@ -132660,33 +135564,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YHf +YHu +YHJ +YHY +YIn +YIC +YIR +YJg +YJv +YJK +YJZ +YKo +YKD +YKS +YLh +YLw +YLL +YMa +YMp +YME +YMT +YNi +YNv +YNG +YNR +YOc +YOm aaa aaa aaa @@ -132917,33 +135821,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YHg +YHv +YHK +YHZ +YIo +YID +YIS +YJh +YJw +YJL +YKa +YKp +YKE +YKT +YLi +YLx +YLM +YMb +YMq +YMF +YMU +YNj +YNw +YNH +YNS +YOd +YOn aaa aaa aaa @@ -133174,33 +136078,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YHh +YHw +YHL +YIa +YIp +YIE +YIT +YJi +YJx +YJM +YKb +YKq +YKF +YKU +YLj +YLy +YLN +YMc +YMr +YMG +YMV +YNk +YNx +YNI +YNT +YOe +YOo aaa aaa aaa @@ -133430,33 +136334,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGU +YHi +YHx +YHM +YIb +YIq +YIF +YIU +YJj +YJy +YJN +YKc +YKr +YKG +YKV +YLk +YLz +YLO +YMd +YMs +YMH +YMW +YNl +YNy +YNJ +YNU +YOf aaa aaa aaa @@ -133687,29 +136591,29 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGV +YHj +YHy +YHN +YIc +YIr +YIG +YIV +YJk +YJz +YJO +YKd +YKs +YKH +YKW +YLl +YLA +YLP +YMe +YMt +YMI +YMX +YNm aaa aaa aaa @@ -133945,28 +136849,28 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YHk +YHz +YHO +YId +YIs +YIH +YIW +YJl +YJA +YJP +YKe +YKt +YKI +YKX +YLm +YLB +YLQ +YMf +YMu +YMJ +YMY +YNn aaa aaa aaa diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index e3fa7768e5..7a04dc6d06 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -71801,10 +71801,7 @@ /turf/open/floor/plating, /area/chapel/main) "cRM" = ( -/obj/machinery/processor{ - desc = "A machine used to process slimes and retrieve their extract."; - name = "Slime Processor" - }, +/obj/machinery/processor/slime, /obj/effect/turf_decal/stripes/corner{ dir = 2 }, @@ -73037,7 +73034,8 @@ frequency = 1441; id = "n2_in" }, -/turf/open/floor/plating/airless, +/obj/structure/lattice/catwalk, +/turf/open/space, /area/engine/atmos) "cVB" = ( /obj/structure/chair{ @@ -80789,6 +80787,34 @@ }, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) +"EDo" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"EDp" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"EDq" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"EDr" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"EDs" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"EDt" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"EDu" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) (1,1,1) = {" aaa @@ -122316,7 +122342,7 @@ cbe ccO bza aaf -bza +EDs chO cjd ckG @@ -123344,7 +123370,7 @@ cbi ccS bza aaf -bza +EDt chR cjg ckH @@ -124372,7 +124398,7 @@ cVJ ccQ bza aaf -bza +EDu chU cjj ckJ @@ -125894,19 +125920,19 @@ aaa aaf bAR dBC -bza +EDo bFZ bAR bCA -bza +EDp bFZ bAR bCA -bza +EDq bFZ bAR bCA -bza +EDr bFZ bAR aaf diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 96f40187c7..a28ea84b3c 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -27869,10 +27869,7 @@ /turf/open/floor/plasteel/white, /area/science/explab) "bqv" = ( -/obj/machinery/processor{ - desc = "A machine used to process slimes and retrieve their extract."; - name = "Slime Processor" - }, +/obj/machinery/processor/slime, /obj/machinery/light{ dir = 8 }, diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm new file mode 100644 index 0000000000..f1e47029d4 --- /dev/null +++ b/_maps/shuttles/whiteship_delta.dmm @@ -0,0 +1,2802 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/open/space/basic, +/area/space) +"ab" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"ac" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"ad" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 2; + name = "External Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"ae" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"af" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"ag" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"ah" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"ai" = ( +/obj/structure/window/reinforced, +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"aj" = ( +/obj/structure/closet/firecloset/full, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"ak" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"al" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel/greenblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"am" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/circuitboard/machine/hydroponics, +/turf/open/floor/plasteel/greenblue/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"an" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 1; + glass = 1; + name = "Internal Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"ao" = ( +/obj/structure/closet/secure_closet/freezer/kitchen/mining, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/flour, +/turf/open/floor/plasteel/greenblue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"ap" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"aq" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"ar" = ( +/obj/structure/closet/emcloset, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"as" = ( +/obj/structure/closet/crate{ + name = "emergency supplies crate" + }, +/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/emergency, +/obj/item/device/flashlight/flare{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/flashlight/flare{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/crowbar, +/obj/item/wrench, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/extinguisher, +/obj/item/extinguisher, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"at" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/box/hug/medical, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"au" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_maintenance{ + name = "Maintenance" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"av" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"aw" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"ax" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"ay" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"az" = ( +/obj/structure/sink/kitchen{ + pixel_z = 30 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"aA" = ( +/obj/machinery/door/airlock/glass_maintenance{ + name = "Maintenance" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"aB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"aC" = ( +/obj/structure/closet/crate{ + name = "spare equipment crate" + }, +/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/relic, +/obj/item/device/t_scanner, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 4 + }, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"aD" = ( +/obj/machinery/vending/hydroseeds, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"aE" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/stack/sheet/metal/fifty, +/obj/item/circuitboard/machine/hydroponics, +/obj/item/circuitboard/machine/gibber, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/green/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"aF" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"aG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner, +/area/shuttle/abandoned) +"aH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"aI" = ( +/obj/structure/closet/wardrobe, +/obj/item/clothing/under/trek/command/next, +/obj/item/clothing/under/trek/command/next, +/obj/item/clothing/under/trek/engsec/next, +/obj/item/clothing/under/trek/engsec/next, +/obj/item/clothing/under/trek/medsci/next, +/obj/item/clothing/under/trek/medsci/next, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/spawner/lootdrop/costume, +/obj/item/clothing/under/rank/centcom_commander{ + desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; + name = "\improper dusty old CentCom jumpsuit" + }, +/obj/item/clothing/under/rank/centcom_officer{ + desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; + name = "\improper dusty old CentCom jumpsuit" + }, +/obj/item/clothing/under/rank/centcom_officer{ + desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; + name = "\improper dusty old CentCom jumpsuit" + }, +/obj/item/clothing/head/centhat{ + desc = "There's a gouge through the top where something has clawed clean through it. Whoever was wearing it probably doesn't need a hat any more."; + name = "\improper damaged CentCom hat" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"aJ" = ( +/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"aK" = ( +/obj/item/storage/bag/plants/portaseeder, +/obj/structure/table, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 13; + pixel_y = 5 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/rh{ + pixel_x = -2; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"aL" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"aM" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"aN" = ( +/obj/item/soap, +/obj/structure/curtain, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/shower{ + pixel_y = 15 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/abandoned) +"aO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"aP" = ( +/obj/structure/table, +/obj/item/storage/pill_bottle/dice, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"aQ" = ( +/obj/structure/table, +/obj/item/wrench, +/obj/item/crowbar, +/obj/item/clothing/suit/apron, +/obj/item/shovel/spade, +/obj/item/cultivator, +/obj/item/device/plant_analyzer, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/wirecutters, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"aR" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/box/donkpockets, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"aS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"aT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/abandoned) +"aU" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/abandoned) +"aV" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/mopbucket, +/turf/open/floor/plasteel/greenblue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"aW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"aX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"aY" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/corner, +/area/shuttle/abandoned) +"aZ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + name = "Laborotary" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"ba" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"bb" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/toy/cards/deck, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"bc" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"bd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + glass = 1; + name = "Dormitory"; + opacity = 0 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"be" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"bf" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/gun/energy/floragun, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bg" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"bh" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"bi" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/bed, +/turf/open/floor/plasteel/greenblue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"bj" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/mop, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"bk" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/device/gps{ + gpstag = "ITVSAC"; + pixel_x = -1; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"bl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bm" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"bn" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/obj/structure/mirror{ + pixel_x = -30 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bo" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/bikehorn/rubberducky, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"bp" = ( +/obj/structure/urinal{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bq" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"br" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + glass = 1; + name = "Crew Quarters"; + opacity = 0 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"bs" = ( +/obj/machinery/vending/boozeomat, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"bt" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"bu" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/latex/nitrile, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/suit/apron/surgical, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"bv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"bw" = ( +/obj/structure/closet/crate/freezer/blood, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"bx" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/clothing/head/helmet/swat/nanotrasen, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"by" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/built{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bz" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/clothing/gloves/color/black, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"bA" = ( +/obj/structure/table/optable, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/defibrillator/loaded, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"bB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"bC" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"bD" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/obj/structure/table, +/obj/item/clothing/suit/armor/vest, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"bE" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/obj/structure/table, +/obj/item/gun/energy/e_gun/mini, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"bF" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"bG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"bH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/bot, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"bI" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"bJ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/computer, +/obj/item/circuitboard/computer/operating, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"bK" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"bL" = ( +/obj/machinery/sleeper{ + icon_state = "sleeper-open"; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"bM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/arrival/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"bN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/suit/armor/vest, +/obj/effect/decal/cleanable/blood/gibs/body, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/crowbar/red, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bP" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 4; + glass = 1; + name = "Internal Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"bQ" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 8; + name = "External Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"bR" = ( +/obj/machinery/iv_drip, +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = -28; + req_access_txt = "0"; + use_power = 0 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"bS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"bT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"bU" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_medical{ + id_tag = null; + name = "Infirmary"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"bV" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/arrival{ + dir = 8 + }, +/area/shuttle/abandoned) +"bW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/head/helmet/swat/nanotrasen, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bY" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"bZ" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"ca" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct, +/turf/open/floor/plasteel/whiteblue/side, +/area/shuttle/abandoned) +"cb" = ( +/obj/structure/closet/secure_closet/medical2{ + req_access = null + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/glasses/hud/health/sunglasses, +/turf/open/floor/plasteel/whiteblue/side, +/area/shuttle/abandoned) +"cc" = ( +/obj/structure/sign/bluecross_2, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"cd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/arrival/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"ce" = ( +/obj/structure/sign/engineering, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"cf" = ( +/obj/machinery/autolathe, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"cg" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/tank_dispenser, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"ch" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"ci" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cj" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/gibs/down, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"ck" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/closet/crate/science, +/obj/effect/decal/cleanable/leaper_sludge, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cm" = ( +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/rglass{ + amount = 20 + }, +/obj/item/stack/sheet/mineral/titanium/fifty, +/turf/open/floor/plasteel/yellow/corner, +/area/shuttle/abandoned) +"cn" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/rglass{ + amount = 20 + }, +/obj/item/clothing/head/welding, +/obj/structure/light_construct{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"co" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"cp" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cq" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"cr" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"cs" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"ct" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"cu" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/paper/crumpled/bloody{ + info = "Your vessel will be transporting artifact E-395 to our nearby research station. Under no circumstances is the container to be opened. Half of the payment will be given now, rest upon completion. In the event of containment breach--" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cw" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"cx" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_engineering{ + name = "Engineering Storage" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"cy" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/head/welding, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"cz" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"cA" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/research{ + glass = 1; + name = "Research Lab" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"cB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/purple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"cC" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/gloves/color/black, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cD" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/greenglow, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cE" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/airlock_painter, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/yellow/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"cF" = ( +/obj/structure/closet/toolcloset, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"cG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/rods/twentyfive, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"cH" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/structure/light_construct/small, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cI" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/computer, +/obj/item/stock_parts/console_screen, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"cJ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/circuitboard/machine/circuit_imprinter, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"cK" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/machine, +/turf/open/floor/plasteel/whitepurple/corner, +/area/shuttle/abandoned) +"cL" = ( +/obj/structure/sign/science, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"cM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"cN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cP" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/machine, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"cQ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/machine, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"cR" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"cS" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 8; + name = "External Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/docking_port/mobile{ + dheight = 0; + dir = 8; + dwidth = 11; + height = 15; + id = "whiteship"; + launch_status = 0; + name = "White-Ship"; + port_direction = 8; + preferred_direction = 8; + roundstart_move = "whiteship_away"; + timid = 1; + width = 32 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"cT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"cU" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plasteel/whitepurple/side, +/area/shuttle/abandoned) +"cV" = ( +/obj/structure/closet/crate/science{ + name = "spare circuit boards crate" + }, +/obj/item/circuitboard/computer/rdconsole, +/obj/item/circuitboard/machine/protolathe, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/reagent_containers/glass/beaker/sulphuric, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 6 + }, +/area/shuttle/abandoned) +"cW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/built, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"cX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"cY" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cZ" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"da" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"db" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_command{ + name = "Bridge"; + welded = 1 + }, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"dc" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/cobweb, +/obj/item/stack/spacecash/c1000, +/obj/item/stack/spacecash/c1000, +/turf/open/floor/plasteel/blue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"dd" = ( +/obj/structure/closet/crate, +/obj/item/paper_bin, +/obj/item/stack/sheet/metal/twenty, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/under/gimmick/rank/captain/suit, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"de" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/device/megaphone, +/turf/open/floor/plasteel/blue/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"df" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/built{ + dir = 1 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"dg" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel/blue/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"dh" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/device/camera, +/turf/open/floor/plasteel/blue/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"di" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/obj/item/phone, +/turf/open/floor/plasteel/blue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"dj" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/gibs/torso, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"dk" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/shard, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"dl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"dm" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"dn" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/pen/fountain/captain, +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"do" = ( +/obj/structure/chair/comfy/black, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"dp" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"dq" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/photo_album, +/turf/open/floor/plasteel/blue/corner, +/area/shuttle/abandoned) +"dr" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side{ + dir = 6 + }, +/area/shuttle/abandoned) +"ds" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/fancy/cigarettes/cigars/cohiba, +/turf/open/floor/plasteel/blue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"dt" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ + x_offset = -7; + y_offset = -8 + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"du" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/device/pda/clear, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"dv" = ( +/obj/machinery/computer/shuttle/white_ship, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"dw" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/device/radio, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"dx" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) + +(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 +"} +(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 +"} +(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 +"} +(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 +"} +(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 +"} +(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 +"} +(7,1,1) = {" +aa +aa +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +bq +bq +ae +ae +ae +ae +bq +bq +bq +ae +ae +aa +aa +aa +aa +aa +aa +"} +(8,1,1) = {" +aa +ab +af +aj +as +ae +aI +aO +aV +ba +bi +ae +bu +bA +bJ +bR +bZ +ae +cq +cz +cI +cP +cT +ae +aa +aa +aa +aa +aa +aa +"} +(9,1,1) = {" +aa +ab +af +ak +at +ae +aJ +aO +ap +bb +aH +ae +bv +bB +bK +bS +ca +ae +cr +bT +cJ +bT +cU +ae +ae +ae +bq +bq +aa +aa +"} +(10,1,1) = {" +aa +aa +ae +ae +au +ac +ac +aP +ap +bc +bj +ae +bw +bC +bL +bT +cb +ae +cs +bT +cK +cQ +cV +ae +dc +di +dm +bq +bq +aa +"} +(11,1,1) = {" +aa +aa +ae +al +av +aD +ac +ae +ae +bd +ae +ae +ae +ae +bq +bU +cc +ae +bq +cA +cL +ae +ae +ae +dd +bc +cX +ds +bq +aa +"} +(12,1,1) = {" +aa +aa +ae +am +aw +aE +aK +aQ +aW +be +bk +bq +bx +bD +bM +bV +cd +ci +ct +cB +cM +av +av +db +bc +bc +dn +dt +bq +aa +"} +(13,1,1) = {" +aa +ac +ac +ac +ax +aB +av +aR +av +bf +av +br +av +aB +bN +bW +av +cj +cu +cC +cN +cR +aG +ae +de +dj +bc +du +bq +aa +"} +(14,1,1) = {" +aa +ad +ag +an +ay +av +aL +av +aB +av +bl +bs +by +aB +aB +av +av +ck +aB +ck +av +av +cW +ae +df +dk +do +dv +bq +aa +"} +(15,1,1) = {" +aa +ac +ah +ac +az +aF +av +av +aX +av +av +br +av +av +bO +aB +av +cl +cv +cD +av +av +cX +ae +ax +bc +bc +dw +bq +aa +"} +(16,1,1) = {" +aa +aa +ae +ao +ax +aG +aM +aS +aY +bg +bm +bq +bz +bE +av +bX +av +cm +cw +cE +cO +av +cY +db +bc +bc +dp +dx +bq +aa +"} +(17,1,1) = {" +aa +aa +ae +ap +av +aH +ac +ae +ae +aZ +ae +ae +ae +ae +bP +ae +ce +bq +cx +ae +ae +bP +ae +ae +dg +bc +dq +dr +bq +aa +"} +(18,1,1) = {" +aa +aa +ae +ae +aA +ac +ac +aT +aZ +bc +bn +bn +ae +bF +bc +ae +cf +cn +bc +cF +ae +bc +cZ +ae +dh +dl +dr +bq +bq +aa +"} +(19,1,1) = {" +aa +ab +af +aq +aB +ae +ae +ae +ae +bh +bo +bt +ae +bG +bc +bY +cg +co +cy +cG +bY +bc +bt +ae +ae +ae +bq +bq +aa +aa +"} +(20,1,1) = {" +aa +ab +ai +ar +aC +ae +aN +aU +aZ +bc +bp +bp +ae +bH +bc +ae +ch +cp +cp +cH +ae +bc +da +ae +aa +aa +aa +aa +aa +aa +"} +(21,1,1) = {" +aa +aa +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +bI +bQ +ae +ae +bq +bq +ae +ae +cS +bI +ae +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 +"} +(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 +"} +(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 +"} +(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 +"} +(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 +"} +(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 +"} +(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 +"} +(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 +"} +(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 +"} diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm index 5b62e1e987..ccd05adf6a 100644 --- a/_maps/shuttles/whiteship_meta.dmm +++ b/_maps/shuttles/whiteship_meta.dmm @@ -297,7 +297,7 @@ name = "dust" }, /obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at."; + desc = "They look like human remains, and have clearly been gnawed at." }, /obj/item/gun/energy/laser/retro, /turf/open/floor/mineral/titanium/blue, @@ -366,7 +366,7 @@ name = "dust" }, /obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at."; + desc = "They look like human remains, and have clearly been gnawed at." }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) @@ -433,7 +433,7 @@ }, /obj/item/soap/nanotrasen, /obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at."; + desc = "They look like human remains, and have clearly been gnawed at." }, /obj/effect/decal/cleanable/blood/gibs/old, /turf/open/floor/mineral/titanium, @@ -929,7 +929,7 @@ name = "dust" }, /obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at."; + desc = "They look like human remains, and have clearly been gnawed at." }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) @@ -1048,7 +1048,7 @@ name = "\improper damaged CentCom hat" }, /obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at."; + desc = "They look like human remains, and have clearly been gnawed at." }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) @@ -1451,7 +1451,7 @@ name = "dust" }, /obj/effect/decal/remains/xeno{ - desc = "A pile of remains that look vaguely humanoid. The skull is abnormally elongated, and there are burns through some of the other bones."; + desc = "A pile of remains that look vaguely humanoid. The skull is abnormally elongated, and there are burns through some of the other bones." }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm index 9f3827e5c3..e9489df641 100644 --- a/_maps/templates/shelter_2.dmm +++ b/_maps/templates/shelter_2.dmm @@ -214,9 +214,9 @@ (1,1,1) = {" a d -c +a d -c +a d a "} @@ -230,13 +230,13 @@ y C "} (3,1,1) = {" -c +a f l l u z -c +a "} (4,1,1) = {" b @@ -248,13 +248,13 @@ A D "} (5,1,1) = {" -c +a h n r w A -c +a "} (6,1,1) = {" b @@ -268,9 +268,9 @@ E (7,1,1) = {" a j -c +a j -c +a j a "} diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 2a198947dc..833aaa62cb 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -116,17 +116,17 @@ #define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. -#define ADMIN_QUE(user) "(?)" -#define ADMIN_FLW(user) "(FLW)" -#define ADMIN_PP(user) "(PP)" -#define ADMIN_VV(atom) "(VV)" -#define ADMIN_SM(user) "(SM)" -#define ADMIN_TP(user) "(TP)" -#define ADMIN_KICK(user) "(KICK)" -#define ADMIN_CENTCOM_REPLY(user) "(RPLY)" -#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" -#define ADMIN_SC(user) "(SC)" -#define ADMIN_SMITE(user) "(SMITE)" +#define ADMIN_QUE(user) "(?)" +#define ADMIN_FLW(user) "(FLW)" +#define ADMIN_PP(user) "(PP)" +#define ADMIN_VV(atom) "(VV)" +#define ADMIN_SM(user) "(SM)" +#define ADMIN_TP(user) "(TP)" +#define ADMIN_KICK(user) "(KICK)" +#define ADMIN_CENTCOM_REPLY(user) "(RPLY)" +#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" +#define ADMIN_SC(user) "(SC)" +#define ADMIN_SMITE(user) "(SMITE)" #define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]" #define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]" #define ADMIN_SET_SD_CODE "(SETCODE)" @@ -135,7 +135,7 @@ #define ADMIN_JMP(src) "(JMP)" #define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" #define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" -#define ADMIN_INDIVIDUALLOG(user) "(LOGS)" +#define ADMIN_INDIVIDUALLOG(user) "(LOGS)" #define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt" #define ADMIN_PUNISHMENT_BRAINDAMAGE "Brain damage" diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 87f16da081..c919e0ff86 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -28,6 +28,7 @@ #define NORMPIPERATE 30 //pipe-insulation rate divisor #define HEATPIPERATE 8 //heat-exch pipe insulation #define FLOWFRAC 0.99 //fraction of gas transfered per process +#define TANK_MELT_TEMPERATURE 1000000 #define TANK_LEAK_PRESSURE (30.*ONE_ATMOSPHERE) //Tank starts leaking #define TANK_RUPTURE_PRESSURE (35.*ONE_ATMOSPHERE) //Tank spills all contents into atmosphere #define TANK_FRAGMENT_PRESSURE (40.*ONE_ATMOSPHERE) //Boom 3x3 base explosion diff --git a/code/__DEFINES/clockcult.dm b/code/__DEFINES/clockcult.dm index 5f167bf96c..fe804c44f9 100644 --- a/code/__DEFINES/clockcult.dm +++ b/code/__DEFINES/clockcult.dm @@ -66,13 +66,10 @@ GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not us #define ARK_SUMMON_COST 5 //how many of each component an Ark costs to summon -#define ARK_CONSUME_COST 15 //how many of each component an Ark needs to consume to activate - //Objective text define #define CLOCKCULT_OBJECTIVE "Construct the Ark of the Clockwork Justicar and free Ratvar." //misc clockcult stuff -#define MARAUDER_EMERGE_THRESHOLD 65 //marauders cannot emerge unless host is at this% or less health #define SIGIL_ACCESS_RANGE 2 //range at which transmission sigils can access power @@ -83,3 +80,9 @@ GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not us #define CLOCKWORK_ARMOR_COOLDOWN 1800 //The cooldown period between summoning suits of clockwork armor #define RATVARIAN_SPEAR_COOLDOWN 300 //The cooldown period between summoning another Ratvarian spear + +#define MARAUDER_SCRIPTURE_SCALING_THRESHOLD 200 //The amount of deciseconds that must pass before marauder scripture will not gain a recital penalty + +#define MARAUDER_SCRIPTURE_SCALING_TIME 50 //The amount of extra deciseconds tacked on to the marauder scripture recital time per recent marauder + +#define MARAUDER_SCRIPTURE_SCALING_MAX 300 //The maximum extra time applied to the marauder scripture diff --git a/code/__DEFINES/contracts.dm b/code/__DEFINES/contracts.dm index e740be79dd..b600a5fdc0 100644 --- a/code/__DEFINES/contracts.dm +++ b/code/__DEFINES/contracts.dm @@ -28,7 +28,7 @@ #define BAN_CHAPEL "chapel" #define BAN_HURTPRIEST "hurtpriest" #define BAN_AVOIDWATER "avoidwater" -#define BAN_STRIKEUNCONCIOUS "strikeunconcious" +#define BAN_STRIKEUNCONSCIOUS "strikeunconscious" #define BAN_HURTLIZARD "hurtlizard" #define BAN_HURTANIMAL "hurtanimal" diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 37566258a4..a1842648ac 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -161,3 +161,70 @@ #define TINT_DARKENED 2 //Threshold of tint level to apply weld mask overlay #define TINT_BLIND 3 //Threshold of tint level to obscure vision fully + +//Allowed equipment lists for security vests and hardsuits. + +GLOBAL_LIST_INIT(advanced_hardsuit_allowed, typecacheof(list( + /obj/item/ammo_box, + /obj/item/ammo_casing, + /obj/item/device/flashlight, + /obj/item/gun, + /obj/item/melee/baton, + /obj/item/reagent_containers/spray/pepper, + /obj/item/restraints/handcuffs, + /obj/item/tank/internals))) + +GLOBAL_LIST_INIT(security_hardsuit_allowed, typecacheof(list( + /obj/item/ammo_box, + /obj/item/ammo_casing, + /obj/item/device/flashlight, + /obj/item/gun/ballistic, + /obj/item/gun/energy, + /obj/item/melee/baton, + /obj/item/reagent_containers/spray/pepper, + /obj/item/restraints/handcuffs, + /obj/item/tank/internals))) + +GLOBAL_LIST_INIT(detective_vest_allowed, typecacheof(list( + /obj/item/ammo_box, + /obj/item/ammo_casing, + /obj/item/device/detective_scanner, + /obj/item/device/flashlight, + /obj/item/device/taperecorder, + /obj/item/gun/ballistic, + /obj/item/gun/energy, + /obj/item/lighter, + /obj/item/melee/baton, + /obj/item/melee/classic_baton, + /obj/item/reagent_containers/spray/pepper, + /obj/item/restraints/handcuffs, + /obj/item/storage/fancy/cigarettes, + /obj/item/tank/internals/emergency_oxygen))) + +GLOBAL_LIST_INIT(security_vest_allowed, typecacheof(list( + /obj/item/ammo_box, + /obj/item/ammo_casing, + /obj/item/device/flashlight, + /obj/item/gun/ballistic, + /obj/item/gun/energy, + /obj/item/kitchen/knife/combat, + /obj/item/melee/baton, + /obj/item/melee/classic_baton/telescopic, + /obj/item/reagent_containers/spray/pepper, + /obj/item/restraints/handcuffs, + /obj/item/tank/internals/emergency_oxygen))) + +GLOBAL_LIST_INIT(security_wintercoat_allowed, typecacheof(list( + /obj/item/ammo_box, + /obj/item/ammo_casing, + /obj/item/device/flashlight, + /obj/item/storage/fancy/cigarettes, + /obj/item/gun/ballistic, + /obj/item/gun/energy, + /obj/item/lighter, + /obj/item/melee/baton, + /obj/item/melee/classic_baton/telescopic, + /obj/item/reagent_containers/spray/pepper, + /obj/item/restraints/handcuffs, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/toy))) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index fbd15e1ef6..40dd7b5f35 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -8,7 +8,7 @@ #define ismovableatom(A) (istype(A, /atom/movable)) -#define isatom(A) (istype(A, /atom)) +#define isatom(A) (isloc(A)) //Turfs //#define isturf(A) (istype(A, /turf)) This is actually a byond built-in. Added here for completeness sake. @@ -183,4 +183,4 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( /obj/item/stack/sheet/plasmaglass, /obj/item/stack/sheet/plasmarglass))) -#define is_glass_sheet(O) (is_type_in_typecache(O, GLOB.glass_sheet_types)) \ No newline at end of file +#define is_glass_sheet(O) (is_type_in_typecache(O, GLOB.glass_sheet_types)) diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index c92cb5f5a7..411abf5701 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -13,6 +13,7 @@ //#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define #define MID_TURF_LAYER 2.02 #define HIGH_TURF_LAYER 2.03 +#define TURF_DECAL_LAYER 2.039 //Makes turf decals appear in DM how they will look inworld. #define ABOVE_OPEN_TURF_LAYER 2.04 #define CLOSED_TURF_LAYER 2.05 #define BULLET_HOLE_LAYER 2.06 @@ -20,7 +21,6 @@ #define LATTICE_LAYER 2.2 #define DISPOSAL_PIPE_LAYER 2.3 #define GAS_PIPE_HIDDEN_LAYER 2.35 -#define TURF_DECAL_LAYER 2.39 #define WIRE_LAYER 2.4 #define WIRE_TERMINAL_LAYER 2.45 #define GAS_SCRUBBER_LAYER 2.46 diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 0fdfbaca1c..634cfb8cda 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -466,9 +466,12 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE //Dummy mob reserve slots #define DUMMY_HUMAN_SLOT_PREFERENCES "dummy_preference_preview" + #define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation" #define PR_ANNOUNCEMENTS_PER_ROUND 5 //The number of unique PR announcements allowed per round //This makes sure that a single person can only spam 3 reopens and 3 closes before being ignored -#define MAX_PROC_DEPTH 195 // 200 proc calls deep and shit breaks, this is a bit lower to give some safety room \ No newline at end of file +#define MAX_PROC_DEPTH 195 // 200 proc calls deep and shit breaks, this is a bit lower to give some safety room + +#define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation" diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 95d26de0ce..d30eb36132 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -37,9 +37,9 @@ #define EAVESDROP_EXTRA_RANGE 1 //how much past the specified message_range does the message get starred, whispering only // A link given to ghost alice to follow bob -#define FOLLOW_LINK(alice, bob) "(F)" -#define TURF_LINK(alice, turfy) "(T)" -#define FOLLOW_OR_TURF_LINK(alice, bob, turfy) "(F)" +#define FOLLOW_LINK(alice, bob) "(F)" +#define TURF_LINK(alice, turfy) "(T)" +#define FOLLOW_OR_TURF_LINK(alice, bob, turfy) "(F)" #define LOGSAY "say" #define LOGWHISPER "whisper" diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm index d3867e5257..1e1179606c 100644 --- a/code/__DEFINES/sound.dm +++ b/code/__DEFINES/sound.dm @@ -1,23 +1,69 @@ -//max channel is 1024. Only go lower from here, because byond tends to pick the first availiable channel to play sounds on -#define CHANNEL_LOBBYMUSIC 1024 -#define CHANNEL_ADMIN 1023 -#define CHANNEL_VOX 1022 -#define CHANNEL_JUKEBOX 1021 -#define CHANNEL_JUSTICAR_ARK 1020 -#define CHANNEL_HEARTBEAT 1019 //sound channel for heartbeats -#define CHANNEL_AMBIENCE 1018 -#define CHANNEL_BUZZ 1017 -#define CHANNEL_BICYCLE 1016 - -//Citadel code -#define CHANNEL_PRED 1015 -#define CHANNEL_PREYLOOP 1014 - -//THIS SHOULD ALWAYS BE THE LOWEST ONE! -//KEEP IT UPDATED - -#define CHANNEL_HIGHEST_AVAILABLE 1013 - -#define CHANNEL_HIGHEST_AVAILABLE 1017 -#define SOUND_MINIMUM_PRESSURE 10 -#define FALLOFF_SOUNDS 0.5 +//max channel is 1024. Only go lower from here, because byond tends to pick the first availiable channel to play sounds on +#define CHANNEL_LOBBYMUSIC 1024 +#define CHANNEL_ADMIN 1023 +#define CHANNEL_VOX 1022 +#define CHANNEL_JUKEBOX 1021 +#define CHANNEL_JUSTICAR_ARK 1020 +#define CHANNEL_HEARTBEAT 1019 //sound channel for heartbeats +#define CHANNEL_AMBIENCE 1018 +#define CHANNEL_BUZZ 1017 +#define CHANNEL_BICYCLE 1016 + +//Citadel code +#define CHANNEL_PRED 1015 +#define CHANNEL_PREYLOOP 1014 + +//THIS SHOULD ALWAYS BE THE LOWEST ONE! +//KEEP IT UPDATED + +#define CHANNEL_HIGHEST_AVAILABLE 1013 + + +#define SOUND_MINIMUM_PRESSURE 10 +#define FALLOFF_SOUNDS 0.5 + + +//Ambience types + +#define GENERIC list('sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg',\ + 'sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg',\ + 'sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg',\ + 'sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg',\ + 'sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg',\ + 'sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg','sound/ambience/ambigen15.ogg') + +#define HOLY list('sound/ambience/ambicha1.ogg','sound/ambience/ambicha2.ogg','sound/ambience/ambicha3.ogg',\ + 'sound/ambience/ambicha4.ogg', 'sound/ambience/ambiholy.ogg', 'sound/ambience/ambiholy2.ogg',\ + 'sound/ambience/ambiholy3.ogg') + +#define HIGHSEC list('sound/ambience/ambidanger.ogg', 'sound/ambience/ambidanger2.ogg') + +#define RUINS list('sound/ambience/ambimine.ogg', 'sound/ambience/ambicave.ogg', 'sound/ambience/ambiruin.ogg',\ + 'sound/ambience/ambiruin2.ogg', 'sound/ambience/ambiruin3.ogg', 'sound/ambience/ambiruin4.ogg',\ + 'sound/ambience/ambiruin5.ogg', 'sound/ambience/ambiruin6.ogg', 'sound/ambience/ambiruin7.ogg',\ + 'sound/ambience/ambidanger.ogg', 'sound/ambience/ambidanger2.ogg', 'sound/ambience/ambitech3.ogg',\ + 'sound/ambience/ambimystery.ogg', 'sound/ambience/ambimaint1.ogg') + +#define ENGINEERING list('sound/ambience/ambisin1.ogg','sound/ambience/ambisin2.ogg','sound/ambience/ambisin3.ogg','sound/ambience/ambisin4.ogg', 'sound/ambience/ambieng1.ogg',\ + 'sound/ambience/ambiatmos.ogg', 'sound/ambience/ambiatmos2.ogg', 'sound/ambience/ambitech.ogg', 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambitech3.ogg') + +#define MINING list('sound/ambience/ambimine.ogg', 'sound/ambience/ambicave.ogg', 'sound/ambience/ambiruin.ogg',\ + 'sound/ambience/ambiruin2.ogg', 'sound/ambience/ambiruin3.ogg', 'sound/ambience/ambiruin4.ogg',\ + 'sound/ambience/ambiruin5.ogg', 'sound/ambience/ambiruin6.ogg', 'sound/ambience/ambiruin7.ogg',\ + 'sound/ambience/ambidanger.ogg', 'sound/ambience/ambidanger2.ogg', 'sound/ambience/ambimaint1.ogg', 'sound/ambience/ambilava.ogg') + +#define MEDICAL list('sound/ambience/ambinice.ogg') + +#define SPOOKY list('sound/ambience/ambimo1.ogg','sound/ambience/ambimo2.ogg','sound/ambience/ambiruin7.ogg','sound/ambience/ambiruin6.ogg',\ + 'sound/ambience/ambiodd.ogg', 'sound/ambience/ambimystery.ogg') + +#define SPACE list('sound/ambience/ambispace.ogg', 'sound/ambience/ambispace2.ogg', 'sound/ambience/title2.ogg', 'sound/ambience/ambiatmos.ogg') + +#define MAINTENANCE list('sound/ambience/ambimaint1.ogg', 'sound/ambience/ambimaint2.ogg', 'sound/ambience/ambimaint3.ogg', 'sound/ambience/ambimaint4.ogg',\ + 'sound/ambience/ambimaint5.ogg', 'sound/voice/lowHiss2.ogg', 'sound/voice/lowHiss3.ogg', 'sound/voice/lowHiss4.ogg', 'sound/ambience/ambitech2.ogg' ) + +#define AWAY_MISSION list('sound/ambience/ambitech.ogg', 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambiruin.ogg',\ + 'sound/ambience/ambiruin2.ogg', 'sound/ambience/ambiruin3.ogg', 'sound/ambience/ambiruin4.ogg',\ + 'sound/ambience/ambiruin5.ogg', 'sound/ambience/ambiruin6.ogg', 'sound/ambience/ambiruin7.ogg',\ + 'sound/ambience/ambidanger.ogg', 'sound/ambience/ambidanger2.ogg', 'sound/ambience/ambimaint.ogg',\ + 'sound/ambience/ambiatmos.ogg', 'sound/ambience/ambiatmos2.ogg', 'sound/ambience/ambiodd.ogg') diff --git a/code/__DEFINES/tools.dm b/code/__DEFINES/tools.dm new file mode 100644 index 0000000000..554a6b1c43 --- /dev/null +++ b/code/__DEFINES/tools.dm @@ -0,0 +1,5 @@ +#define TOOL_NONE 0 +#define TOOL_CROWBAR 1 +#define TOOL_SCREWDRIVER 2 +#define TOOL_WIRECUTTER 3 +#define TOOL_WRENCH 4 \ No newline at end of file diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index f6ebee85fe..b55ec948b8 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -178,7 +178,7 @@ mob // Send the icon to src's local cache src< 140 || lentext(buffer) <= cullshort || buffer in accepted) + if(!buffer || lentext(buffer) > 280 || lentext(buffer) <= cullshort || buffer in accepted) continue accepted += buffer diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 6b3c03b180..303c6a6846 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1441,4 +1441,18 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) var/time_clock = num2hex(TICK_DELTA_TO_MS(world.tick_usage), 3) - return "{[time_high]-[time_mid]-[GUID_VERSION][time_low]-[GUID_VARIANT][time_clock]-[node_id]}" \ No newline at end of file + return "{[time_high]-[time_mid]-[GUID_VERSION][time_low]-[GUID_VARIANT][time_clock]-[node_id]}" + +// \ref behaviour got changed in 512 so this is necesary to replicate old behaviour. +// If it ever becomes necesary to get a more performant REF(), this lies here in wait +// #define REF(thing) (thing && istype(thing, /datum) && thing:use_tag && thing:tag ? "[thing:tag]" : "\ref[thing]") +/proc/REF(input) + if(istype(input, /datum)) + var/datum/thing = input + if(thing.use_tag) + if(!thing.tag) + WARNING("A ref was requested of an object with use_tag set but no tag: [thing]") + thing.use_tag = FALSE + else + return "\[[url_encode(thing.tag)]\]" + return "\ref[input]" diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index d06c269d28..5df8ab5ee9 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -25,7 +25,7 @@ GLOBAL_LIST_EMPTY(bombers) GLOBAL_PROTECT(bombers) GLOBAL_LIST_EMPTY(admin_log) GLOBAL_PROTECT(admin_log) -GLOBAL_LIST_EMPTY(lastsignalers) //keeps last 100 signals here in format: "[src] used \ref[src] @ location [src.loc]: [freq]/[code]" +GLOBAL_LIST_EMPTY(lastsignalers) //keeps last 100 signals here in format: "[src] used [REF(src)] @ location [src.loc]: [freq]/[code]" GLOBAL_PROTECT(lastsignalers) GLOBAL_LIST_EMPTY(lawchanges) //Stores who uploaded laws to which silicon-based lifeform, and what the law was GLOBAL_PROTECT(lawchanges) diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 14a0c50e7b..80b953111f 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -38,6 +38,8 @@ if(isnull(pixel_turf)) return if(!can_see(A)) + if(isturf(A)) //On unmodified clients clicking the static overlay clicks the turf underneath + return //So there's no point messaging admins message_admins("[key_name_admin(src)] might be running a modified client! (failed can_see on AI click of [A]([ADMIN_COORDJMP(pixel_turf)]))") var/message = "[key_name(src)] might be running a modified client! (failed can_see on AI click of [A]([COORD(pixel_turf)]))" log_admin(message) diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index cd812d10a7..93383c2c49 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -407,16 +407,13 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." textlist += "[i] Scripture: [SSticker.scripture_states[i] ? "UNLOCKED":"LOCKED"]
" var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar if(G) - var/time_info + var/time_info = G.get_arrival_time(FALSE) var/time_name if(G.seconds_until_activation) - time_info = G.seconds_until_activation time_name = "until the Ark activates" else if(G.grace_period) - time_info = G.grace_period time_name = "of grace period remaining" else if(G.progress_in_seconds) - time_info = GATEWAY_RATVAR_ARRIVAL - G.progress_in_seconds time_name = "until the Ark finishes summoning" if(time_info) textlist += "[time_info / 60] minutes [time_name].
" diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 12253cc550..58f0fb18a2 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -1,175 +1,177 @@ - -/mob - var/list/screens = list() - -/mob/proc/overlay_fullscreen(category, type, severity) - var/obj/screen/fullscreen/screen - if(screens[category]) - screen = screens[category] - if(screen.type != type) - clear_fullscreen(category, FALSE) - return .() - else if(!severity || severity == screen.severity) - return null - else - screen = new type() - - screen.icon_state = "[initial(screen.icon_state)][severity]" - screen.severity = severity - - screens[category] = screen - if(client && screen.should_show_to(src)) - client.screen += screen - return screen - -/mob/proc/clear_fullscreen(category, animated = 10) - var/obj/screen/fullscreen/screen = screens[category] - if(!screen) - return - - screens -= category - - if(animated) - animate(screen, alpha = 0, time = animated) - addtimer(CALLBACK(src, .proc/clear_fullscreen_after_animate, screen), animated, TIMER_CLIENT_TIME) - else - if(client) - client.screen -= screen - qdel(screen) - -/mob/proc/clear_fullscreen_after_animate(obj/screen/fullscreen/screen) - if(client) - client.screen -= screen - qdel(screen) - -/mob/proc/clear_fullscreens() - for(var/category in screens) - clear_fullscreen(category) - -/mob/proc/hide_fullscreens() - if(client) - for(var/category in screens) - client.screen -= screens[category] - -/mob/proc/reload_fullscreen() - if(client) - var/obj/screen/fullscreen/screen - for(var/category in screens) - screen = screens[category] - if(screen.should_show_to(src)) - client.screen |= screen - else - client.screen -= screen - -/obj/screen/fullscreen - icon = 'icons/mob/screen_full.dmi' - icon_state = "default" - screen_loc = "CENTER-7,CENTER-7" - layer = FULLSCREEN_LAYER - plane = FULLSCREEN_PLANE - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - var/severity = 0 - var/show_when_dead = FALSE - -/obj/screen/fullscreen/proc/should_show_to(mob/mymob) - if(!show_when_dead && mymob.stat == DEAD) - return FALSE - return TRUE - -/obj/screen/fullscreen/Destroy() - severity = 0 - . = ..() - -/obj/screen/fullscreen/brute - icon_state = "brutedamageoverlay" - layer = UI_DAMAGE_LAYER - plane = FULLSCREEN_PLANE - -/obj/screen/fullscreen/oxy - icon_state = "oxydamageoverlay" - layer = UI_DAMAGE_LAYER - plane = FULLSCREEN_PLANE - -/obj/screen/fullscreen/crit - icon_state = "passage" - layer = CRIT_LAYER - plane = FULLSCREEN_PLANE - -/obj/screen/fullscreen/crit/vision - icon_state = "oxydamageoverlay" - layer = BLIND_LAYER - -/obj/screen/fullscreen/blind - icon_state = "blackimageoverlay" - layer = BLIND_LAYER - plane = FULLSCREEN_PLANE - -/obj/screen/fullscreen/curse - icon_state = "curse" - layer = CURSE_LAYER - plane = FULLSCREEN_PLANE - -/obj/screen/fullscreen/impaired - icon_state = "impairedoverlay" - -/obj/screen/fullscreen/blurry - icon = 'icons/mob/screen_gen.dmi' - screen_loc = "WEST,SOUTH to EAST,NORTH" - icon_state = "blurry" - -/obj/screen/fullscreen/flash - icon = 'icons/mob/screen_gen.dmi' - screen_loc = "WEST,SOUTH to EAST,NORTH" - icon_state = "flash" - -/obj/screen/fullscreen/flash/static - icon = 'icons/mob/screen_gen.dmi' - screen_loc = "WEST,SOUTH to EAST,NORTH" - icon_state = "noise" - -/obj/screen/fullscreen/high - icon = 'icons/mob/screen_gen.dmi' - screen_loc = "WEST,SOUTH to EAST,NORTH" - icon_state = "druggy" - -/obj/screen/fullscreen/color_vision - icon = 'icons/mob/screen_gen.dmi' - screen_loc = "WEST,SOUTH to EAST,NORTH" - icon_state = "flash" - alpha = 80 - -/obj/screen/fullscreen/color_vision/green - color = "#00ff00" - -/obj/screen/fullscreen/color_vision/red - color = "#ff0000" - -/obj/screen/fullscreen/color_vision/blue - color = "#0000ff" - -/obj/screen/fullscreen/lighting_backdrop - icon = 'icons/mob/screen_gen.dmi' - icon_state = "flash" - transform = matrix(200, 0, 0, 0, 200, 0) - plane = LIGHTING_PLANE - blend_mode = BLEND_OVERLAY - show_when_dead = TRUE - -//Provides darkness to the back of the lighting plane -/obj/screen/fullscreen/lighting_backdrop/lit - invisibility = INVISIBILITY_LIGHTING - layer = BACKGROUND_LAYER+21 - color = "#000" - show_when_dead = TRUE - -//Provides whiteness in case you don't see lights so everything is still visible -/obj/screen/fullscreen/lighting_backdrop/unlit - layer = BACKGROUND_LAYER+20 - show_when_dead = TRUE - -/obj/screen/fullscreen/see_through_darkness - icon_state = "nightvision" - plane = LIGHTING_PLANE - layer = LIGHTING_LAYER - blend_mode = BLEND_ADD - show_when_dead = TRUE +/mob + var/list/screens = list() + +/mob/proc/overlay_fullscreen(category, type, severity) + var/obj/screen/fullscreen/screen = screens[category] + if (!screen || screen.type != type) + // needs to be recreated + clear_fullscreen(category, FALSE) + screens[category] = screen = new type() + else if ((!severity || severity == screen.severity) && (!client || screen.screen_loc != "CENTER-7,CENTER-7" || screen.view == client.view)) + // doesn't need to be updated + return screen + + screen.icon_state = "[initial(screen.icon_state)][severity]" + screen.severity = severity + if (client && screen.should_show_to(src)) + client.screen += screen + if (screen.screen_loc == "CENTER-7,CENTER-7" && screen.view != client.view) + var/scale = (1 + 2 * client.view) / 15 + screen.view = client.view + screen.transform = matrix(scale, 0, 0, 0, scale, 0) + + return screen + +/mob/proc/clear_fullscreen(category, animated = 10) + var/obj/screen/fullscreen/screen = screens[category] + if(!screen) + return + + screens -= category + + if(animated) + animate(screen, alpha = 0, time = animated) + addtimer(CALLBACK(src, .proc/clear_fullscreen_after_animate, screen), animated, TIMER_CLIENT_TIME) + else + if(client) + client.screen -= screen + qdel(screen) + +/mob/proc/clear_fullscreen_after_animate(obj/screen/fullscreen/screen) + if(client) + client.screen -= screen + qdel(screen) + +/mob/proc/clear_fullscreens() + for(var/category in screens) + clear_fullscreen(category) + +/mob/proc/hide_fullscreens() + if(client) + for(var/category in screens) + client.screen -= screens[category] + +/mob/proc/reload_fullscreen() + if(client) + var/obj/screen/fullscreen/screen + for(var/category in screens) + screen = screens[category] + if(screen.should_show_to(src)) + client.screen |= screen + else + client.screen -= screen + +/obj/screen/fullscreen + icon = 'icons/mob/screen_full.dmi' + icon_state = "default" + screen_loc = "CENTER-7,CENTER-7" + layer = FULLSCREEN_LAYER + plane = FULLSCREEN_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + var/view = 7 + var/severity = 0 + var/show_when_dead = FALSE + +/obj/screen/fullscreen/proc/should_show_to(mob/mymob) + if(!show_when_dead && mymob.stat == DEAD) + return FALSE + return TRUE + +/obj/screen/fullscreen/Destroy() + severity = 0 + . = ..() + +/obj/screen/fullscreen/brute + icon_state = "brutedamageoverlay" + layer = UI_DAMAGE_LAYER + plane = FULLSCREEN_PLANE + +/obj/screen/fullscreen/oxy + icon_state = "oxydamageoverlay" + layer = UI_DAMAGE_LAYER + plane = FULLSCREEN_PLANE + +/obj/screen/fullscreen/crit + icon_state = "passage" + layer = CRIT_LAYER + plane = FULLSCREEN_PLANE + +/obj/screen/fullscreen/crit/vision + icon_state = "oxydamageoverlay" + layer = BLIND_LAYER + +/obj/screen/fullscreen/blind + icon_state = "blackimageoverlay" + layer = BLIND_LAYER + plane = FULLSCREEN_PLANE + +/obj/screen/fullscreen/curse + icon_state = "curse" + layer = CURSE_LAYER + plane = FULLSCREEN_PLANE + +/obj/screen/fullscreen/impaired + icon_state = "impairedoverlay" + +/obj/screen/fullscreen/blurry + icon = 'icons/mob/screen_gen.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "blurry" + +/obj/screen/fullscreen/flash + icon = 'icons/mob/screen_gen.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "flash" + +/obj/screen/fullscreen/flash/static + icon = 'icons/mob/screen_gen.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "noise" + +/obj/screen/fullscreen/high + icon = 'icons/mob/screen_gen.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "druggy" + +/obj/screen/fullscreen/color_vision + icon = 'icons/mob/screen_gen.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "flash" + alpha = 80 + +/obj/screen/fullscreen/color_vision/green + color = "#00ff00" + +/obj/screen/fullscreen/color_vision/red + color = "#ff0000" + +/obj/screen/fullscreen/color_vision/blue + color = "#0000ff" + +/obj/screen/fullscreen/lighting_backdrop + icon = 'icons/mob/screen_gen.dmi' + icon_state = "flash" + transform = matrix(200, 0, 0, 0, 200, 0) + plane = LIGHTING_PLANE + blend_mode = BLEND_OVERLAY + show_when_dead = TRUE + +//Provides darkness to the back of the lighting plane +/obj/screen/fullscreen/lighting_backdrop/lit + invisibility = INVISIBILITY_LIGHTING + layer = BACKGROUND_LAYER+21 + color = "#000" + show_when_dead = TRUE + +//Provides whiteness in case you don't see lights so everything is still visible +/obj/screen/fullscreen/lighting_backdrop/unlit + layer = BACKGROUND_LAYER+20 + show_when_dead = TRUE + +/obj/screen/fullscreen/see_through_darkness + icon_state = "nightvision" + plane = LIGHTING_PLANE + layer = LIGHTING_LAYER + blend_mode = BLEND_ADD + show_when_dead = TRUE + diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 79271d1d6d..45bfbeb4fa 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -539,7 +539,7 @@ screen_loc = ui_healthdoll /obj/screen/splash - icon = 'config/title_screens/images/title1.dmi' + icon = 'icons/blank_title.png' icon_state = "" screen_loc = "1,1" layer = SPLASHSCREEN_LAYER diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index de1dfdbf67..fce64b36c0 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -1,12 +1,27 @@ /obj/item/proc/melee_attack_chain(mob/user, atom/target, params) - if(pre_attackby(target, user, params)) + if(!tool_check(user, target) && pre_attackby(target, user, params)) // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) var/resolved = target.attackby(src, user, params) if(!resolved && target && !QDELETED(src)) afterattack(target, user, 1, params) // 1: clicking something Adjacent +//Checks if the item can work as a tool, calling the appropriate tool behavior on the target +/obj/item/proc/tool_check(mob/user, atom/target) + switch(tool_behaviour) + if(TOOL_NONE) + return FALSE + if(TOOL_CROWBAR) + return target.crowbar_act(user, src) + if(TOOL_SCREWDRIVER) + return target.screwdriver_act(user, src) + if(TOOL_WRENCH) + return target.wrench_act(user, src) + if(TOOL_WIRECUTTER) + return target.wirecutter_act(user, src) + + // Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. /obj/item/proc/attack_self(mob/user) SendSignal(COMSIG_ITEM_ATTACK_SELF, user) @@ -118,5 +133,4 @@ attack_message = "[user] has [message_verb] [src][message_hit_area] with [I]!" visible_message("[attack_message]", \ "[attack_message]", null, COMBAT_MESSAGE_RANGE) - return 1 - + return 1 \ No newline at end of file diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index 5358073dbe..92dcb9baf0 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -51,6 +51,11 @@ return FALSE return ..() +/datum/config_entry/proc/VASProcCallGuard(str_val) + . = !(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "ValidateAndSet" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") + if(!.) + log_admin_private("Config set of [type] to [str_val] attempted by [key_name(usr)]") + /datum/config_entry/proc/ValidateAndSet(str_val) CRASH("Invalid config entry type!") diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 278424ca79..70be8cfa0c 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -124,7 +124,7 @@ GLOBAL_PROTECT(config_dir) stat("[name]:", statclick) /datum/controller/configuration/proc/Get(entry_type) - if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "\ref[src]") + if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") log_admin_private("Config access of [entry_type] attempted by [key_name(usr)]") return var/datum/config_entry/E = entry_type @@ -137,7 +137,7 @@ GLOBAL_PROTECT(config_dir) return E.value /datum/controller/configuration/proc/Set(entry_type, new_val) - if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Set" && GLOB.LastAdminCalledTargetRef == "\ref[src]") + if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Set" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") log_admin_private("Config rewrite of [entry_type] to [new_val] attempted by [key_name(usr)]") return var/datum/config_entry/E = entry_type diff --git a/code/controllers/configuration/entries/config.dm b/code/controllers/configuration/entries/config.dm index f1ee6a557c..2c7e5c97cf 100644 --- a/code/controllers/configuration/entries/config.dm +++ b/code/controllers/configuration/entries/config.dm @@ -372,3 +372,10 @@ CONFIG_TWEAK(number/mc_tick_rate/ValidateAndSet(str_val)) . = ..() if (.) Master.UpdateTickRate() + +CONFIG_DEF(flag/resume_after_initializations) + +CONFIG_TWEAK(flag/ValidateAndSet(str_val)) + . = ..() + if(. && Master.current_runlevel) + world.sleep_offline = !value diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index ea79ba81f3..29ace9eef3 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -163,9 +163,20 @@ CONFIG_DEF(flag/ooc_during_round) CONFIG_DEF(flag/emojis) CONFIG_DEF(number/run_delay) //Used for modifying movement speed for mobs. + var/static/value_cache = 0 + +CONFIG_TWEAK(number/run_delay/ValidateAndSet()) + . = ..() + if(.) + value_cache = value CONFIG_DEF(number/walk_delay) + var/static/value_cache = 0 +CONFIG_TWEAK(number/walk_delay/ValidateAndSet()) + . = ..() + if(.) + value_cache = value CONFIG_DEF(number/human_delay) //Mob specific modifiers. NOTE: These will affect different mob types in different ways CONFIG_DEF(number/robot_delay) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 852437705b..568257e10f 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -189,10 +189,12 @@ GLOBAL_REAL(Master, /datum/controller/master) = new // Sort subsystems by display setting for easy access. sortTim(subsystems, /proc/cmp_subsystem_display) // Set world options. - world.sleep_offline = 1 + world.sleep_offline = TRUE world.fps = CONFIG_GET(number/fps) var/initialized_tod = REALTIMEOFDAY sleep(1) + if(CONFIG_GET(flag/resume_after_initializations)) + world.sleep_offline = FALSE initializations_finished_with_no_players_logged_in = initialized_tod < REALTIMEOFDAY - 10 // Loop. Master.StartProcessing(0) diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 90690c934a..59b6fc34ef 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -27,7 +27,7 @@ SUBSYSTEM_DEF(air) var/list/hotspots = list() var/list/networks = list() var/list/obj/machinery/atmos_machinery = list() - var/list/pipe_construction_generation_cache = list() + var/list/pipe_init_dirs_cache = list() @@ -377,6 +377,16 @@ SUBSYSTEM_DEF(air) AM.build_network() CHECK_TICK +/datum/controller/subsystem/air/proc/get_init_dirs(type, dir) + if(!pipe_init_dirs_cache[type]) + pipe_init_dirs_cache[type] = list() + + if(!pipe_init_dirs_cache[type]["[dir]"]) + var/obj/machinery/atmospherics/temp = new type(null, FALSE, dir) + pipe_init_dirs_cache[type]["[dir]"] = temp.GetInitDirections() + qdel(temp) + + return pipe_init_dirs_cache[type]["[dir]"] #undef SSAIR_PIPENETS #undef SSAIR_ATMOSMACHINERY diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index 10978b7d32..bbf1fef8d9 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -186,7 +186,7 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table /datum/DBQuery/proc/warn_execute() . = Execute() if(!.) - to_chat(usr, "A SQL error occured during this operation, check the server logs.") + to_chat(usr, "A SQL error occurred during this operation, check the server logs.") /datum/DBQuery/proc/Execute(sql_query = sql, cursor_handler = default_cursor, log_error = TRUE) Close() diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index 73a7041fa0..3aa1747dee 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -133,7 +133,7 @@ SUBSYSTEM_DEF(events) var/magic = "" var/holiday = "" for(var/datum/round_event_control/E in SSevents.control) - dat = "
[E]" + dat = "
[E]" if(E.holidayID) holiday += dat else if(E.wizardevent) diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index ccfc041b21..6203f1b474 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -164,7 +164,7 @@ SUBSYSTEM_DEF(garbage) #endif var/type = D.type var/datum/qdel_item/I = items[type] - testing("GC: -- \ref[D] | [type] was unable to be GC'd --") + testing("GC: -- \ref[src] | [type] was unable to be GC'd --") I.failures++ if (GC_QUEUE_HARDDELETE) HardDelete(D) @@ -263,7 +263,7 @@ SUBSYSTEM_DEF(garbage) // Should be treated as a replacement for the 'del' keyword. // Datums passed to this will be given a chance to clean up references to allow the GC to collect them. -/proc/qdel(datum/D, force=FALSE) +/proc/qdel(datum/D, force=FALSE, ...) if(!istype(D)) del(D) return @@ -278,7 +278,7 @@ SUBSYSTEM_DEF(garbage) D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED var/start_time = world.time var/start_tick = world.tick_usage - var/hint = D.Destroy(force) // Let our friend know they're about to get fucked up. + var/hint = D.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up. if(world.time != start_time) I.slept_destroy++ else diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 0af06dc005..03b7cdc095 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -126,7 +126,7 @@ SUBSYSTEM_DEF(mapping) query_round_map_name.Execute() if(config.minetype != "lavaland") - INIT_ANNOUNCE("WARNING: A map without lavaland set as it's minetype was loaded! This is being ignored! Update the maploader code!") + INIT_ANNOUNCE("WARNING: A map without lavaland set as its minetype was loaded! This is being ignored! Update the maploader code!") CreateSpace(ZLEVEL_SPACEMAX) diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm index 07797d0677..0eafc9f099 100644 --- a/code/controllers/subsystem/pai.dm +++ b/code/controllers/subsystem/pai.dm @@ -109,23 +109,23 @@ SUBSYSTEM_DEF(pai) dat += "

Please configure your pAI personality's options. Remember, what you enter here could determine whether or not the user requesting a personality chooses you!

" dat += "" dat += "" - dat += "" + dat += "" dat += "" - dat += "" + dat += "" dat += "" - dat += "" + dat += "" dat += "" - dat += "" + dat += "" dat += "
Name:[candidate.name]
\[Edit\]What you plan to call yourself. Suggestions: Any character name you would choose for a station character OR an AI.
\[Edit\]What you plan to call yourself. Suggestions: Any character name you would choose for a station character OR an AI.
Description:[candidate.description]
\[Edit\]What sort of pAI you typically play; your mannerisms, your quirks, etc. This can be as sparse or as detailed as you like.
\[Edit\]What sort of pAI you typically play; your mannerisms, your quirks, etc. This can be as sparse or as detailed as you like.
Preferred Role:[candidate.role]
\[Edit\]Do you like to partner with sneaky social ninjas? Like to help security hunt down thugs? Enjoy watching an engineer's back while he saves the station yet again? This doesn't have to be limited to just station jobs. Pretty much any general descriptor for what you'd like to be doing works here.
\[Edit\]Do you like to partner with sneaky social ninjas? Like to help security hunt down thugs? Enjoy watching an engineer's back while he saves the station yet again? This doesn't have to be limited to just station jobs. Pretty much any general descriptor for what you'd like to be doing works here.
OOC Comments:[candidate.comments]
\[Edit\]Anything you'd like to address specifically to the player reading this in an OOC manner. \"I prefer more serious RP.\", \"I'm still learning the interface!\", etc. Feel free to leave this blank if you want.
\[Edit\]Anything you'd like to address specifically to the player reading this in an OOC manner. \"I prefer more serious RP.\", \"I'm still learning the interface!\", etc. Feel free to leave this blank if you want.
" dat += "
" - dat += "

Submit Personality


" - dat += "Save Personality
" - dat += "Load Personality
" + dat += "

Submit Personality


" + dat += "Save Personality
" + dat += "Load Personality
" M << browse(dat, "window=paiRecruit") @@ -182,7 +182,7 @@ SUBSYSTEM_DEF(pai) dat += "Description:[c.description]" dat += "Preferred Role:[c.role]" dat += "OOC Comments:[c.comments]" - dat += "\[Download [c.name]\]" + dat += "\[Download [c.name]\]" dat += "" diff --git a/code/controllers/subsystem/radiation.dm b/code/controllers/subsystem/radiation.dm index 1dbe564169..da6a8cd9fc 100644 --- a/code/controllers/subsystem/radiation.dm +++ b/code/controllers/subsystem/radiation.dm @@ -10,11 +10,11 @@ PROCESSING_SUBSYSTEM_DEF(radiation) /datum/controller/subsystem/processing/radiation/proc/warn(datum/component/radioactive) if(!radioactive || QDELETED(radioactive)) return - if(warned_atoms["\ref[radioactive.parent]"]) + if(warned_atoms["[REF(radioactive.parent)]"]) return var/atom/master = radioactive.parent SSblackbox.add_details("contaminated", "[master.type]") - next_warn["\ref[master]"] = "\ref[radioactive]" + next_warn["[REF(master)]"] = "[REF(radioactive)]" var/wait_time = max(0, 500-(world.time-last_warn))+20 // wait at least 20 ticks, longer if we just messaged addtimer(CALLBACK(src, .proc/send_warn), wait_time, TIMER_UNIQUE | TIMER_OVERRIDE) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 1cbe1c9904..ae7f73be8f 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -614,7 +614,7 @@ SUBSYSTEM_DEF(ticker) if(5) //every 5 ticks check if there is a slot available if(living_player_count() < hpc) if(next_in_line && next_in_line.client) - to_chat(next_in_line, "A slot has opened! You have approximately 20 seconds to join. \>\>Join Game\<\<") + to_chat(next_in_line, "A slot has opened! You have approximately 20 seconds to join. \>\>Join Game\<\<") SEND_SOUND(next_in_line, sound('sound/misc/notice1.ogg')) next_in_line.LateChoices() return diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index 804e430ef9..2202d9a496 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -243,7 +243,7 @@ SUBSYSTEM_DEF(timer) while(SStimer.timer_id_dict["timerid" + num2text(id, 8)]) SStimer.timer_id_dict["timerid" + num2text(id, 8)] = src - name = "Timer: " + num2text(id, 8) + ", TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: \ref[callBack], callBack.object: [callBack.object]\ref[callBack.object]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])" + name = "Timer: " + num2text(id, 8) + ", TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: [REF(callBack)], callBack.object: [callBack.object][REF(callBack.object)]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])" if (spent) CRASH("HOLY JESUS. WHAT IS THAT? WHAT THE FUCK IS THAT?") @@ -362,9 +362,9 @@ SUBSYSTEM_DEF(timer) if (flags & TIMER_UNIQUE) var/list/hashlist if(flags & TIMER_NO_HASH_WAIT) - hashlist = list(callback.object, "(\ref[callback.object])", callback.delegate, flags & TIMER_CLIENT_TIME) + hashlist = list(callback.object, "([REF(callback.object)])", callback.delegate, flags & TIMER_CLIENT_TIME) else - hashlist = list(callback.object, "(\ref[callback.object])", callback.delegate, wait, flags & TIMER_CLIENT_TIME) + hashlist = list(callback.object, "([REF(callback.object)])", callback.delegate, wait, flags & TIMER_CLIENT_TIME) hashlist += callback.arguments hash = hashlist.Join("|||||||") diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index d377329312..55624a866c 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -199,7 +199,7 @@ SUBSYSTEM_DEF(vote) text += "\n[question]" log_vote(text) var/vp = CONFIG_GET(number/vote_period) - to_chat(world, "\n[text]\nType vote or click here to place your votes.\nYou have [DisplayTimeText(vp)] to vote.") + to_chat(world, "\n[text]\nType vote or click here to place your votes.\nYou have [DisplayTimeText(vp)] to vote.") time_remaining = round(vp/10) for(var/c in GLOB.clients) var/client/C = c @@ -232,36 +232,36 @@ SUBSYSTEM_DEF(vote) var/votes = choices[choices[i]] if(!votes) votes = 0 - . += "
  • [choices[i]] ([votes] votes)
  • " + . += "
  • [choices[i]] ([votes] votes)
  • " . += "
    " if(admin) - . += "(Cancel Vote) " + . += "(Cancel Vote) " else . += "

    Start a vote:



    " - . += "Close" + . += "Close" return . diff --git a/code/datums/antagonists/devil.dm b/code/datums/antagonists/devil.dm index 2392d456cf..416a8f3752 100644 --- a/code/datums/antagonists/devil.dm +++ b/code/datums/antagonists/devil.dm @@ -35,7 +35,7 @@ GLOBAL_LIST_INIT(lawlorify, list ( BAN_CHAPEL = "This devil avoids holy ground.", BAN_HURTPRIEST = "The annointed clergy appear to be immune to his powers.", BAN_AVOIDWATER = "The devil seems to have some sort of aversion to water, though it does not appear to harm him.", - BAN_STRIKEUNCONCIOUS = "This devil only shows interest in those who are awake.", + BAN_STRIKEUNCONSCIOUS = "This devil only shows interest in those who are awake.", BAN_HURTLIZARD = "This devil will not strike a lizardman first.", BAN_HURTANIMAL = "This devil avoids hurting animals.", BANISH_WATER = "To banish the devil, you must infuse its body with holy water.", @@ -59,7 +59,7 @@ GLOBAL_LIST_INIT(lawlorify, list ( BAN_CHAPEL = "You must never attempt to enter the chapel.", BAN_HURTPRIEST = "You must never attack a priest.", BAN_AVOIDWATER = "You must never willingly touch a wet surface.", - BAN_STRIKEUNCONCIOUS = "You must never strike an unconscious person.", + BAN_STRIKEUNCONSCIOUS = "You must never strike an unconscious person.", BAN_HURTLIZARD = "You must never harm a lizardman outside of self defense.", BAN_HURTANIMAL = "You must never harm a non-sentient creature or robot outside of self defense.", BANE_SILVER = "Silver, in all of its forms shall be your downfall.", @@ -148,7 +148,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", return pick(OBLIGATION_FOOD, OBLIGATION_FIDDLE, OBLIGATION_DANCEOFF, OBLIGATION_GREET, OBLIGATION_PRESENCEKNOWN, OBLIGATION_SAYNAME, OBLIGATION_ANNOUNCEKILL, OBLIGATION_ANSWERTONAME) /proc/randomdevilban() - return pick(BAN_HURTWOMAN, BAN_CHAPEL, BAN_HURTPRIEST, BAN_AVOIDWATER, BAN_STRIKEUNCONCIOUS, BAN_HURTLIZARD, BAN_HURTANIMAL) + return pick(BAN_HURTWOMAN, BAN_CHAPEL, BAN_HURTPRIEST, BAN_AVOIDWATER, BAN_STRIKEUNCONSCIOUS, BAN_HURTLIZARD, BAN_HURTANIMAL) /proc/randomdevilbane() return pick(BANE_SALT, BANE_LIGHT, BANE_IRON, BANE_WHITECLOTHES, BANE_SILVER, BANE_HARVEST, BANE_TOOLBOX) diff --git a/code/datums/browser.dm b/code/datums/browser.dm index 31e8daadb2..e8a1a17fe2 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -132,13 +132,13 @@ var/output = {"
    [Message]

    - [Button1]"} + [Button1]"} if (Button2) - output += {"[Button2]"} + output += {"[Button2]"} if (Button3) - output += {"[Button3]"} + output += {"[Button3]"} output += {"
    "} @@ -253,7 +253,7 @@ return var/param = "null" if(ref) - param = "\ref[ref]" + param = "[REF(ref)]" winset(user, windowid, "on-close=\".windowclose [param]\"") diff --git a/code/datums/components/README.md b/code/datums/components/README.md index eeb6615a63..11cbf1858d 100644 --- a/code/datums/components/README.md +++ b/code/datums/components/README.md @@ -87,9 +87,11 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo * Signals will not be recieved while this function is running * Component may be deleted after this function completes without being attached * Do not call `qdel(src)` from this function -1. `/datum/component/Destroy()` (virtual, no-sleep) +1. `/datum/component/Destroy(force(bool), silent(bool))` (virtual, no-sleep) * Sends the `COMSIG_COMPONENT_REMOVING` signal to the parent datum if the `parent` isn't being qdeleted * Properly removes the component from `parent` and cleans up references + * Setting `force` makes it not check for and remove the component from the parent + * Setting `silent` deletes the component without sending a `COMSIG_COMPONENT_REMOVING` signal 1. `/datum/component/proc/InheritComponent(datum/component/C, i_am_original(boolean))` (abstract, no-sleep) * Called on a component when a component of the same type was added to the same parent * See `/datum/component/var/dupe_mode` diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 3a593a8d14..bb60350cbf 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -14,8 +14,7 @@ var/list/arguments = args.Copy() arguments.Cut(1, 2) if(Initialize(arglist(arguments)) == COMPONENT_INCOMPATIBLE) - parent = null - qdel(src) + qdel(src, TRUE, TRUE) return _CheckDupesAndJoinParent(P) @@ -36,13 +35,11 @@ switch(dm) if(COMPONENT_DUPE_UNIQUE) old.InheritComponent(src, TRUE) - parent = null //prevent COMPONENT_REMOVING signal, no _RemoveFromParent because we aren't in their list yet - qdel(src) + qdel(src, TRUE, TRUE) return if(COMPONENT_DUPE_HIGHLANDER) InheritComponent(old, FALSE) - old._RemoveFromParent() - qdel(old) + qdel(old, FALSE, TRUE) //provided we didn't eat someone if(!old) @@ -83,12 +80,14 @@ /datum/component/proc/Initialize(...) return -/datum/component/Destroy() +/datum/component/Destroy(force=FALSE, silent=FALSE) enabled = FALSE var/datum/P = parent - if(P) + if(!force) _RemoveFromParent() + if(!silent) P.SendSignal(COMSIG_COMPONENT_REMOVING, src) + parent = null LAZYCLEARLIST(signal_procs) return ..() @@ -107,7 +106,6 @@ dc -= I if(!dc.len) P.datum_components = null - parent = null /datum/component/proc/RegisterSignal(sig_type_or_types, proc_or_callback, override = FALSE) if(QDELETED(src)) diff --git a/code/datums/components/decal.dm b/code/datums/components/decal.dm new file mode 100644 index 0000000000..e9ddfdd5fe --- /dev/null +++ b/code/datums/components/decal.dm @@ -0,0 +1,53 @@ +/datum/component/decal + dupe_mode = COMPONENT_DUPE_ALLOWED + + var/cleanable + var/mutable_appearance/pic + +/datum/component/decal/Initialize(_icon, _icon_state, _dir, _cleanable=CLEAN_GOD, _color, _layer=TURF_LAYER) + if(!isatom(parent) || !_icon || !_icon_state) + . = COMPONENT_INCOMPATIBLE + CRASH("A turf decal was applied incorrectly to [parent.type]: icon:[_icon ? _icon : "none"] icon_state:[_icon_state ? _icon_state : "none"]") + + // It has to be made from an image or dir breaks because of a byond bug + var/temp_image = image(_icon, null, _icon_state, _layer, _dir) + pic = new(temp_image) + pic.color = _color + + cleanable = _cleanable + + apply() + + if(_dir) // If no dir is assigned at start then it follows the atom's dir + RegisterSignal(COMSIG_ATOM_DIR_CHANGE, .proc/rotate_react) + if(_cleanable) + RegisterSignal(COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_react) + +/datum/component/decal/Destroy() + remove() + return ..() + +/datum/component/decal/OnTransfer(atom/thing) + remove() + remove(thing) + apply(thing) + +/datum/component/decal/proc/apply(atom/thing) + var/atom/master = thing || parent + master.add_overlay(pic, TRUE) + +/datum/component/decal/proc/remove(atom/thing) + var/atom/master = thing || parent + master.cut_overlay(pic, TRUE) + +/datum/component/decal/proc/rotate_react(old_dir, new_dir) + if(old_dir == new_dir) + return + remove() + var/rotation = SimplifyDegrees(dir2angle(new_dir)-dir2angle(old_dir)) + pic.dir = turn(pic.dir, rotation) + apply() + +/datum/component/decal/proc/clean_react(strength) + if(strength >= cleanable) + qdel(src) \ No newline at end of file diff --git a/code/datums/components/radioactive.dm b/code/datums/components/radioactive.dm index b0bf28f163..c149fd8492 100644 --- a/code/datums/components/radioactive.dm +++ b/code/datums/components/radioactive.dm @@ -37,11 +37,15 @@ return ..() /datum/component/radioactive/process() - if(hl3_release_date && prob(50)) - radiation_pulse(parent, strength, RAD_DISTANCE_COEFFICIENT*2, FALSE, can_contaminate) - strength -= strength / hl3_release_date - if(strength <= RAD_BACKGROUND_RADIATION) - qdel(src) + if(!prob(50)) + return + radiation_pulse(parent, strength, RAD_DISTANCE_COEFFICIENT*2, FALSE, can_contaminate) + + if(!hl3_release_date) + return + strength -= strength / hl3_release_date + if(strength <= RAD_BACKGROUND_RADIATION) + return PROCESS_KILL /datum/component/radioactive/InheritComponent(datum/component/C, i_am_original) if(!i_am_original) diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 00dd796f47..1df7eb2c10 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -3,6 +3,7 @@ var/list/active_timers //for SStimer var/list/datum_components //for /datum/components var/ui_screen = "home" //for tgui + var/use_tag = FALSE #ifdef TESTING var/running_find_references @@ -12,7 +13,7 @@ // Default implementation of clean-up code. // This should be overridden to remove all references pointing to the object being destroyed. // Return the appropriate QDEL_HINT; in most cases this is QDEL_HINT_QUEUE. -/datum/proc/Destroy(force=FALSE) +/datum/proc/Destroy(force=FALSE, ...) tag = null var/list/timers = active_timers active_timers = null @@ -27,11 +28,9 @@ if(length(all_components)) for(var/I in all_components) var/datum/component/C = I - C._RemoveFromParent() - qdel(C) + qdel(C, FALSE, TRUE) else var/datum/component/C = all_components - C._RemoveFromParent() - qdel(C) + qdel(C, FALSE, TRUE) dc.Cut() return QDEL_HINT_QUEUE diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index b653e5c6ae..2f13eec65b 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -25,10 +25,10 @@ /datum/proc/vv_get_dropdown() . = list() . += "---" - .["Call Proc"] = "?_src_=vars;[HrefToken()];proc_call=\ref[src]" - .["Mark Object"] = "?_src_=vars;[HrefToken()];mark_object=\ref[src]" - .["Delete"] = "?_src_=vars;[HrefToken()];delete=\ref[src]" - .["Show VV To Player"] = "?_src_=vars;[HrefToken(TRUE)];expose=\ref[src]" + .["Call Proc"] = "?_src_=vars;[HrefToken()];proc_call=[REF(src)]" + .["Mark Object"] = "?_src_=vars;[HrefToken()];mark_object=[REF(src)]" + .["Delete"] = "?_src_=vars;[HrefToken()];delete=[REF(src)]" + .["Show VV To Player"] = "?_src_=vars;[HrefToken(TRUE)];expose=[REF(src)]" /datum/proc/on_reagent_change() @@ -53,7 +53,7 @@ return var/title = "" - var/refid = "\ref[D]" + var/refid = "[REF(D)]" var/icon/sprite var/hash @@ -71,7 +71,7 @@ hash = md5(hash + AT.icon_state) src << browse_rsc(sprite, "vv[hash].png") - title = "[D] (\ref[D]) = [type]" + title = "[D] ([REF(D)]) = [type]" var/sprite_text if(sprite) @@ -394,9 +394,9 @@ name = DA[name] //name is really the index until this line else value = DA[name] - header = "
  • (E) (C) (-) " + header = "
  • (E) (C) (-) " else - header = "
  • (E) (C) (M) " + header = "
  • (E) (C) (M) " else header = "
  • " @@ -411,7 +411,7 @@ #ifdef VARSICON var/icon/I = new/icon(value) var/rnd = rand(1,10000) - var/rname = "tmp\ref[I][rnd].png" + var/rname = "tmp[REF(I)][rnd].png" usr << browse_rsc(I, rname) item = "[VV_HTML_ENCODE(name)] = ([value]) " #else @@ -423,8 +423,8 @@ var/rnd = rand(1, 10000) var/image/I = value - src << browse_rsc(I.icon, "tmp\ref[value][rnd].png") - html += "[name] = " + src << browse_rsc(I.icon, "tmp[REF(value)][rnd].png") + html += "[name] = " #else html += "[name] = /image ([value])" #endif @@ -434,14 +434,14 @@ //else if (istype(value, /client)) // var/client/C = value - // item = "[VV_HTML_ENCODE(name)] \ref[value] = [C] [C.type]" + // item = "[VV_HTML_ENCODE(name)] [REF(value)] = [C] [C.type]" else if (istype(value, /datum)) var/datum/D = value if ("[D]" != "[D.type]") //if the thing as a name var, lets use it. - item = "[VV_HTML_ENCODE(name)] \ref[value] = [D] [D.type]" + item = "[VV_HTML_ENCODE(name)] [REF(value)] = [D] [D.type]" else - item = "[VV_HTML_ENCODE(name)] \ref[value] = [D.type]" + item = "[VV_HTML_ENCODE(name)] [REF(value)] = [D.type]" else if (islist(value)) var/list/L = value @@ -459,9 +459,9 @@ items += debug_variable(key, val, level + 1, sanitize = sanitize) - item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" + item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" else - item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" + item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" else item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(value)]" @@ -561,7 +561,7 @@ var/prompt = alert("Do you want to grant [C] access to view this VV window? (they will not be able to edit or change anything nor open nested vv windows unless they themselves are an admin)", "Confirm", "Yes", "No") if (prompt != "Yes" || !usr.client) return - message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window") + message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window") log_admin("Admin [key_name(usr)] Showed [key_name(C)] a VV window of a [thing]") to_chat(C, "[usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"] has granted you access to view a View Variables window") C.debug_variables(thing) diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm index 256e2a572f..51844567cc 100644 --- a/code/datums/explosion.dm +++ b/code/datums/explosion.dm @@ -1,5 +1,6 @@ #define EXPLOSION_THROW_SPEED 4 -#define REEBE_HUGBOX_COEFFICIENT 0.5 +#define CITYOFCOGS_CAP_MULTIPLIER 0.5 +#define MINING_CAP_MULTIPLIER 3 GLOBAL_LIST_EMPTY(explosions) //Against my better judgement, I will return the explosion datum @@ -53,21 +54,21 @@ GLOBAL_LIST_EMPTY(explosions) var/orig_dev_range = devastation_range var/orig_heavy_range = heavy_impact_range var/orig_light_range = light_impact_range - - if(!ignorecap && epicenter.z != ZLEVEL_MINING) - //Clamp all values to MAX_EXPLOSION_RANGE - devastation_range = min(GLOB.MAX_EX_DEVESTATION_RANGE, devastation_range) - heavy_impact_range = min(GLOB.MAX_EX_HEAVY_RANGE, heavy_impact_range) - light_impact_range = min(GLOB.MAX_EX_LIGHT_RANGE, light_impact_range) - flash_range = min(GLOB.MAX_EX_FLASH_RANGE, flash_range) - flame_range = min(GLOB.MAX_EX_FLAME_RANGE, flame_range) - - if(!ignorecap && epicenter.z == ZLEVEL_CITYOFCOGS) - devastation_range = min(GLOB.MAX_EX_DEVESTATION_RANGE * REEBE_HUGBOX_COEFFICIENT, devastation_range) - heavy_impact_range = min(GLOB.MAX_EX_HEAVY_RANGE * REEBE_HUGBOX_COEFFICIENT, heavy_impact_range) - light_impact_range = min(GLOB.MAX_EX_LIGHT_RANGE * REEBE_HUGBOX_COEFFICIENT, light_impact_range) - flash_range = min(GLOB.MAX_EX_FLASH_RANGE * REEBE_HUGBOX_COEFFICIENT, flash_range) - flame_range = min(GLOB.MAX_EX_FLAME_RANGE * REEBE_HUGBOX_COEFFICIENT, flame_range) + + //Zlevel specific bomb cap multiplier + var/cap_multiplier = 1 + switch(epicenter.z) + if(ZLEVEL_CITYOFCOGS) + cap_multiplier = CITYOFCOGS_CAP_MULTIPLIER + if(ZLEVEL_MINING) + cap_multiplier = MINING_CAP_MULTIPLIER + + if(!ignorecap) + devastation_range = min(GLOB.MAX_EX_DEVESTATION_RANGE * cap_multiplier, devastation_range) + heavy_impact_range = min(GLOB.MAX_EX_HEAVY_RANGE * cap_multiplier, heavy_impact_range) + light_impact_range = min(GLOB.MAX_EX_LIGHT_RANGE * cap_multiplier, light_impact_range) + flash_range = min(GLOB.MAX_EX_FLASH_RANGE * cap_multiplier, flash_range) + flame_range = min(GLOB.MAX_EX_FLAME_RANGE * cap_multiplier, flame_range) //DO NOT REMOVE THIS STOPLAG, IT BREAKS THINGS //not sleeping causes us to ex_act() the thing that triggered the explosion @@ -397,4 +398,5 @@ GLOBAL_LIST_EMPTY(explosions) // 5 explosion power is a (0, 1, 3) explosion. // 1 explosion power is a (0, 0, 1) explosion. -#undef REEBE_HUGBOX_COEFFICIENT +#undef CITYOFCOGS_CAP_MULTIPLIER +#undef MINING_CAP_MULTIPLIER diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 300417b6d0..5d04d1c7c0 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -152,13 +152,14 @@ if(istype(teleatom, /obj/item/storage/backpack/holding)) precision = rand(1,100) - var/list/bagholding = teleatom.search_contents_for(/obj/item/storage/backpack/holding) + var/static/list/bag_cache = typecacheof(/obj/item/storage/backpack/holding) + var/list/bagholding = typecache_filter_list(teleatom.GetAllContents(), bag_cache) if(bagholding.len) precision = max(rand(1,100)*bagholding.len,100) if(isliving(teleatom)) var/mob/living/MM = teleatom to_chat(MM, "The bluespace interface on your bag of holding interferes with the teleport!") - return 1 + return TRUE // Safe location finder diff --git a/code/datums/mind.dm b/code/datums/mind.dm index a7d3d7adcd..bd5742ad36 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -382,7 +382,7 @@ var/out = "[name][(current&&(current.real_name!=name))?" (as [current.real_name])":""]
    " out += "Mind currently owned by key: [key] [active?"(synced)":"(not synced)"]
    " - out += "Assigned role: [assigned_role]. Edit
    " + out += "Assigned role: [assigned_role]. Edit
    " out += "Faction and special role: [special_role]
    " var/list/sections = list( @@ -406,11 +406,11 @@ text = uppertext(text) text = "[text]: " if (src in SSticker.mode.traitors) - text += "TRAITOR | loyal" + text += "TRAITOR | loyal" if (objectives.len==0) - text += "
    Objectives are empty! Randomize!" + text += "
    Objectives are empty! Randomize!" else - text += "traitor | LOYAL" + text += "traitor | LOYAL" if(current && current.client && (ROLE_TRAITOR in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -428,7 +428,7 @@ text = uppertext(text) text = "[text]: " if(src in SSticker.mode.brothers) - text += "Brother | no" + text += "Brother | no" if(current && current.client && (ROLE_BROTHER in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -450,7 +450,7 @@ if(C.stored_profiles.len && (current.real_name != C.first_prof.name) ) text += "
    Transform to initial appearance." else - text += "yes | NO" + text += "yes | NO" if(current && current.client && (ROLE_CHANGELING in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -466,7 +466,7 @@ text = uppertext(text) text = "[text]: " if (ishuman(current)) - text += "healthy | infected | HUMAN | other" + text += "healthy | infected | HUMAN | other" else if(ismonkey(current)) var/found = FALSE for(var/datum/disease/transformation/jungle_fever/JF in current.viruses) @@ -474,9 +474,9 @@ break if(found) - text += "healthy | INFECTED | human | other" + text += "healthy | INFECTED | human | other" else - text += "HEALTHY | infected | human | other" + text += "HEALTHY | infected | human | other" else text += "healthy | infected | human | OTHER" @@ -496,17 +496,17 @@ text = uppertext(text) text = "[text]: " if (src in SSticker.mode.syndicates) - text += "OPERATIVE | nanotrasen" - text += "
    To shuttle, undress, dress up." + text += "OPERATIVE | nanotrasen" + text += "
    To shuttle, undress, dress up." var/code for (var/obj/machinery/nuclearbomb/bombue in GLOB.machines) if (length(bombue.r_code) <= 5 && bombue.r_code != "LOLNO" && bombue.r_code != "ADMIN") code = bombue.r_code break if (code) - text += " Code is [code]. tell the code." + text += " Code is [code]. tell the code." else - text += "operative | NANOTRASEN" + text += "operative | NANOTRASEN" if(current && current.client && (ROLE_OPERATIVE in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -522,10 +522,10 @@ text = uppertext(text) text = "[text]: " if (has_antag_datum(/datum/antagonist/wizard)) - text += "YES | no" - text += "
    To lair, undress" + text += "YES | no" + text += "
    To lair, undress" else - text += "yes | NO" + text += "yes | NO" if(current && current.client && (ROLE_WIZARD in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -552,28 +552,28 @@ if(M && (M.z in GLOB.station_z_levels) && !M.stat) last_healthy_headrev = FALSE break - text += "head | not mindshielded | employee | [last_healthy_headrev ? "LAST " : ""]HEADREV | rev" - text += "
    Flash: give" + text += "head | not mindshielded | employee | [last_healthy_headrev ? "LAST " : ""]HEADREV | rev" + text += "
    Flash: give" var/list/L = current.get_contents() var/obj/item/device/assembly/flash/flash = locate() in L if (flash) if(!flash.crit_fail) - text += " | take." + text += " | take." else - text += " | take | repair." + text += " | take | repair." else text += "." - text += " Reequip (gives traitor uplink)." + text += " Reequip (gives traitor uplink)." if (objectives.len==0) - text += "
    Objectives are empty! Set to kill all heads." + text += "
    Objectives are empty! Set to kill all heads." else if(current.isloyal()) - text += "head | MINDSHIELDED | employee | headrev | rev" + text += "head | MINDSHIELDED | employee | headrev | rev" else if (has_antag_datum(/datum/antagonist/rev)) - text += "head | not mindshielded | employee | headrev | REV" + text += "head | not mindshielded | employee | headrev | REV" else - text += "head | not mindshielded | EMPLOYEE | headrev | rev" + text += "head | not mindshielded | EMPLOYEE | headrev | rev" if(current && current.client && (ROLE_REV in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -588,8 +588,8 @@ text = uppertext(text) text = "[text]: " if(src in SSticker.mode.abductors) - text += "Abductor | human" - text += " | undress | equip" + text += "Abductor | human" + text += " | undress | equip" if(current && current.client && (ROLE_ABDUCTOR in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -607,13 +607,13 @@ var/datum/antagonist/devil/devilinfo = has_antag_datum(ANTAG_DATUM_DEVIL) if(devilinfo) if(!devilinfo.ascendable) - text += "DEVIL | ascendable devil | sintouched | human" + text += "DEVIL | ascendable devil | sintouched | human" else - text += "DEVIL | ASCENDABLE DEVIL | sintouched | human" + text += "DEVIL | ASCENDABLE DEVIL | sintouched | human" else if(src in SSticker.mode.sintouched) - text += "devil | ascendable devil | SINTOUCHED | human" + text += "devil | ascendable devil | SINTOUCHED | human" else - text += "devil | ascendable devil | sintouched | HUMAN" + text += "devil | ascendable devil | sintouched | HUMAN" if(current && current.client && (ROLE_DEVIL in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -630,11 +630,11 @@ var/datum/antagonist/ninja/ninjainfo = has_antag_datum(ANTAG_DATUM_NINJA) if(ninjainfo) if(ninjainfo.helping_station) - text += "employee | syndicate | NANOTRASEN | EQUIP" + text += "employee | syndicate | NANOTRASEN | EQUIP" else - text += "employee | SYNDICATE | nanotrasen | EQUIP" + text += "employee | SYNDICATE | nanotrasen | EQUIP" else - text += "EMPLOYEE | syndicate | nanotrasen | random allegiance" + text += "EMPLOYEE | syndicate | nanotrasen | random allegiance" if(current && current.client && (ROLE_NINJA in current.client.prefs.be_special)) text += " | Enabled in Prefs" else @@ -649,10 +649,10 @@ text = uppertext(text) text = "[text]: " if(iscultist(current)) - text += "not mindshielded | employee | CULTIST" - text += "
    Give tome | amulet." + text += "not mindshielded | employee | CULTIST" + text += "
    Give tome | amulet." else if(is_convertable_to_cult(current)) - text += "not mindshielded | EMPLOYEE | cultist" + text += "not mindshielded | EMPLOYEE | cultist" else text += "[!current.isloyal() ? "not mindshielded" : "MINDSHIELDED"] | EMPLOYEE | cannot serve Nar-Sie" @@ -671,10 +671,10 @@ text = uppertext(text) text = "[text]: " if(is_servant_of_ratvar(current)) - text += "not mindshielded | employee | SERVANT" - text += "
    Equip" + text += "not mindshielded | employee | SERVANT" + text += "
    Equip" else if(is_eligible_servant(current)) - text += "not mindshielded | EMPLOYEE | servant" + text += "not mindshielded | EMPLOYEE | servant" else text += "[!current.isloyal() ? "not mindshielded" : "MINDSHIELDED"] | EMPLOYEE | cannot serve Ratvar" @@ -691,14 +691,14 @@ text = "silicon" var/mob/living/silicon/robot/robot = current if (istype(robot) && robot.emagged) - text += "
    Cyborg: Is emagged! Unemag!
    0th law: [robot.laws.zeroth]" + text += "
    Cyborg: Is emagged! Unemag!
    0th law: [robot.laws.zeroth]" var/mob/living/silicon/ai/ai = current if (istype(ai) && ai.connected_robots.len) var/n_e_robots = 0 for (var/mob/living/silicon/robot/R in ai.connected_robots) if (R.emagged) n_e_robots++ - text += "
    [n_e_robots] of [ai.connected_robots.len] slaved cyborgs are emagged. Unemag" + text += "
    [n_e_robots] of [ai.connected_robots.len] slaved cyborgs are emagged. Unemag" if (SSticker.mode.config_tag == "traitorchan") if (sections["traitor"]) out += sections["traitor"]+"
    " @@ -716,12 +716,12 @@ if(((src in SSticker.mode.traitors) || (src in SSticker.mode.syndicates)) && ishuman(current)) - text = "Uplink: give" + text = "Uplink: give" var/obj/item/device/uplink/U = find_syndicate_uplink() if(U) - text += " | take" + text += " | take" if (check_rights(R_FUN, 0)) - text += ", [U.telecrystals] TC" + text += ", [U.telecrystals] TC" else text += ", [U.telecrystals] TC" text += "." //hiel grammar @@ -731,18 +731,18 @@ out += "Memory:
    " out += memory - out += "
    Edit memory
    " + out += "
    Edit memory
    " out += "Objectives:
    " if (objectives.len == 0) out += "EMPTY
    " else var/obj_count = 1 for(var/datum/objective/objective in objectives) - out += "[obj_count]: [objective.explanation_text] Edit Delete Toggle Completion
    " + out += "[obj_count]: [objective.explanation_text] Edit Delete Toggle Completion
    " obj_count++ - out += "Add objective

    " + out += "Add objective

    " - out += "Announce objectives

    " + out += "Announce objectives

    " var/datum/browser/popup = new(usr, "edit_memory", "", 600, 600) popup.set_content(out) diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 3526ee6f53..5c646491c8 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -142,7 +142,7 @@ /datum/map_template/ruin/lavaland/ufo_crash name = "UFO Crash" id = "ufo-crash" - description = "Turns out that keeping your abductees unconcious is really important. Who knew?" + description = "Turns out that keeping your abductees unconscious is really important. Who knew?" suffix = "lavaland_surface_ufo_crash.dmm" cost = 5 diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index ce38d0af3e..1ec392a5b2 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -149,7 +149,7 @@ suffix = "mini" name = "Ministation emergency shuttle" credit_cost = 1000 - description = "Despite it's namesake, this shuttle is actually only slightly smaller than standard, and still complete with a brig and medbay." + description = "Despite its namesake, this shuttle is actually only slightly smaller than standard, and still complete with a brig and medbay." /datum/map_template/shuttle/emergency/scrapheap suffix = "scrapheap" diff --git a/code/datums/spawners_menu.dm b/code/datums/spawners_menu.dm index e4b4d1fe8b..ebbe08c525 100644 --- a/code/datums/spawners_menu.dm +++ b/code/datums/spawners_menu.dm @@ -21,7 +21,7 @@ this["desc"] = "" this["refs"] = list() for(var/spawner_obj in GLOB.mob_spawners[spawner]) - this["refs"] += "\ref[spawner_obj]" + this["refs"] += "[REF(spawner_obj)]" if(!this["desc"]) if(istype(spawner_obj, /obj/effect/mob_spawn)) var/obj/effect/mob_spawn/MS = spawner_obj diff --git a/code/datums/wires/wires.dm b/code/datums/wires/wires.dm index c508907bf4..19f7157faa 100644 --- a/code/datums/wires/wires.dm +++ b/code/datums/wires/wires.dm @@ -74,7 +74,7 @@ "white", "yellow" ) - + var/list/my_possible_colors = possible_colors.Copy() for(var/wire in shuffle(wires)) @@ -163,9 +163,9 @@ for(var/wire in possible_wires) if(prob(33)) pulse(wire) - remaining_pulses-- - if(remaining_pulses >= 0) - break + remaining_pulses-- + if(!remaining_pulses) + break // Overridable Procs /datum/wires/proc/interactable(mob/user) diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 66dafe2e8f..a1e3479b38 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -41,7 +41,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station power_environ = FALSE valid_territory = FALSE outdoors = TRUE - ambientsounds = list('sound/ambience/ambispace.ogg','sound/ambience/title2.ogg') + ambientsounds = SPACE blob_allowed = FALSE //Eating up space doesn't count for victory as a blob. /area/space/nearstation @@ -65,6 +65,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station has_gravity = TRUE blob_allowed = FALSE //Nope, no winning on the asteroid as a blob. Gotta eat the station. valid_territory = FALSE + ambientsounds = MINING /area/asteroid/cave name = "Asteroid - Underground" @@ -75,6 +76,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/asteroid/artifactroom name = "Asteroid - Artifact" icon_state = "cave" + ambientsounds = RUINS /area/asteroid/artifactroom/Initialize() . = ..() @@ -96,14 +98,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station //Maintenance /area/maintenance - ambientsounds = list('sound/ambience/ambimaint1.ogg', - 'sound/ambience/ambimaint2.ogg', - 'sound/ambience/ambimaint3.ogg', - 'sound/ambience/ambimaint4.ogg', - 'sound/ambience/ambimaint5.ogg', - 'sound/voice/lowHiss2.ogg', //Xeno Breathing Hisses, Hahahaha I'm not even sorry. - 'sound/voice/lowHiss3.ogg', - 'sound/voice/lowHiss4.ogg') + ambientsounds = MAINTENANCE valid_territory = FALSE @@ -647,7 +642,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/chapel icon_state = "chapel" - ambientsounds = list('sound/ambience/ambicha1.ogg','sound/ambience/ambicha2.ogg','sound/ambience/ambicha3.ogg','sound/ambience/ambicha4.ogg') + ambientsounds = HOLY flags_1 = NONE clockwork_warp_allowed = FALSE clockwork_warp_fail = "The consecration here prevents you from warping in." @@ -678,7 +673,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station //Engineering /area/engine - ambientsounds = list('sound/ambience/ambisin1.ogg','sound/ambience/ambisin2.ogg','sound/ambience/ambisin3.ogg','sound/ambience/ambisin4.ogg') + ambientsounds = ENGINEERING /area/engine/engine_smes name = "Engineering SMES" @@ -732,6 +727,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station valid_territory = FALSE blob_allowed = FALSE flags_1 = NONE + ambientsounds = ENGINEERING /area/solar/asteroid/aft name = "Aft Asteroid Solar" @@ -858,37 +854,36 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Teleporter Room" icon_state = "teleporter" music = "signal" + ambientsounds = ENGINEERING /area/teleporter/quantum/cargo name = "Cargo Quantum Pad" icon_state = "teleporter" - music = "signal" /area/teleporter/quantum/docking name = "Docking Quantum Pad" icon_state = "teleporter" - music = "signal" /area/teleporter/quantum/research name = "Research Quantum Pad" icon_state = "teleporter" - music = "signal" /area/teleporter/quantum/security name = "Security Quantum Pad" icon_state = "teleporter" - music = "signal" /area/gateway name = "Gateway" icon_state = "teleporter" music = "signal" + ambientsounds = ENGINEERING //MedBay /area/medical name = "Medical" icon_state = "medbay3" + ambientsounds = MEDICAL /area/medical/abandoned name = "Abandoned Medbay" @@ -952,7 +947,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/medical/morgue name = "Morgue" icon_state = "morgue" - ambientsounds = list('sound/ambience/ambimo1.ogg','sound/ambience/ambimo2.ogg') + ambientsounds = SPOOKY /area/medical/chemistry name = "Chemistry" @@ -988,6 +983,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/security name = "Security" icon_state = "security" + ambientsounds = HIGHSEC /area/security/main name = "Security Office" @@ -1029,7 +1025,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/security/detectives_office/private_investigators_office name = "Private Investigator's Office" icon_state = "detective" - ambientsounds = list('sound/ambience/ambidet1.ogg','sound/ambience/ambidet2.ogg') /area/security/range name = "Firing Range" @@ -1310,6 +1305,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/construction name = "Construction Area" icon_state = "yellow" + ambientsounds = ENGINEERING /area/construction/minisat_exterior name = "Minisat Exterior" @@ -1361,27 +1357,32 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/ai_monitored/security/armory name = "Armory" icon_state = "armory" + ambientsounds = HIGHSEC /area/ai_monitored/storage/eva name = "EVA Storage" icon_state = "eva" + ambientsounds = HIGHSEC /area/ai_monitored/storage/secure name = "AI Satellite Storage" icon_state = "storage" + ambientsounds = HIGHSEC /area/ai_monitored/storage/emergency name = "Emergency Storage" icon_state = "storage" + ambientsounds = HIGHSEC /area/ai_monitored/storage/satellite name = "AI Satellite Maint" icon_state = "storage" + ambientsounds = HIGHSEC //Turret_protected /area/ai_monitored/turret_protected - ambientsounds = list('sound/ambience/ambimalf.ogg') + ambientsounds = list('sound/ambience/ambimalf.ogg', 'sound/ambience/ambitech.ogg', 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambiatmos.ogg', 'sound/ambience/ambiatmos2.ogg') /area/ai_monitored/turret_protected/ai_upload name = "AI Upload Chamber" @@ -1450,7 +1451,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/tcommsat clockwork_warp_allowed = FALSE clockwork_warp_fail = "For safety reasons, warping here is disallowed; the radio and bluespace noise could cause catastrophic results." - ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') + ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg', 'sound/ambience/ambitech.ogg',\ + 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambitech3.ogg', 'sound/ambience/ambimystery.ogg') /area/tcommsat/entrance name = "Telecomms Teleporter" @@ -1463,22 +1465,18 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/ai_monitored/turret_protected/tcomsat name = "Telecomms Satellite" icon_state = "tcomsatlob" - ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') /area/ai_monitored/turret_protected/tcomfoyer name = "Telecomms Foyer" icon_state = "tcomsatentrance" - ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') /area/ai_monitored/turret_protected/tcomwest name = "Telecommunications Satellite West Wing" icon_state = "tcomsatwest" - ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') /area/ai_monitored/turret_protected/tcomeast name = "Telecommunications Satellite East Wing" icon_state = "tcomsateast" - ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') /area/tcommsat/computer name = "Telecomms Control Room" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 3b5e5d5d68..75a6581aa9 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -54,12 +54,7 @@ var/global/global_uid = 0 var/uid - var/list/ambientsounds = list('sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg',\ - 'sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg',\ - 'sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg',\ - 'sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg',\ - 'sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg',\ - 'sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg') + var/list/ambientsounds = GENERIC flags_1 = CAN_BE_DIRTY_1 var/list/firedoors @@ -107,7 +102,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) uid = ++global_uid related = list(src) map_name = name // Save the initial (the name set in the map) name of the area. - + if(requires_power) luminosity = 0 else @@ -125,8 +120,6 @@ GLOBAL_LIST_EMPTY(teleportlocs) . = ..() - power_change() // all machines set to current power level, also updates icon - blend_mode = BLEND_MULTIPLY // Putting this in the constructor so that it stops the icons being screwed up in the map editor. if(!IS_DYNAMIC_LIGHTING(src)) @@ -148,6 +141,11 @@ GLOBAL_LIST_EMPTY(teleportlocs) areas_in_z["[z]"] = list() areas_in_z["[z]"] += src + return INITIALIZE_HINT_LATELOAD + +/area/LateInitialize() + power_change() // all machines set to current power level, also updates icon + /area/Destroy() STOP_PROCESSING(SSobj, src) return ..() diff --git a/code/game/area/areas/away_content.dm b/code/game/area/areas/away_content.dm index f98a085b13..93640bdde6 100644 --- a/code/game/area/areas/away_content.dm +++ b/code/game/area/areas/away_content.dm @@ -8,6 +8,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30" name = "Strange Location" icon_state = "away" has_gravity = TRUE + ambientsounds = AWAY_MISSION /area/awaymission/beach name = "Beach" @@ -15,7 +16,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30" dynamic_lighting = DYNAMIC_LIGHTING_DISABLED requires_power = FALSE has_gravity = TRUE - ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/seag1.ogg','sound/ambience/seag2.ogg','sound/ambience/seag2.ogg') + ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/seag1.ogg','sound/ambience/seag2.ogg','sound/ambience/seag2.ogg','sound/ambience/ambiodd.ogg','sound/ambience/ambinice.ogg') /area/awaymission/errorroom name = "Super Secret Room" diff --git a/code/game/area/areas/centcom.dm b/code/game/area/areas/centcom.dm index b2587e48c3..72bf2a3599 100644 --- a/code/game/area/areas/centcom.dm +++ b/code/game/area/areas/centcom.dm @@ -96,6 +96,7 @@ noteleport = TRUE blob_allowed = FALSE //Not... entirely sure this will ever come up... but if the bus makes blobs AND ops, it shouldn't aim for the ops to win. flags_1 = NONE + ambientsounds = HIGHSEC /area/syndicate_mothership/control name = "Syndicate Control Room" diff --git a/code/game/area/areas/mining.dm b/code/game/area/areas/mining.dm index 0c212acedf..bf5642b7af 100644 --- a/code/game/area/areas/mining.dm +++ b/code/game/area/areas/mining.dm @@ -15,8 +15,8 @@ power_equip = FALSE power_light = FALSE outdoors = TRUE - ambientsounds = list('sound/ambience/ambimine.ogg') flags_1 = NONE + ambientsounds = MINING /area/mine/unexplored name = "Mine" @@ -29,8 +29,8 @@ power_equip = FALSE power_light = FALSE outdoors = TRUE - ambientsounds = list('sound/ambience/ambimine.ogg') flags_1 = NONE + ambientsounds = MINING /area/mine/lobby name = "Mining Station" @@ -77,6 +77,7 @@ /area/mine/laborcamp/security name = "Labor Camp Security" icon_state = "security" + ambientsounds = HIGHSEC @@ -98,7 +99,7 @@ power_equip = FALSE power_light = FALSE requires_power = TRUE - ambientsounds = list('sound/ambience/ambilava.ogg') + ambientsounds = MINING /area/lavaland/underground name = "Lavaland Caves" @@ -110,7 +111,7 @@ power_environ = FALSE power_equip = FALSE power_light = FALSE - ambientsounds = list('sound/ambience/ambilava.ogg') + ambientsounds = MINING /area/lavaland/surface/outdoors diff --git a/code/game/area/areas/misc.dm b/code/game/area/areas/misc.dm index 01c45c2b59..7faeb6b51a 100644 --- a/code/game/area/areas/misc.dm +++ b/code/game/area/areas/misc.dm @@ -5,6 +5,7 @@ //icon = "ICON FILENAME" //icon_state = "NAME OF ICON" requires_power = FALSE + ambientsounds = SPOOKY /area/hell/trial1 name = "Hell Trial1" @@ -32,6 +33,7 @@ /area/prison name = "Prison Station" icon_state = "brig" + ambientsounds = HIGHSEC /area/prison/arrival_airlock name = "Prison Station Airlock" @@ -73,7 +75,7 @@ /area/prison/morgue name = "Prison Morgue" icon_state = "morgue" - ambientsounds = list('sound/ambience/ambimo1.ogg','sound/ambience/ambimo2.ogg') + ambientsounds = SPOOKY /area/prison/medical_research name = "Prison Genetic Research" @@ -99,7 +101,7 @@ /area/prison/solitary name = "Solitary Confinement" icon_state = "brig" - + /area/prison/execution_room name = "Prisoner Education Chamber" icon_state = "execution_room" diff --git a/code/game/area/areas/ruins/_ruins.dm b/code/game/area/areas/ruins/_ruins.dm index da78351979..087842c5d1 100644 --- a/code/game/area/areas/ruins/_ruins.dm +++ b/code/game/area/areas/ruins/_ruins.dm @@ -6,6 +6,7 @@ has_gravity = TRUE hidden = TRUE dynamic_lighting = DYNAMIC_LIGHTING_FORCED + ambientsounds = RUINS /area/ruin/unpowered @@ -16,4 +17,3 @@ /area/ruin/powered requires_power = FALSE - diff --git a/code/game/area/areas/ruins/space.dm b/code/game/area/areas/ruins/space.dm index 3abbf902b1..75c2e15793 100644 --- a/code/game/area/areas/ruins/space.dm +++ b/code/game/area/areas/ruins/space.dm @@ -22,7 +22,7 @@ power_environ = FALSE valid_territory = FALSE outdoors = TRUE - ambientsounds = list('sound/ambience/ambispace.ogg','sound/ambience/title2.ogg') + ambientsounds = SPACE blob_allowed = FALSE ///////////// @@ -434,4 +434,4 @@ /area/ruin/space/has_grav/whiteship/box name = "Abandoned Ship" - icon_state = "red" \ No newline at end of file + icon_state = "red" diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm index 21f74972c9..dd9e1f766f 100644 --- a/code/game/area/areas/shuttles.dm +++ b/code/game/area/areas/shuttles.dm @@ -18,6 +18,7 @@ /area/shuttle/syndicate name = "Syndicate Infiltrator" blob_allowed = FALSE + ambientsounds = HIGHSEC /area/shuttle/syndicate/bridge name = "Syndicate Infiltrator Control" @@ -106,4 +107,4 @@ /area/shuttle/syndicate_scout name = "Syndicate Scout" - blob_allowed = FALSE \ No newline at end of file + blob_allowed = FALSE diff --git a/code/game/area/areas/space_content.dm b/code/game/area/areas/space_content.dm index 605cbfa764..e605faa6e5 100644 --- a/code/game/area/areas/space_content.dm +++ b/code/game/area/areas/space_content.dm @@ -2,6 +2,7 @@ /area/spacecontent name = "space" + ambientsounds = AWAY_MISSION /area/spacecontent/a1 icon_state = "spacecontent1" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index f20b13e1a3..63754c9e34 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -244,32 +244,6 @@ else if(src in container) return 1 -/* - * atom/proc/search_contents_for(path,list/filter_path=null) - * Recursevly searches all atom contens (including contents contents and so on). - * - * ARGS: path - search atom contents for atoms of this type - * list/filter_path - if set, contents of atoms not of types in this list are excluded from search. - * - * RETURNS: list of found atoms - */ - -/atom/proc/search_contents_for(path,list/filter_path=null) - var/list/found = list() - for(var/atom/A in src) - if(istype(A, path)) - found += A - if(filter_path) - var/pass = 0 - for(var/type in filter_path) - pass |= istype(A, type) - if(!pass) - continue - if(A.contents.len) - found += A.search_contents_for(path,filter_path) - return found - - /atom/proc/examine(mob/user) //This reformat names to get a/an properly working on item descriptions when they are bloody var/f_name = "\a [src]." @@ -335,7 +309,7 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) /atom/proc/blood_splatter_index() - return "\ref[initial(icon)]-[initial(icon_state)]" + return "[REF(initial(icon))]-[initial(icon_state)]" //returns the mob's dna info as a list, to be inserted in an object's blood_DNA list /mob/living/proc/get_blood_dna_list() @@ -631,9 +605,9 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) var/turf/curturf = get_turf(src) if (curturf) .["Jump to"] = "?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[curturf.x];Y=[curturf.y];Z=[curturf.z]" - .["Add reagent"] = "?_src_=vars;[HrefToken()];addreagent=\ref[src]" - .["Trigger EM pulse"] = "?_src_=vars;[HrefToken()];emp=\ref[src]" - .["Trigger explosion"] = "?_src_=vars;[HrefToken()];explode=\ref[src]" + .["Add reagent"] = "?_src_=vars;[HrefToken()];addreagent=[REF(src)]" + .["Trigger EM pulse"] = "?_src_=vars;[HrefToken()];emp=[REF(src)]" + .["Trigger explosion"] = "?_src_=vars;[HrefToken()];explode=[REF(src)]" /atom/proc/drop_location() var/atom/L = loc @@ -646,3 +620,17 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) /atom/proc/return_temperature() return + +// Default tool behaviors proc + +/atom/proc/crowbar_act(mob/user, obj/item/tool) + return + +/atom/proc/screwdriver_act(mob/user, obj/item/tool) + return + +/atom/proc/wrench_act(mob/user, obj/item/tool) + return + +/atom/proc/wirecutter_act(mob/user, obj/item/tool) + return \ No newline at end of file diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index b05a1d78f1..353b5726ce 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -523,7 +523,7 @@ /atom/movable/vv_get_dropdown() . = ..() . -= "Jump to" - .["Follow"] = "?_src_=holder;[HrefToken()];adminplayerobservefollow=\ref[src]" + .["Follow"] = "?_src_=holder;[HrefToken()];adminplayerobservefollow=[REF(src)]" /atom/movable/proc/ex_check(ex_id) if(!ex_id) diff --git a/code/game/communications.dm b/code/game/communications.dm index 19c3f87460..d60a5d8301 100644 --- a/code/game/communications.dm +++ b/code/game/communications.dm @@ -1,309 +1,309 @@ -/* - HOW IT WORKS - - The SSradio is a global object maintaining all radio transmissions, think about it as about "ether". - Note that walkie-talkie, intercoms and headsets handle transmission using nonstandard way. - procs: - - add_object(obj/device as obj, var/new_frequency as num, var/filter as text|null = null) - Adds listening object. - parameters: - device - device receiving signals, must have proc receive_signal (see description below). - one device may listen several frequencies, but not same frequency twice. - new_frequency - see possibly frequencies below; - filter - thing for optimization. Optional, but recommended. - All filters should be consolidated in this file, see defines later. - Device without listening filter will receive all signals (on specified frequency). - Device with filter will receive any signals sent without filter. - Device with filter will not receive any signals sent with different filter. - returns: - Reference to frequency object. - - remove_object (obj/device, old_frequency) - Obliviously, after calling this proc, device will not receive any signals on old_frequency. - Other frequencies will left unaffected. - - return_frequency(var/frequency as num) - returns: - Reference to frequency object. Use it if you need to send and do not need to listen. - - radio_frequency is a global object maintaining list of devices that listening specific frequency. - procs: - - post_signal(obj/source as obj|null, datum/signal/signal, var/filter as text|null = null, var/range as num|null = null) - Sends signal to all devices that wants such signal. - parameters: - source - object, emitted signal. Usually, devices will not receive their own signals. - signal - see description below. - filter - described above. - range - radius of regular byond's square circle on that z-level. null means everywhere, on all z-levels. - - obj/proc/receive_signal(datum/signal/signal, var/receive_method as num, var/receive_param) - Handler from received signals. By default does nothing. Define your own for your object. - Avoid of sending signals directly from this proc, use spawn(0). Do not use sleep() here please. - parameters: - signal - see description below. Extract all needed data from the signal before doing sleep(), spawn() or return! - receive_method - may be TRANSMISSION_WIRE or TRANSMISSION_RADIO. - TRANSMISSION_WIRE is currently unused. - receive_param - for TRANSMISSION_RADIO here comes frequency. - - datum/signal - vars: - source - an object that emitted signal. Used for debug and bearing. - data - list with transmitting data. Usual use pattern: - data["msg"] = "hello world" - encryption - Some number symbolizing "encryption key". - Note that game actually do not use any cryptography here. - If receiving object don't know right key, it must ignore encrypted signal in its receive_signal. - -*/ -/* the radio controller is a confusing piece of shit and didnt work - so i made radios not use the radio controller. -*/ -GLOBAL_LIST_EMPTY(all_radios) -/proc/add_radio(obj/item/radio, freq) - if(!freq || !radio) - return - if(!GLOB.all_radios["[freq]"]) - GLOB.all_radios["[freq]"] = list(radio) - return freq - - GLOB.all_radios["[freq]"] |= radio - return freq - -/proc/remove_radio(obj/item/radio, freq) - if(!freq || !radio) - return - if(!GLOB.all_radios["[freq]"]) - return - - GLOB.all_radios["[freq]"] -= radio - -/proc/remove_radio_all(obj/item/radio) - for(var/freq in GLOB.all_radios) - GLOB.all_radios["[freq]"] -= radio - -/* -Frequency range: 1200 to 1600 -Radiochat range: 1441 to 1489 (most devices refuse to be tune to other frequency, even during mapmaking) - -Radio: -1459 - standard radio chat -1351 - Science -1353 - Command -1355 - Medical -1357 - Engineering -1359 - Security -1337 - death squad -1443 - Confession Intercom -1349 - Miners -1347 - Cargo techs -1447 - AI Private - -Devices: -1451 - tracking implant -1457 - RSD default - -On the map: -1311 for prison shuttle console (in fact, it is not used) -1435 for status displays -1437 for atmospherics/fire alerts -1439 for engine components -1439 for air pumps, air scrubbers, atmo control -1441 for atmospherics - supply tanks -1443 for atmospherics - distribution loop/mixed air tank -1445 for bot nav beacons -1447 for mulebot, secbot and ed209 control -1449 for airlock controls, electropack, magnets -1451 for toxin lab access -1453 for engineering access -1455 for AI access -*/ - -GLOBAL_LIST_INIT(radiochannels, list( - "Common" = 1459, - "Science" = 1351, - "Command" = 1353, - "Medical" = 1355, - "Engineering" = 1357, - "Security" = 1359, +/* + HOW IT WORKS + + The SSradio is a global object maintaining all radio transmissions, think about it as about "ether". + Note that walkie-talkie, intercoms and headsets handle transmission using nonstandard way. + procs: + + add_object(obj/device as obj, var/new_frequency as num, var/filter as text|null = null) + Adds listening object. + parameters: + device - device receiving signals, must have proc receive_signal (see description below). + one device may listen several frequencies, but not same frequency twice. + new_frequency - see possibly frequencies below; + filter - thing for optimization. Optional, but recommended. + All filters should be consolidated in this file, see defines later. + Device without listening filter will receive all signals (on specified frequency). + Device with filter will receive any signals sent without filter. + Device with filter will not receive any signals sent with different filter. + returns: + Reference to frequency object. + + remove_object (obj/device, old_frequency) + Obliviously, after calling this proc, device will not receive any signals on old_frequency. + Other frequencies will left unaffected. + + return_frequency(var/frequency as num) + returns: + Reference to frequency object. Use it if you need to send and do not need to listen. + + radio_frequency is a global object maintaining list of devices that listening specific frequency. + procs: + + post_signal(obj/source as obj|null, datum/signal/signal, var/filter as text|null = null, var/range as num|null = null) + Sends signal to all devices that wants such signal. + parameters: + source - object, emitted signal. Usually, devices will not receive their own signals. + signal - see description below. + filter - described above. + range - radius of regular byond's square circle on that z-level. null means everywhere, on all z-levels. + + obj/proc/receive_signal(datum/signal/signal, var/receive_method as num, var/receive_param) + Handler from received signals. By default does nothing. Define your own for your object. + Avoid of sending signals directly from this proc, use spawn(0). Do not use sleep() here please. + parameters: + signal - see description below. Extract all needed data from the signal before doing sleep(), spawn() or return! + receive_method - may be TRANSMISSION_WIRE or TRANSMISSION_RADIO. + TRANSMISSION_WIRE is currently unused. + receive_param - for TRANSMISSION_RADIO here comes frequency. + + datum/signal + vars: + source + an object that emitted signal. Used for debug and bearing. + data + list with transmitting data. Usual use pattern: + data["msg"] = "hello world" + encryption + Some number symbolizing "encryption key". + Note that game actually do not use any cryptography here. + If receiving object don't know right key, it must ignore encrypted signal in its receive_signal. + +*/ +/* the radio controller is a confusing piece of shit and didnt work + so i made radios not use the radio controller. +*/ +GLOBAL_LIST_EMPTY(all_radios) +/proc/add_radio(obj/item/radio, freq) + if(!freq || !radio) + return + if(!GLOB.all_radios["[freq]"]) + GLOB.all_radios["[freq]"] = list(radio) + return freq + + GLOB.all_radios["[freq]"] |= radio + return freq + +/proc/remove_radio(obj/item/radio, freq) + if(!freq || !radio) + return + if(!GLOB.all_radios["[freq]"]) + return + + GLOB.all_radios["[freq]"] -= radio + +/proc/remove_radio_all(obj/item/radio) + for(var/freq in GLOB.all_radios) + GLOB.all_radios["[freq]"] -= radio + +/* +Frequency range: 1200 to 1600 +Radiochat range: 1441 to 1489 (most devices refuse to be tune to other frequency, even during mapmaking) + +Radio: +1459 - standard radio chat +1351 - Science +1353 - Command +1355 - Medical +1357 - Engineering +1359 - Security +1337 - death squad +1443 - Confession Intercom +1349 - Miners +1347 - Cargo techs +1447 - AI Private + +Devices: +1451 - tracking implant +1457 - RSD default + +On the map: +1311 for prison shuttle console (in fact, it is not used) +1435 for status displays +1437 for atmospherics/fire alerts +1439 for engine components +1439 for air pumps, air scrubbers, atmo control +1441 for atmospherics - supply tanks +1443 for atmospherics - distribution loop/mixed air tank +1445 for bot nav beacons +1447 for mulebot, secbot and ed209 control +1449 for airlock controls, electropack, magnets +1451 for toxin lab access +1453 for engineering access +1455 for AI access +*/ + +GLOBAL_LIST_INIT(radiochannels, list( + "Common" = 1459, + "Science" = 1351, + "Command" = 1353, + "Medical" = 1355, + "Engineering" = 1357, + "Security" = 1359, "CentCom" = 1337, - "Syndicate" = 1213, - "Supply" = 1347, - "Service" = 1349, - "AI Private" = 1447, - "Red Team" = 1215, - "Blue Team" = 1217 -)) - -GLOBAL_LIST_INIT(reverseradiochannels, list( - "1459" = "Common", - "1351" = "Science", - "1353" = "Command", - "1355" = "Medical", - "1357" = "Engineering", - "1359" = "Security", + "Syndicate" = 1213, + "Supply" = 1347, + "Service" = 1349, + "AI Private" = 1447, + "Red Team" = 1215, + "Blue Team" = 1217 +)) + +GLOBAL_LIST_INIT(reverseradiochannels, list( + "1459" = "Common", + "1351" = "Science", + "1353" = "Command", + "1355" = "Medical", + "1357" = "Engineering", + "1359" = "Security", "1337" = "CentCom", - "1213" = "Syndicate", - "1347" = "Supply", - "1349" = "Service", - "1447" = "AI Private", - "1215" = "Red Team", - "1217" = "Blue Team" -)) - -//depenging helpers -GLOBAL_VAR_CONST(SYND_FREQ, 1213) //nuke op frequency, coloured dark brown in chat window -GLOBAL_VAR_CONST(SUPP_FREQ, 1347) //supply, coloured light brown in chat window -GLOBAL_VAR_CONST(SERV_FREQ, 1349) //service, coloured green in chat window -GLOBAL_VAR_CONST(SCI_FREQ, 1351) //science, coloured plum in chat window -GLOBAL_VAR_CONST(COMM_FREQ, 1353) //command, colored gold in chat window -GLOBAL_VAR_CONST(MED_FREQ, 1355) //medical, coloured blue in chat window -GLOBAL_VAR_CONST(ENG_FREQ, 1357) //engineering, coloured orange in chat window -GLOBAL_VAR_CONST(SEC_FREQ, 1359) //security, coloured red in chat window -GLOBAL_VAR_CONST(CENTCOM_FREQ, 1337) //centcom frequency, coloured grey in chat window -GLOBAL_VAR_CONST(AIPRIV_FREQ, 1447) //AI private, colored magenta in chat window -GLOBAL_VAR_CONST(REDTEAM_FREQ, 1215) // red team (CTF) frequency, coloured red -GLOBAL_VAR_CONST(BLUETEAM_FREQ, 1217) // blue team (CTF) frequency, coloured blue - -#define TRANSMISSION_WIRE 0 -#define TRANSMISSION_RADIO 1 - -/* filters */ -GLOBAL_VAR_INIT(RADIO_TO_AIRALARM, "1") -GLOBAL_VAR_INIT(RADIO_FROM_AIRALARM, "2") -GLOBAL_VAR_INIT(RADIO_CHAT, "3") //deprecated -GLOBAL_VAR_INIT(RADIO_ATMOSIA, "4") -GLOBAL_VAR_INIT(RADIO_NAVBEACONS, "5") -GLOBAL_VAR_INIT(RADIO_AIRLOCK, "6") -GLOBAL_VAR_INIT(RADIO_MAGNETS, "9") - -/datum/radio_frequency - - var/frequency as num - var/list/list/obj/devices = list() - -//If range > 0, only post to devices on the same z_level and within range -//Use range = -1, to restrain to the same z_level without limiting range -/datum/radio_frequency/proc/post_signal(obj/source as obj|null, datum/signal/signal, filter = null as text|null, range = null as num|null) - - //Apply filter to the signal. If none supply, broadcast to every devices - //_default channel is always checked - var/list/filter_list - - if(filter) - filter_list = list(filter,"_default") - else - filter_list = devices - - //If checking range, find the source turf - var/turf/start_point - if(range) - start_point = get_turf(source) - if(!start_point) - return 0 - - //Send the data - for(var/current_filter in filter_list) - for(var/obj/device in devices[current_filter]) - if(device == source) - continue - if(range) - var/turf/end_point = get_turf(device) - if(!end_point) - continue - if(start_point.z != end_point.z || (range > 0 && get_dist(start_point, end_point) > range)) - continue - device.receive_signal(signal, TRANSMISSION_RADIO, frequency) - -/datum/radio_frequency/proc/add_listener(obj/device, filter as text|null) - if (!filter) - filter = "_default" - - var/list/devices_line = devices[filter] - if(!devices_line) - devices_line = list() - devices[filter] = devices_line - devices_line += device - - -/datum/radio_frequency/proc/remove_listener(obj/device) - for(var/devices_filter in devices) - var/list/devices_line = devices[devices_filter] - if(!devices_line) - devices -= devices_filter - devices_line -= device - if(!devices_line.len) - devices -= devices_filter - - - - - -/client/proc/print_pointers() - set name = "Debug Signals" - set category = "Debug" - - if(!holder) - return - - var/datum/signal/S - to_chat(src, "There are [S.pointers.len] pointers:") - for(var/p in S.pointers) - to_chat(src, p) - S = locate(p) - if(istype(S)) - to_chat(src, S.debug_print()) - -/obj/proc/receive_signal(datum/signal/signal, receive_method, receive_param) - return - -/datum/signal - var/obj/source - - var/transmission_method = 0 - //0 = wire - //1 = radio transmission - //2 = subspace transmission - - var/data = list() - var/encryption - - var/frequency = 0 - var/static/list/pointers = list() - -/datum/signal/New() - ..() - pointers += "\ref[src]" - -/datum/signal/Destroy() - pointers -= "\ref[src]" - return ..() - -/datum/signal/proc/copy_from(datum/signal/model) - source = model.source - transmission_method = model.transmission_method - data = model.data - encryption = model.encryption - frequency = model.frequency - -/datum/signal/proc/debug_print() - if (source) + "1213" = "Syndicate", + "1347" = "Supply", + "1349" = "Service", + "1447" = "AI Private", + "1215" = "Red Team", + "1217" = "Blue Team" +)) + +//depenging helpers +GLOBAL_VAR_CONST(SYND_FREQ, 1213) //nuke op frequency, coloured dark brown in chat window +GLOBAL_VAR_CONST(SUPP_FREQ, 1347) //supply, coloured light brown in chat window +GLOBAL_VAR_CONST(SERV_FREQ, 1349) //service, coloured green in chat window +GLOBAL_VAR_CONST(SCI_FREQ, 1351) //science, coloured plum in chat window +GLOBAL_VAR_CONST(COMM_FREQ, 1353) //command, colored gold in chat window +GLOBAL_VAR_CONST(MED_FREQ, 1355) //medical, coloured blue in chat window +GLOBAL_VAR_CONST(ENG_FREQ, 1357) //engineering, coloured orange in chat window +GLOBAL_VAR_CONST(SEC_FREQ, 1359) //security, coloured red in chat window +GLOBAL_VAR_CONST(CENTCOM_FREQ, 1337) //centcom frequency, coloured grey in chat window +GLOBAL_VAR_CONST(AIPRIV_FREQ, 1447) //AI private, colored magenta in chat window +GLOBAL_VAR_CONST(REDTEAM_FREQ, 1215) // red team (CTF) frequency, coloured red +GLOBAL_VAR_CONST(BLUETEAM_FREQ, 1217) // blue team (CTF) frequency, coloured blue + +#define TRANSMISSION_WIRE 0 +#define TRANSMISSION_RADIO 1 + +/* filters */ +GLOBAL_VAR_INIT(RADIO_TO_AIRALARM, "1") +GLOBAL_VAR_INIT(RADIO_FROM_AIRALARM, "2") +GLOBAL_VAR_INIT(RADIO_CHAT, "3") //deprecated +GLOBAL_VAR_INIT(RADIO_ATMOSIA, "4") +GLOBAL_VAR_INIT(RADIO_NAVBEACONS, "5") +GLOBAL_VAR_INIT(RADIO_AIRLOCK, "6") +GLOBAL_VAR_INIT(RADIO_MAGNETS, "9") + +/datum/radio_frequency + + var/frequency as num + var/list/list/obj/devices = list() + +//If range > 0, only post to devices on the same z_level and within range +//Use range = -1, to restrain to the same z_level without limiting range +/datum/radio_frequency/proc/post_signal(obj/source as obj|null, datum/signal/signal, filter = null as text|null, range = null as num|null) + + //Apply filter to the signal. If none supply, broadcast to every devices + //_default channel is always checked + var/list/filter_list + + if(filter) + filter_list = list(filter,"_default") + else + filter_list = devices + + //If checking range, find the source turf + var/turf/start_point + if(range) + start_point = get_turf(source) + if(!start_point) + return 0 + + //Send the data + for(var/current_filter in filter_list) + for(var/obj/device in devices[current_filter]) + if(device == source) + continue + if(range) + var/turf/end_point = get_turf(device) + if(!end_point) + continue + if(start_point.z != end_point.z || (range > 0 && get_dist(start_point, end_point) > range)) + continue + device.receive_signal(signal, TRANSMISSION_RADIO, frequency) + +/datum/radio_frequency/proc/add_listener(obj/device, filter as text|null) + if (!filter) + filter = "_default" + + var/list/devices_line = devices[filter] + if(!devices_line) + devices_line = list() + devices[filter] = devices_line + devices_line += device + + +/datum/radio_frequency/proc/remove_listener(obj/device) + for(var/devices_filter in devices) + var/list/devices_line = devices[devices_filter] + if(!devices_line) + devices -= devices_filter + devices_line -= device + if(!devices_line.len) + devices -= devices_filter + + + + + +/client/proc/print_pointers() + set name = "Debug Signals" + set category = "Debug" + + if(!holder) + return + + var/datum/signal/S + to_chat(src, "There are [S.pointers.len] pointers:") + for(var/p in S.pointers) + to_chat(src, p) + S = locate(p) + if(istype(S)) + to_chat(src, S.debug_print()) + +/obj/proc/receive_signal(datum/signal/signal, receive_method, receive_param) + return + +/datum/signal + var/obj/source + + var/transmission_method = 0 + //0 = wire + //1 = radio transmission + //2 = subspace transmission + + var/data = list() + var/encryption + + var/frequency = 0 + var/static/list/pointers = list() + +/datum/signal/New() + ..() + pointers += "[REF(src)]" + +/datum/signal/Destroy() + pointers -= "[REF(src)]" + return ..() + +/datum/signal/proc/copy_from(datum/signal/model) + source = model.source + transmission_method = model.transmission_method + data = model.data + encryption = model.encryption + frequency = model.frequency + +/datum/signal/proc/debug_print() + if (source) . = "signal = {source = '[source]' [COORD(source)]\n" - else - . = "signal = {source = '[source]' ()\n" - for (var/i in data) - . += "data\[\"[i]\"\] = \"[data[i]]\"\n" - if(islist(data[i])) - var/list/L = data[i] - for(var/t in L) - . += "data\[\"[i]\"\] list has: [t]" - -/datum/signal/proc/sanitize_data() - for(var/d in data) - var/val = data[d] - if(istext(val)) - data[d] = html_encode(val) + else + . = "signal = {source = '[source]' ()\n" + for (var/i in data) + . += "data\[\"[i]\"\] = \"[data[i]]\"\n" + if(islist(data[i])) + var/list/L = data[i] + for(var/t in L) + . += "data\[\"[i]\"\] list has: [t]" + +/datum/signal/proc/sanitize_data() + for(var/d in data) + var/val = data[d] + if(istext(val)) + data[d] = html_encode(val) diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index 8a0a622a63..2a1a196b0e 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -29,13 +29,13 @@ dat += "Using this contract, you may summon an apprentice to aid you on your mission.
    " dat += "If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.
    " dat += "Which school of magic is your apprentice studying?:
    " - dat += "Destruction
    " + dat += "Destruction
    " dat += "Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.
    " - dat += "Bluespace Manipulation
    " + dat += "Bluespace Manipulation
    " dat += "Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.
    " - dat += "Healing
    " + dat += "Healing
    " dat += "Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.
    " - dat += "Robeless
    " + dat += "Robeless
    " dat += "Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.
    " user << browse(dat, "window=radio") onclose(user, "radio") diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index 61dee30c8e..d27c3aa820 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -226,6 +226,8 @@ . = ..() if(!independent) //no pulling people deep into the blob verbs -= /mob/living/verb/pulled + else + pass_flags &= ~PASSBLOB /mob/living/simple_animal/hostile/blob/blobbernaut/Life() if(..()) diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index e6cae65c03..2544e1f88a 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -91,10 +91,13 @@ GLOBAL_LIST_EMPTY(blob_nodes) if(!Ablob.blob_allowed) continue - - playsound(L, 'sound/effects/splat.ogg', 50, 1) - L.death() - new/mob/living/simple_animal/hostile/blob/blobspore(T) + + if(!("blob" in L.faction)) + playsound(L, 'sound/effects/splat.ogg', 50, 1) + L.death() + new/mob/living/simple_animal/hostile/blob/blobspore(T) + else + L.fully_heal() for(var/V in GLOB.sortedAreas) var/area/A = V diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm index 2dd65ac9db..70aeaa6520 100644 --- a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm +++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm @@ -1,8 +1,7 @@ /obj/item/clockwork/slab //Clockwork slab: The most important tool in Ratvar's arsenal. Allows scripture recital, tutorials, and generates components. name = "clockwork slab" desc = "A strange metal tablet. A clock in the center turns around and around." - clockwork_desc = "A link between you and the Celestial Derelict. It contains information, recites scripture, and is your most vital tool as a Servant.\n\ - Hitting a slab, a Servant with a slab, or a cache will transfer this slab's components into the target, the target's slab, or the global cache, respectively." + clockwork_desc = "A link between you and the Celestial Derelict. It contains information, recites scripture, and is your most vital tool as a Servant." icon_state = "dread_ipad" lefthand_file = 'icons/mob/inhands/antag/clockwork_lefthand.dmi' righthand_file = 'icons/mob/inhands/antag/clockwork_righthand.dmi' @@ -231,7 +230,7 @@ this will cause you to whisper your message aloud, so doing so in a public place is very suspicious and you should try to restrict it to private use.

    " dat += "If you aren't willing or don't have the time to read through every section, you can still help your teammates! Ask if they've set up a base. If they have, head there \ and ask however you can help; chances are there's always something. If not, it's your job as a Servant to get one up and running! Try to find a secluded, low-traffic area, \ - like the auxilary base or somewhere deep in maintenance. You'll want to go into the Drivers section of the slab and look for Tinkerer's Cache. Find a nice spot and \ + like the auxiliary base or somewhere deep in maintenance. You'll want to go into the Drivers section of the slab and look for Tinkerer's Cache. Find a nice spot and \ create one. This serves as a storage for components, the cult's primary resource. (Your slab's probably produced a few by now.) By attacking that cache with this \ slab, you'll offload all your components into it, and all Servants will be able to use those components from any distance - all Tinkerer's Caches are linked!

    " dat += "Once you have a base up and running, contact your fellows and let them know. You should come back here often to drop off the slab's components, and your fellows \ @@ -250,7 +249,7 @@ teamwork is an instrumental component of your success.

    " //get it? component? ha! dat += "As a Servant of Ratvar, the tools you are given focus around building and maintaining bases and outposts. A great deal of your power comes from stationary \ structures, and without constructing a base somewhere, it's essentially impossible to succeed. Finding a good spot to build a base can be difficult, and it's recommended \ - that you choose an area in low-traffic part of the station (such as the auxilary base). Make sure to disconnect any cameras in the area beforehand.

    " + that you choose an area in low-traffic part of the station (such as the auxiliary base). Make sure to disconnect any cameras in the area beforehand.

    " dat += "Because of how complex being a Servant is, it isn't possible to fit much information into this section. It's highly recommended that you read the Components \ and Scripture sections next. Not knowing how these two systems work will cripple both you and your fellows, and lead to a frustrating experience for everyone.

    " dat += "-=-=-=-=-=-" diff --git a/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm b/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm index 1fabeeba3f..a1c3d211fb 100644 --- a/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm +++ b/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm @@ -17,6 +17,7 @@ attack_sound = 'sound/weapons/bladeslice.ogg' weather_immunities = list("lava") movement_type = FLYING + a_intent = INTENT_HARM loot = list(/obj/item/clockwork/component/geis_capacitor/fallen_armor) light_range = 2 light_power = 1.1 @@ -24,7 +25,6 @@ unique abilities, you're a fearsome fighter in one-on-one combat, and your shield protects from projectiles!

    Obey the Servants and do as they \ tell you. Your primary goal is to defend the Ark from destruction; they are your allies in this, and should be protected from harm." empower_string = "The Anima Bulwark's power flows through you! Your weapon will strike harder, your armor is sturdier, and your shield is more durable." - var/deflect_chance = 40 //Chance to deflect any given projectile (non-damaging energy projectiles are always deflected) var/max_shield_health = 3 var/shield_health = 3 //Amount of projectiles that can be deflected within var/shield_health_regen = 0 //When world.time equals this, shield health will regenerate @@ -55,8 +55,6 @@ obj_damage = 100 max_shield_health = INFINITY else if(GLOB.ratvar_approaches) //Hefty health bonus and slight attack damage increase - health = 200 - maxHealth = 200 melee_damage_upper = 15 melee_damage_lower = 15 attacktext = "carves" diff --git a/code/game/gamemodes/clock_cult/clock_scripture.dm b/code/game/gamemodes/clock_cult/clock_scripture.dm index 049a49f5f4..8a019ed74b 100644 --- a/code/game/gamemodes/clock_cult/clock_scripture.dm +++ b/code/game/gamemodes/clock_cult/clock_scripture.dm @@ -53,6 +53,7 @@ Applications: 8 servants, 3 caches, and 100 CV if(slab.busy) to_chat(invoker, "[slab] refuses to work, displaying the message: \"[slab.busy]!\"") return FALSE + pre_recital() slab.busy = "Invocation ([name]) in progress" if(GLOB.ratvar_awakens) channel_time *= 0.5 //if ratvar has awoken, half channel time and no cost @@ -176,6 +177,9 @@ Applications: 8 servants, 3 caches, and 100 CV /datum/clockwork_scripture/proc/scripture_fail() //Called if the scripture fails to invoke. +/datum/clockwork_scripture/proc/pre_recital() //Called before the scripture is recited + + /datum/clockwork_scripture/proc/post_recital() //Called after the scripture is recited //Channeled scripture begins instantly but runs constantly diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm index d7aa2777ca..bcb9d1d1df 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm @@ -7,12 +7,12 @@ /datum/clockwork_scripture/create_object/construct/clockwork_marauder descname = "Well-Rounded Combat Construct" name = "Clockwork Marauder" - desc = "Creates a shell for a clockwork marauder, a balanced frontline construct." + desc = "Creates a shell for a clockwork marauder, a balanced frontline construct that can deflect projectiles with its shield." invocations = list("Arise, avatar of Arbiter!", "Defend the Ark with vengeful zeal.") channel_time = 50 power_cost = 1000 creator_message = "Your slab disgorges several chunks of replicant alloy that form into a suit of thrumming armor." - usage_tip = "The marauder's shield can effectively deflect energy-based projectiles." + usage_tip = "Reciting this scripture multiple times in a short period will cause it to take longer!" tier = SCRIPTURE_APPLICATION one_per_tile = TRUE primary_component = BELLIGERENT_EYE @@ -22,6 +22,9 @@ object_path = /obj/item/clockwork/construct_chassis/clockwork_marauder construct_type = /mob/living/simple_animal/hostile/clockwork/marauder combat_construct = TRUE + var/static/recent_marauders = 0 + var/static/time_since_last_marauder = 0 + var/static/scaled_recital_time = 0 /datum/clockwork_scripture/create_object/construct/clockwork_marauder/update_construct_limit() var/human_servants = 0 @@ -32,15 +35,30 @@ construct_limit = human_servants / 4 //1 per 4 human servants, and a maximum of 3 marauders construct_limit = Clamp(construct_limit, 1, 3) -/datum/clockwork_scripture/create_object/prolonging_prism/check_special_requirements() - if(SSshuttle.emergency.mode == SHUTTLE_DOCKED || SSshuttle.emergency.mode == SHUTTLE_IGNITING || SSshuttle.emergency.mode == SHUTTLE_STRANDED || SSshuttle.emergency.mode == SHUTTLE_ESCAPE) - to_chat(invoker, "\"It is too late to construct one of these, champion.\"") - return FALSE - var/turf/T = get_turf(invoker) - if(!T || !(T.z in GLOB.station_z_levels)) - to_chat(invoker, "\"You must be on the station to construct one of these, champion.\"") - return FALSE - return ..() +/datum/clockwork_scripture/create_object/construct/clockwork_marauder/pre_recital() + channel_time = initial(channel_time) + calculate_scaling() + if(scaled_recital_time) + to_chat(invoker, "The Hierophant Network is under strain from repeated summoning, making this scripture [scaled_recital_time / 10] seconds slower!") + channel_time += scaled_recital_time + return TRUE + +/datum/clockwork_scripture/create_object/construct/clockwork_marauder/scripture_effects() + . = ..() + time_since_last_marauder = world.time + recent_marauders++ + calculate_scaling() + +/datum/clockwork_scripture/create_object/construct/clockwork_marauder/proc/calculate_scaling() + var/WT = world.time + var/MT = time_since_last_marauder //Cast it for quicker reference + var/marauders_to_exclude = 0 + if(world.time >= time_since_last_marauder + MARAUDER_SCRIPTURE_SCALING_THRESHOLD) + marauders_to_exclude = round(WT - MT) / MARAUDER_SCRIPTURE_SCALING_THRESHOLD //If at least 20 seconds have passed, lose one marauder for each 20 seconds + //i.e. world.time = 10000, last marauder = 9000, so we lose 5 marauders from the recent count since 10k - 9k = 1k, 1k / 200 = 5 + time_since_last_marauder = world.time //So that it can't be spammed to make the marauder exclusion plummet; this emulates "ticking" + recent_marauders = max(0, recent_marauders - marauders_to_exclude) + scaled_recital_time = min(recent_marauders * MARAUDER_SCRIPTURE_SCALING_TIME, MARAUDER_SCRIPTURE_SCALING_MAX) //Mania Motor: Creates a malevolent transmitter that will broadcast the whispers of Sevtug into the minds of nearby nonservants, causing a variety of mental effects at a power cost. diff --git a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm index 3380579716..0f13ac66ac 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm @@ -134,11 +134,21 @@ var/damage = max((obj_integrity * 0.7) / severity, 100) //requires multiple bombs to take down take_damage(damage, BRUTE, "bomb", 0) +/obj/structure/destructible/clockwork/massive/celestial_gateway/proc/get_arrival_time(var/deciseconds = TRUE) + if(seconds_until_activation) + . = seconds_until_activation + else if(grace_period) + . = grace_period + else if(GATEWAY_RATVAR_ARRIVAL - progress_in_seconds > 0) + . = round(max((GATEWAY_RATVAR_ARRIVAL - progress_in_seconds) / (GATEWAY_SUMMON_RATE), 0), 1) + if(deciseconds) + . *= 10 + /obj/structure/destructible/clockwork/massive/celestial_gateway/proc/get_arrival_text(s_on_time) if(seconds_until_activation) - return "[seconds_until_activation][s_on_time ? "S" : ""]" + return "[get_arrival_time()][s_on_time ? "S" : ""]" if(grace_period) - return "[grace_period][s_on_time ? "S" : ""]" + return "[get_arrival_time()][s_on_time ? "S" : ""]" . = "IMMINENT" if(!obj_integrity) . = "DETONATING" @@ -151,12 +161,12 @@ icon_state = initial(icon_state) if(is_servant_of_ratvar(user) || isobserver(user)) if(!active) - to_chat(user, "Time until the Ark's activation: [DisplayTimeText(get_arrival_text(FALSE))]") + to_chat(user, "Time until the Ark's activation: [DisplayTimeText(get_arrival_time())]") else if(grace_period) - to_chat(user, "Crew grace period time remaining: [DisplayTimeText(get_arrival_text(FALSE))]") + to_chat(user, "Crew grace period time remaining: [DisplayTimeText(get_arrival_time())]") else - to_chat(user, "Time until Ratvar's arrival: [DisplayTimeText(get_arrival_text(FALSE))]") + to_chat(user, "Time until Ratvar's arrival: [DisplayTimeText(get_arrival_time())]") switch(progress_in_seconds) if(-INFINITY to GATEWAY_REEBE_FOUND) to_chat(user, "The Ark is feeding power into the bluespace field.") @@ -267,10 +277,10 @@ /obj/structure/destructible/clockwork/massive/celestial_gateway/attack_ghost(mob/user) if(!IsAdminGhost(user)) - return + return ..() if(GLOB.servants_active) to_chat(user, "The Ark is already counting down.") - return + return ..() if(alert(user, "Activate the Ark's countdown?", name, "Yes", "No") == "Yes") if(alert(user, "REALLY activate the Ark's countdown?", name, "Yes", "No") == "Yes") if(alert(user, "You're REALLY SURE? This cannot be undone.", name, "Yes - Activate the Ark", "No") == "Yes - Activate the Ark") diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 1926aa8f58..da222fe521 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -324,7 +324,7 @@ icon_state = "cult_armor" item_state = "cult_armor" desc = "A heavily-armored exosuit worn by warriors of the Nar-Sien cult. It can withstand hard vacuum." - w_class = WEIGHT_CLASS_SMALL + w_class = WEIGHT_CLASS_BULKY allowed = list(/obj/item/tome, /obj/item/melee/cultblade, /obj/item/tank/internals/) armor = list(melee = 70, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 40, acid = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult diff --git a/code/game/gamemodes/cult/supply.dm b/code/game/gamemodes/cult/supply.dm index 47807fa93a..3720e496ea 100644 --- a/code/game/gamemodes/cult/supply.dm +++ b/code/game/gamemodes/cult/supply.dm @@ -22,7 +22,7 @@ dat += "
    " for(var/s in possible_summons) var/datum/cult_supply/S = s - dat += "[initial(S.invocation)] - [initial(S.desc)]
    " + dat += "[initial(S.invocation)] - [initial(S.desc)]
    " var/datum/browser/popup = new(user, "talisman", "", 400, 400) popup.set_content(dat.Join("")) popup.open() diff --git a/code/game/gamemodes/devil/true_devil/_true_devil.dm b/code/game/gamemodes/devil/true_devil/_true_devil.dm index 9b24d096c4..10f0b3393f 100644 --- a/code/game/gamemodes/devil/true_devil/_true_devil.dm +++ b/code/game/gamemodes/devil/true_devil/_true_devil.dm @@ -17,6 +17,7 @@ var/ascended = FALSE sight = (SEE_TURFS | SEE_OBJS) status_flags = CANPUSH + spacewalk = TRUE mob_size = MOB_SIZE_LARGE var/mob/living/oldform var/list/devil_overlays[DEVIL_TOTAL_LAYERS] @@ -135,9 +136,6 @@ "[attack_message]", null, COMBAT_MESSAGE_RANGE) return TRUE -/mob/living/carbon/true_devil/Process_Spacemove(movement_dir = 0) - return 1 - /mob/living/carbon/true_devil/singularity_act() if(ascended) return 0 diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 26c3810b42..c8b98319f0 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -160,7 +160,7 @@ if(CONFIG_GET(flag/protect_assistant_from_antagonist)) replacementmode.restricted_jobs += "Assistant" - message_admins("The roundtype will be converted. If you have other plans for the station or feel the station is too messed up to inhabit stop the creation of antags or end the round now.") + message_admins("The roundtype will be converted. If you have other plans for the station or feel the station is too messed up to inhabit stop the creation of antags or end the round now.") . = 1 sleep(rand(600,1800)) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 92dca5d3c9..154d0f1206 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -133,9 +133,9 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( dat += "Install Module:
    " dat += "The number afterwards is the amount of processing time it consumes.
    " for(var/datum/AI_Module/large/module in possible_modules) - dat += "[module.module_name]\[?\] ([module.cost])
    " + dat += "[module.module_name]\[?\] ([module.cost])
    " for(var/datum/AI_Module/small/module in possible_modules) - dat += "[module.module_name]\[?\] ([module.cost])
    " + dat += "[module.module_name]\[?\] ([module.cost])
    " dat += "
    " if(temp) dat += "[temp]" @@ -679,7 +679,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( C.images -= I /mob/living/silicon/ai/proc/can_place_transformer(datum/action/innate/ai/place_transformer/action) - if(!eyeobj || !isturf(loc) || !canUseTopic() || !action) + if(!eyeobj || !isturf(loc) || incapacitated() || !action) return var/turf/middle = get_turf(eyeobj) var/list/turfs = list(middle, locate(middle.x - 1, middle.y, middle.z), locate(middle.x + 1, middle.y, middle.z)) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/game/gamemodes/miniantags/abduction/machinery/console.dm index d44ff57c96..f243f161c3 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/console.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/console.dm @@ -43,20 +43,20 @@ dat += "Collected Samples : [points]
    " dat += "Gear Credits: [credits]
    " dat += "Transfer data in exchange for supplies:
    " - dat += "Advanced Baton
    " - dat += "Agent Helmet
    " - dat += "Agent Vest
    " - dat += "Radio Silencer
    " - dat += "Science Tool
    " + dat += "Advanced Baton
    " + dat += "Agent Helmet
    " + dat += "Agent Vest
    " + dat += "Radio Silencer
    " + dat += "Science Tool
    " else dat += "NO EXPERIMENT MACHINE DETECTED
    " if(pad) dat += "Emergency Teleporter System." dat += "Consider using primary observation console first." - dat += "Activate Teleporter
    " + dat += "Activate Teleporter
    " if(gizmo && gizmo.marked) - dat += "Retrieve Mark
    " + dat += "Retrieve Mark
    " else dat += "Retrieve Mark
    " else @@ -66,15 +66,15 @@ dat += "

    Agent Vest Mode


    " var/mode = vest.mode if(mode == VEST_STEALTH) - dat += "Combat" + dat += "Combat" dat += "Stealth" else dat += "Combat" - dat += "Stealth" + dat += "Stealth" dat+="
    " - dat += "Select Agent Vest Disguise
    " - dat += "[vest.flags_1 & NODROP_1 ? "Unlock" : "Lock"] Vest
    " + dat += "Select Agent Vest Disguise
    " + dat += "[vest.flags_1 & NODROP_1 ? "Unlock" : "Lock"] Vest
    " else dat += "NO AGENT VEST DETECTED" var/datum/browser/popup = new(user, "computer", "Abductor Console", 400, 500) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm index 2b012e5f81..ae095c12e6 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm @@ -48,7 +48,7 @@ item_count++ var/g_color = gland_colors[i] var/amount = amounts[i] - dat += "[amount]" + dat += "[amount]" if(item_count == 4) // Four boxes per line dat +="

    " item_count = 0 diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm index 73a696fb3a..da445b94ce 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm @@ -104,9 +104,9 @@ dat += "
    " dat += "" //Avert your eyes dat += "" - dat += "Probe
    " - dat += "Dissect
    " - dat += "Analyze
    " + dat += "Probe
    " + dat += "Dissect
    " + dat += "Analyze
    " dat += "
    " else dat += "Experiment " @@ -127,8 +127,8 @@ dat += "
    " dat += "[flash]" dat += "
    " - dat += "Scan" - dat += "Close" : "open=1'>Open"]" + dat += "Scan" + dat += "Close" : "open=1'>Open"]" var/datum/browser/popup = new(user, "experiment", "Probing Console", 300, 300) popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.set_content(dat) diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index e72babc5b0..04a5f4d2be 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -21,6 +21,7 @@ maxHealth = INFINITY layer = GHOST_LAYER healable = FALSE + spacewalk = TRUE sight = SEE_SELF see_in_dark = 8 @@ -153,8 +154,6 @@ //Immunities -/mob/living/simple_animal/revenant/Process_Spacemove(movement_dir = 0) - return 1 /mob/living/simple_animal/revenant/ex_act(severity, target) return 1 //Immune to the effects of explosions. diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index ecfb6289ec..630a5929d7 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -91,9 +91,11 @@ var/obj/item/device/nuclear_challenge/challenge = new /obj/item/device/nuclear_challenge synd_mind.current.put_in_hands(challenge, TRUE) - var/list/foundIDs = synd_mind.current.search_contents_for(/obj/item/card/id) + var/static/id_cache = typecacheof(/obj/item/card/id) + var/list/foundIDs = typecache_filter_list(synd_mind.current.GetAllContents(), id_cache) if(foundIDs.len) - for(var/obj/item/card/id/ID in foundIDs) + for(var/i in 1 to foundIDs.len) + var/obj/item/card/id/ID = foundIDs[i] ID.name = "lead agent card" ID.access += ACCESS_SYNDICATE_LEADER else diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 0251d17398..3ac0f7b29b 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -77,6 +77,7 @@ icon = 'icons/obj/machines/nuke_terminal.dmi' icon_state = "nuclearbomb_base" anchored = TRUE //stops it being moved + use_tag = TRUE /obj/machinery/nuclearbomb/syndicate //ui_style = "syndicate" // actually the nuke op bomb is a stole nt bomb diff --git a/code/game/gamemodes/sandbox/airlock_maker.dm b/code/game/gamemodes/sandbox/airlock_maker.dm index aafbffa82e..863d92899b 100644 --- a/code/game/gamemodes/sandbox/airlock_maker.dm +++ b/code/game/gamemodes/sandbox/airlock_maker.dm @@ -1,139 +1,139 @@ -/* - This is for the sandbox for now, - maybe useful later for an actual thing? - -Sayu -*/ - -/obj/structure/door_assembly - var/datum/airlock_maker/maker = null - -/obj/structure/door_assembly/attack_hand() - ..() - if(maker) - maker.interact() - -/datum/airlock_maker - var/obj/structure/door_assembly/linked = null - - var/list/access_used = null - var/require_all = 1 - - var/paintjob = "none" - var/glassdoor = 0 - - var/doorname = "airlock" - -/datum/airlock_maker/New(var/atom/target_loc) - linked = new(target_loc) - linked.maker = src - linked.anchored = FALSE - access_used = list() - - interact() - -/datum/airlock_maker/proc/linkpretty(href,desc,active) - if(!desc) - var/static/list/defaults = list("No","Yes") - desc = defaults[active+1] - if(active) - return "[desc]" - return "[desc]" - -/datum/airlock_maker/proc/interact() - var/list/leftcolumn = list() - var/list/rightcolumn = list() - leftcolumn += "Required Access" - for(var/access in get_all_accesses()) - leftcolumn += linkpretty("access=[access]",get_access_desc(access),access in access_used) - leftcolumn += "Require all listed accesses: [linkpretty("reqall",null,require_all)]" - - rightcolumn += "Paintjob" - for(var/option in list("none","engineering","atmos","security","command","medical","research","mining","maintenance","external","highsecurity")) - rightcolumn += linkpretty("paint=[option]",option,option == paintjob) - rightcolumn += "Glass door: " + linkpretty("glass",null,glassdoor) + "

    " - var/length = max(leftcolumn.len,rightcolumn.len) - - var/dat = "You may move the model airlock around. A new airlock will be built in its space when you click done, below.

    " - dat += "Door name: \"[doorname]\"" - dat += "" - for(var/i=1; i<=length; i++) - dat += "" - - dat += "
    " - if(i<=leftcolumn.len) - dat += leftcolumn[i] - dat += "" - if(i<=rightcolumn.len) - dat += rightcolumn[i] - dat += "

    Finalize Airlock Construction | Cancel and Destroy Airlock" - usr << browse(dat,"window=airlockmaker") - -/datum/airlock_maker/Topic(var/href,var/list/href_list) - if(!usr) - return - if(!src || !linked || !linked.loc) - usr << browse(null,"window=airlockmaker") - return - - if("rename" in href_list) - var/newname = stripped_input(usr,"New airlock name:","Name the airlock",doorname) - if(newname) - doorname = newname - if("access" in href_list) - var/value = text2num(href_list["access"]) - access_used ^= value - if("reqall" in href_list) - require_all = !require_all - if("paint" in href_list) - paintjob = href_list["paint"] - if("glass" in href_list) - glassdoor = !glassdoor - - if("cancel" in href_list) - usr << browse(null,"window=airlockmaker") - qdel(linked) - qdel(src) - return - - if("done" in href_list) - usr << browse(null,"window=airlockmaker") - var/turf/t_loc = linked.loc - qdel(linked) - if(!istype(t_loc)) - return - - var/target_type = "/obj/machinery/door/airlock" - if(glassdoor) - if(paintjob != "none") - if(paintjob in list("external","highsecurity","maintenance")) // no glass version - target_type += "/[paintjob]" - else - target_type += "/glass_[paintjob]" - else - target_type += "/glass" - else if(paintjob != "none") - target_type += "/[paintjob]" - var/final = target_type - target_type = text2path(final) - if(!target_type) - to_chat(usr, "Didn't work, contact Sayu with this: [final]") - usr << browse(null,"window=airlockmaker") - return - - var/obj/machinery/door/D = new target_type(t_loc) - - D.name = doorname - - if(access_used.len == 0) - D.req_access = null - D.req_one_access = null - else if(require_all) - D.req_access = access_used.Copy() - D.req_one_access = null - else - D.req_access = null - D.req_one_access = access_used.Copy() - - return - - interact() +/* + This is for the sandbox for now, + maybe useful later for an actual thing? + -Sayu +*/ + +/obj/structure/door_assembly + var/datum/airlock_maker/maker = null + +/obj/structure/door_assembly/attack_hand() + ..() + if(maker) + maker.interact() + +/datum/airlock_maker + var/obj/structure/door_assembly/linked = null + + var/list/access_used = null + var/require_all = 1 + + var/paintjob = "none" + var/glassdoor = 0 + + var/doorname = "airlock" + +/datum/airlock_maker/New(var/atom/target_loc) + linked = new(target_loc) + linked.maker = src + linked.anchored = FALSE + access_used = list() + + interact() + +/datum/airlock_maker/proc/linkpretty(href,desc,active) + if(!desc) + var/static/list/defaults = list("No","Yes") + desc = defaults[active+1] + if(active) + return "[desc]" + return "[desc]" + +/datum/airlock_maker/proc/interact() + var/list/leftcolumn = list() + var/list/rightcolumn = list() + leftcolumn += "Required Access" + for(var/access in get_all_accesses()) + leftcolumn += linkpretty("access=[access]",get_access_desc(access),access in access_used) + leftcolumn += "Require all listed accesses: [linkpretty("reqall",null,require_all)]" + + rightcolumn += "Paintjob" + for(var/option in list("none","engineering","atmos","security","command","medical","research","mining","maintenance","external","highsecurity")) + rightcolumn += linkpretty("paint=[option]",option,option == paintjob) + rightcolumn += "Glass door: " + linkpretty("glass",null,glassdoor) + "

    " + var/length = max(leftcolumn.len,rightcolumn.len) + + var/dat = "You may move the model airlock around. A new airlock will be built in its space when you click done, below.

    " + dat += "Door name: \"[doorname]\"" + dat += "" + for(var/i=1; i<=length; i++) + dat += "" + + dat += "
    " + if(i<=leftcolumn.len) + dat += leftcolumn[i] + dat += "" + if(i<=rightcolumn.len) + dat += rightcolumn[i] + dat += "

    Finalize Airlock Construction | Cancel and Destroy Airlock" + usr << browse(dat,"window=airlockmaker") + +/datum/airlock_maker/Topic(var/href,var/list/href_list) + if(!usr) + return + if(!src || !linked || !linked.loc) + usr << browse(null,"window=airlockmaker") + return + + if("rename" in href_list) + var/newname = stripped_input(usr,"New airlock name:","Name the airlock",doorname) + if(newname) + doorname = newname + if("access" in href_list) + var/value = text2num(href_list["access"]) + access_used ^= value + if("reqall" in href_list) + require_all = !require_all + if("paint" in href_list) + paintjob = href_list["paint"] + if("glass" in href_list) + glassdoor = !glassdoor + + if("cancel" in href_list) + usr << browse(null,"window=airlockmaker") + qdel(linked) + qdel(src) + return + + if("done" in href_list) + usr << browse(null,"window=airlockmaker") + var/turf/t_loc = linked.loc + qdel(linked) + if(!istype(t_loc)) + return + + var/target_type = "/obj/machinery/door/airlock" + if(glassdoor) + if(paintjob != "none") + if(paintjob in list("external","highsecurity","maintenance")) // no glass version + target_type += "/[paintjob]" + else + target_type += "/glass_[paintjob]" + else + target_type += "/glass" + else if(paintjob != "none") + target_type += "/[paintjob]" + var/final = target_type + target_type = text2path(final) + if(!target_type) + to_chat(usr, "Didn't work, contact Sayu with this: [final]") + usr << browse(null,"window=airlockmaker") + return + + var/obj/machinery/door/D = new target_type(t_loc) + + D.name = doorname + + if(access_used.len == 0) + D.req_access = null + D.req_one_access = null + else if(require_all) + D.req_access = access_used.Copy() + D.req_one_access = null + else + D.req_access = null + D.req_one_access = access_used.Copy() + + return + + interact() diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index 15cd346b2d..cf2b867941 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -77,26 +77,26 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) hsbinfo = "
    Sandbox Panel

    " if(admin) hsbinfo += "Administration
    " - hsbinfo += "- Toggle Object Spawning
    " - hsbinfo += "- Toggle Item Spawn Panel Auto-close
    " + hsbinfo += "- Toggle Object Spawning
    " + hsbinfo += "- Toggle Item Spawn Panel Auto-close
    " hsbinfo += "Canister Spawning
    " - hsbinfo += "- Spawn Plasma Canister
    " - hsbinfo += "- Spawn CO2 Canister
    " - hsbinfo += "- Spawn Nitrogen Canister
    " - hsbinfo += "- Spawn N2O Canister
    " + hsbinfo += "- Spawn Plasma Canister
    " + hsbinfo += "- Spawn CO2 Canister
    " + hsbinfo += "- Spawn Nitrogen Canister
    " + hsbinfo += "- Spawn N2O Canister
    " else hsbinfo += "Some item spawning may be disabled by the administrators.
    " hsbinfo += "Only administrators may spawn dangerous canisters.
    " for(var/T in hrefs) var/href = hrefs[T] if(href) - hsbinfo += "- [T]
    " + hsbinfo += "- [T]
    " else hsbinfo += "
    [T]
    " hsbinfo += "
    " - hsbinfo += "- Spawn Clothing...
    " - hsbinfo += "- Spawn Reagent Container...
    " - hsbinfo += "- Spawn Other Item...

    " + hsbinfo += "- Spawn Clothing...
    " + hsbinfo += "- Spawn Reagent Container...
    " + hsbinfo += "- Spawn Other Item...

    " usr << browse(hsbinfo, "window=hsbpanel") @@ -235,12 +235,12 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) if(!GLOB.hsboxspawn) return if(!clothinfo) - clothinfo = "Clothing (Reagent Containers) (Other Items)

    " + clothinfo = "Clothing (Reagent Containers) (Other Items)

    " var/list/all_items = subtypesof(/obj/item/clothing) for(var/typekey in spawn_forbidden) all_items -= typesof(typekey) for(var/O in reverseRange(all_items)) - clothinfo += "[O]
    " + clothinfo += "[O]
    " usr << browse(clothinfo,"window=sandbox") @@ -249,12 +249,12 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) if(!GLOB.hsboxspawn) return if(!reaginfo) - reaginfo = "Reagent Containers (Clothing) (Other Items)

    " + reaginfo = "Reagent Containers (Clothing) (Other Items)

    " var/list/all_items = subtypesof(/obj/item/reagent_containers) for(var/typekey in spawn_forbidden) all_items -= typesof(typekey) for(var/O in reverseRange(all_items)) - reaginfo += "[O]
    " + reaginfo += "[O]
    " usr << browse(reaginfo,"window=sandbox") @@ -263,13 +263,13 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) if(!GLOB.hsboxspawn) return if(!objinfo) - objinfo = "Other Items (Clothing) (Reagent Containers)

    " + objinfo = "Other Items (Clothing) (Reagent Containers)

    " var/list/all_items = subtypesof(/obj/item/) - typesof(/obj/item/clothing) - typesof(/obj/item/reagent_containers) for(var/typekey in spawn_forbidden) all_items -= typesof(typekey) for(var/O in reverseRange(all_items)) - objinfo += "[O]
    " + objinfo += "[O]
    " usr << browse(objinfo,"window=sandbox") diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 776b5d6981..484961b6f8 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -212,7 +212,7 @@ /proc/makeNewConstruct(mob/living/simple_animal/hostile/construct/ctype, mob/target, mob/stoner = null, cultoverride = 0, loc_override = null) var/mob/living/simple_animal/hostile/construct/newstruct = new ctype((loc_override) ? (loc_override) : (get_turf(target))) if(stoner) - newstruct.faction |= "\ref[stoner]" + newstruct.faction |= "[REF(stoner)]" newstruct.master = stoner var/datum/action/innate/seek_master/SM = new() SM.Grant(newstruct) @@ -244,7 +244,7 @@ S.key = T.key S.language_holder = U.language_holder.copy(S) if(U) - S.faction |= "\ref[U]" //Add the master as a faction, allowing inter-mob cooperation + S.faction |= "[REF(U)]" //Add the master as a faction, allowing inter-mob cooperation if(U && iscultist(U)) SSticker.mode.add_cultist(S.mind, 0) S.cancel_camera() diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 0838bfeed6..5b87255d37 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -425,7 +425,7 @@ /datum/spellbook_entry/item/warpwhistle name = "Warp Whistle" - desc = "A strange whistle that will transport you to a distant safe place on the station. There is a window of vulnerability at the begining of every use." + desc = "A strange whistle that will transport you to a distant safe place on the station. There is a window of vulnerability at the beginning of every use." item_path = /obj/item/warpwhistle category = "Mobility" cost = 1 @@ -652,7 +652,7 @@ var/list/cat_dat = list() for(var/category in categories) cat_dat[category] = "
    " - dat += "
  • [category]
  • " + dat += "
  • [category]
  • " dat += "
  • Points remaining : [uses]
  • " dat += "" @@ -663,11 +663,11 @@ E = entries[i] spell_info += E.GetInfo() if(E.CanBuy(user,src)) - spell_info+= "[E.buy_word]
    " + spell_info+= "[E.buy_word]
    " else spell_info+= "Can't [E.buy_word]
    " if(E.CanRefund(user,src)) - spell_info+= "Refund
    " + spell_info+= "Refund
    " spell_info += "
    " if(cat_dat[E.category]) cat_dat[E.category] += spell_info diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 286bcee1f8..baa31f7f27 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -119,10 +119,9 @@ Class Procs: var/critical_machine = FALSE //If this machine is critical to station operation and should have the area be excempted from power failures. var/list/occupant_typecache //if set, turned into typecache in Initialize, other wise, defaults to mob/living typecache var/atom/movable/occupant = null - var/unsecuring_tool = /obj/item/wrench var/interact_open = FALSE // Can the machine be interacted with when in maint/when the panel is open. var/interact_offline = 0 // Can the machine be interacted with while de-powered. - var/speed_process = 0 // Process as fast as possible? + var/speed_process = FALSE // Process as fast as possible? var/obj/item/circuitboard/circuit // Circuit to be created and inserted when the machinery is created /obj/machinery/Initialize() diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 673591aef1..84a18e3352 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -107,8 +107,8 @@ GLOBAL_LIST_EMPTY(announcement_systems) return - var/contents = "Arrival Announcement: ([(arrivalToggle ? "On" : "Off")])
    \n[arrival]

    \n" - contents += "Departmental Head Announcement: ([(newheadToggle ? "On" : "Off")])
    \n[newhead]

    \n" + var/contents = "Arrival Announcement: ([(arrivalToggle ? "On" : "Off")])
    \n[arrival]

    \n" + contents += "Departmental Head Announcement: ([(newheadToggle ? "On" : "Off")])
    \n[newhead]

    \n" var/datum/browser/popup = new(user, "announcement_config", "Automated Announcement Configuration", 370, 220) popup.set_content(contents) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 44c6812d05..d783be292e 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -240,8 +240,8 @@ var/dat = "

    Autolathe Menu:


    " dat += materials_printout() - dat += "
    \ - \ + dat += "\ + \ \ \ \ @@ -256,14 +256,14 @@ dat += "" line_length = 1 - dat += "[C]" + dat += "[C]" line_length++ dat += "
    " return dat /obj/machinery/autolathe/proc/category_win(mob/user,selected_category) - var/dat = "Return to main menu" + var/dat = "Return to main menu" dat += "

    Browsing [selected_category]:


    " dat += materials_printout() @@ -275,22 +275,22 @@ if(disabled || !can_build(D)) dat += "[D.name]" else - dat += "[D.name]" + dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) GET_COMPONENT(materials, /datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) if (max_multiplier>10 && !disabled) - dat += " x10" + dat += " x10" if (max_multiplier>25 && !disabled) - dat += " x25" + dat += " x25" if(max_multiplier > 0 && !disabled) - dat += " x[max_multiplier]" + dat += " x[max_multiplier]" else if(!disabled && can_build(D, 5)) - dat += " x5" + dat += " x5" if(!disabled && can_build(D, 10)) - dat += " x10" + dat += " x10" dat += "[get_design_cost(D)]
    " @@ -298,7 +298,7 @@ return dat /obj/machinery/autolathe/proc/search_win(mob/user) - var/dat = "Return to main menu" + var/dat = "Return to main menu" dat += "

    Search results:


    " dat += materials_printout() @@ -307,17 +307,17 @@ if(disabled || !can_build(D)) dat += "[D.name]" else - dat += "[D.name]" + dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) GET_COMPONENT(materials, /datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) if (max_multiplier>10 && !disabled) - dat += " x10" + dat += " x10" if (max_multiplier>25 && !disabled) - dat += " x25" + dat += " x25" if(max_multiplier > 0 && !disabled) - dat += " x[max_multiplier]" + dat += " x[max_multiplier]" dat += "[get_design_cost(D)]
    " diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm index 9d446aa77c..b8d20b0c59 100644 --- a/code/game/machinery/bank_machine.dm +++ b/code/game/machinery/bank_machine.dm @@ -62,11 +62,11 @@ var/dat = "[world.name] secure vault. Authorized personnel only.
    " dat += "Current Balance: [SSshuttle.points] credits.
    " if(!siphoning) - dat += "Siphon Credits
    " + dat += "Siphon Credits
    " else - dat += "Halt Credit Siphon
    " + dat += "Halt Credit Siphon
    " - dat += "Close" + dat += "Close" var/datum/browser/popup = new(user, "computer", "Bank Vault", 300, 200) popup.set_content("
    [dat]
    ") diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 80d50cfb17..17a65f7033 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -203,7 +203,7 @@ if(U.name == "Unknown") to_chat(AI, "[U] holds \a [itemname] up to one of your cameras ...") else - to_chat(AI, "[U] holds \a [itemname] up to one of your cameras ...") + to_chat(AI, "[U] holds \a [itemname] up to one of your cameras ...") AI.last_paper_seen = "[itemname][info]" else if (O.client && O.client.eye == src) to_chat(O, "[U] holds \a [itemname] up to one of the cameras ...") diff --git a/code/game/machinery/camera/motion.dm b/code/game/machinery/camera/motion.dm index 6ac7e1249d..68b3f284e4 100644 --- a/code/game/machinery/camera/motion.dm +++ b/code/game/machinery/camera/motion.dm @@ -32,7 +32,7 @@ if (detectTime == 0) detectTime = world.time // start the clock var/list/targets = getTargetList() - targets |= "\ref[target]" + targets |= "[REF(target)]" return 1 /obj/machinery/camera/Destroy() @@ -43,7 +43,7 @@ /obj/machinery/camera/proc/lostTarget(mob/target) var/list/targets = getTargetList() - targets -= "\ref[target]" + targets -= "[REF(target)]" if (targets.len == 0) cancelAlarm() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 375a4bb776..9b35f06acc 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -302,7 +302,7 @@ comp.AttachCloner(src) else P.buffer = src - to_chat(user, "-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-") + to_chat(user, "-% Successfully stored [REF(P.buffer)] [P.buffer.name] in buffer %-") return var/mob/living/mob_occupant = occupant diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index b590763ffe..920dd118c5 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -61,10 +61,10 @@ else dat += "AI functional" if (!src.active) - dat += {"

    Begin Reconstruction"} + dat += {"

    Begin Reconstruction"} else dat += "

    Reconstruction in process, please wait.
    " - dat += {"
    Close"} + dat += {"
    Close"} var/datum/browser/popup = new(user, "computer", "AI System Integrity Restorer", 400, 500) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index c93c96429c..aa644eb738 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -9,7 +9,7 @@ var/list/apcs //APCs the computer has access to var/mob/living/operator //Who's operating the computer right now var/obj/machinery/power/apc/active_apc //The APC we're using right now - var/list/filters //For sorting the results + var/list/result_filters //For sorting the results var/checking_logs = 0 var/list/logs var/authenticated = 0 @@ -18,7 +18,7 @@ /obj/machinery/computer/apc_control/Initialize() . = ..() apcs = list() //To avoid BYOND making the list run through a ton of procs - filters = list("Name" = null, "Charge Above" = null, "Charge Below" = null, "Responsive" = null) + result_filters = list("Name" = null, "Charge Above" = null, "Charge Below" = null, "Responsive" = null) /obj/machinery/computer/apc_control/process() apcs = list() //Clear the list every tick @@ -52,28 +52,28 @@ if(!checking_logs) dat += "Logged in as [auth_id].

    " dat += "Filters
    " - dat += "Name: [filters["Name"] ? filters["Name"] : "None set"]
    " - dat += "Charge: \>[filters["Charge Above"] ? filters["Charge Above"] : "NaN"]% and \<[filters["Charge Below"] ? filters["Charge Below"] : "NaN"]%
    " - dat += "Accessible: [filters["Responsive"] ? "Non-Responsive Only" : "All"]

    " + dat += "Name: [result_filters["Name"] ? result_filters["Name"] : "None set"]
    " + dat += "Charge: \>[result_filters["Charge Above"] ? result_filters["Charge Above"] : "NaN"]% and \<[result_filters["Charge Below"] ? result_filters["Charge Below"] : "NaN"]%
    " + dat += "Accessible: [result_filters["Responsive"] ? "Non-Responsive Only" : "All"]

    " for(var/A in apcs) var/obj/machinery/power/apc/APC = apcs[A] - if(filters["Name"] && !findtext(APC.name, filters["Name"]) && !findtext(APC.area.name, filters["Name"])) + if(result_filters["Name"] && !findtext(APC.name, result_filters["Name"]) && !findtext(APC.area.name, result_filters["Name"])) continue - if(filters["Charge Above"] && (APC.cell.charge / APC.cell.maxcharge) < filters["Charge Above"] / 100) + if(result_filters["Charge Above"] && (APC.cell.charge / APC.cell.maxcharge) < result_filters["Charge Above"] / 100) continue - if(filters["Charge Below"] && (APC.cell.charge / APC.cell.maxcharge) > filters["Charge Below"] / 100) + if(result_filters["Charge Below"] && (APC.cell.charge / APC.cell.maxcharge) > result_filters["Charge Below"] / 100) continue - if(filters["Responsive"] && !APC.aidisabled) + if(result_filters["Responsive"] && !APC.aidisabled) continue - dat += "[A]
    \ + dat += "[A]
    \ Charge: [DisplayPower(APC.cell.charge)] / [DisplayPower(APC.cell.maxcharge)] ([round((APC.cell.charge / APC.cell.maxcharge) * 100)]%)
    \ Area: [APC.area]
    \ [APC.aidisabled || APC.panel_open ? "APC does not respond to interface query." : "APC responds to interface query."]

    " - dat += "Check Logs
    " - dat += "Log Out
    " + dat += "Check Logs
    " + dat += "Log Out
    " if(emagged) dat += "WARNING: Logging functionality partially disabled from outside source.
    " - dat += "Restore logging functionality?
    " + dat += "Restore logging functionality?
    " else if(logs.len) for(var/entry in logs) @@ -81,11 +81,11 @@ else dat += "No activity has been recorded at this time.
    " if(emagged) - dat += "@#%! CLEAR LOGS" - dat += "Return" + dat += "@#%! CLEAR LOGS" + dat += "Return" operator = user else - dat = "Please swipe a valid ID to log in..." + dat = "Please swipe a valid ID to log in..." var/datum/browser/popup = new(user, "apc_control", name, 600, 400) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) @@ -153,7 +153,7 @@ return log_activity("changed name filter to \"[new_filter]\"") playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - filters["Name"] = new_filter + result_filters["Name"] = new_filter if(href_list["above_filter"]) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) var/new_filter = input(usr, "Enter a percentage from 1-100 to sort by (greater than).", name) as null|num @@ -163,7 +163,7 @@ if(new_filter) new_filter = Clamp(new_filter, 0, 100) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - filters["Charge Above"] = new_filter + result_filters["Charge Above"] = new_filter if(href_list["below_filter"]) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) var/new_filter = input(usr, "Enter a percentage from 1-100 to sort by (lesser than).", name) as null|num @@ -173,13 +173,13 @@ if(new_filter) new_filter = Clamp(new_filter, 0, 100) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - filters["Charge Below"] = new_filter + result_filters["Charge Below"] = new_filter if(href_list["access_filter"]) - if(isnull(filters["Responsive"])) - filters["Responsive"] = 1 + if(isnull(result_filters["Responsive"])) + result_filters["Responsive"] = 1 log_activity("sorted by non-responsive APCs only") else - filters["Responsive"] = !filters["Responsive"] + result_filters["Responsive"] = !result_filters["Responsive"] log_activity("sorted by all APCs") playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) if(href_list["check_logs"]) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 7748022da1..4203971522 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -134,18 +134,18 @@ if(..()) return user.set_machine(src) - var/dat = "Close" + var/dat = "Close" dat += "

    [enemy_name]

    " dat += "

    [temp]

    " dat += "
    Health: [player_hp] | Magic: [player_mp] | Enemy Health: [enemy_hp]
    " if (gameover) - dat += "
    New Game" + dat += "
    New Game" else - dat += "
    Attack | " - dat += "Heal | " - dat += "Recharge Power" + dat += "
    Attack | " + dat += "Heal | " + dat += "Recharge Power" dat += "
    " var/datum/browser/popup = new(user, "arcade", "Space Villian 2000") @@ -439,7 +439,7 @@ name = "The Orion Trail" desc = "Learn how our ancestors got to Orion, and have fun in the process!" - dat += "

    May They Rest In Peace

    " + dat += "

    May They Rest In Peace

    " else if(event) dat = eventdat else if(gameStatus == ORION_STATUS_NORMAL) @@ -452,16 +452,16 @@ dat += "
    Food: [food] | Fuel: [fuel]" dat += "
    Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]" if(turns == 7) - dat += "

    Go Around Continue

    " + dat += "

    Go Around Continue

    " else - dat += "

    Continue

    " - dat += "

    Kill a Crewmember

    " - dat += "

    Close

    " + dat += "

    Continue

    " + dat += "

    Kill a Crewmember

    " + dat += "

    Close

    " else dat = "

    The Orion Trail

    " dat += "

    Experience the journey of your ancestors!



    " - dat += "
    New Game
    " - dat += "

    Close

    " + dat += "
    New Game
    " + dat += "

    Close

    " var/datum/browser/popup = new(user, "arcade", "The Orion Trail",400,700) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) @@ -769,41 +769,41 @@ eventdat += "
    [deadname] tried to fight back, but was killed." else eventdat += "
    Fortunately, you fended them off without any trouble." - eventdat += "

    Continue

    " - eventdat += "

    Close

    " + eventdat += "

    Continue

    " + eventdat += "

    Close

    " canContinueEvent = 1 if(ORION_TRAIL_FLUX) eventdat += "This region of space is highly turbulent.
    If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies." eventdat += "
    What will you do?" - eventdat += "

    Slow Down Continue

    " - eventdat += "

    Close

    " + eventdat += "

    Slow Down Continue

    " + eventdat += "

    Close

    " if(ORION_TRAIL_ILLNESS) eventdat += "A deadly illness has been contracted!" var/deadname = remove_crewmember() eventdat += "
    [deadname] was killed by the disease." - eventdat += "

    Continue

    " - eventdat += "

    Close

    " + eventdat += "

    Continue

    " + eventdat += "

    Close

    " canContinueEvent = 1 if(ORION_TRAIL_BREAKDOWN) eventdat += "Oh no! The engine has broken down!" eventdat += "
    You can repair it with an engine part, or you can make repairs for 3 days." if(engine >= 1) - eventdat += "

    Use PartWait

    " + eventdat += "

    Use PartWait

    " else - eventdat += "

    Wait

    " - eventdat += "

    Close

    " + eventdat += "

    Wait

    " + eventdat += "

    Close

    " if(ORION_TRAIL_MALFUNCTION) eventdat += "The ship's systems are malfunctioning!" eventdat += "
    You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI." if(electronics >= 1) - eventdat += "

    Use PartWait

    " + eventdat += "

    Use PartWait

    " else - eventdat += "

    Wait

    " - eventdat += "

    Close

    " + eventdat += "

    Wait

    " + eventdat += "

    Close

    " if(ORION_TRAIL_COLLISION) eventdat += "Something hit us! Looks like there's some hull damage." @@ -818,23 +818,23 @@ eventdat += "
    [deadname] was killed by rapid depressurization." eventdat += "
    You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together." if(hull >= 1) - eventdat += "

    Use PartWait

    " + eventdat += "

    Use PartWait

    " else - eventdat += "

    Wait

    " - eventdat += "

    Close

    " + eventdat += "

    Wait

    " + eventdat += "

    Close

    " if(ORION_TRAIL_BLACKHOLE) eventdat += "You were swept away into the black hole." - eventdat += "

    Oh...

    " - eventdat += "

    Close

    " + eventdat += "

    Oh...

    " + eventdat += "

    Close

    " settlers = list() if(ORION_TRAIL_LING) eventdat += "Strange reports warn of changelings infiltrating crews on trips to Orion..." if(settlers.len <= 2) eventdat += "
    Your crew's chance of reaching Orion is so slim the changelings likely avoided your ship..." - eventdat += "

    Continue

    " - eventdat += "

    Close

    " + eventdat += "

    Continue

    " + eventdat += "

    Close

    " if(prob(10)) // "likely", I didn't say it was guaranteed! lings_aboard = min(++lings_aboard,2) else @@ -844,9 +844,9 @@ else if(prob(70)) lings_aboard = min(++lings_aboard,2) - eventdat += "

    Kill a Crewmember

    " - eventdat += "

    Risk it

    " - eventdat += "

    Close

    " + eventdat += "

    Kill a Crewmember

    " + eventdat += "

    Risk it

    " + eventdat += "

    Close

    " canContinueEvent = 1 if(ORION_TRAIL_LING_ATTACK) @@ -892,8 +892,8 @@ else lings_aboard = max(0,--lings_aboard) - eventdat += "

    Continue

    " - eventdat += "

    Close

    " + eventdat += "

    Continue

    " + eventdat += "

    Close

    " canContinueEvent = 1 @@ -903,8 +903,8 @@ eventdat += "The spaceport is on high alert! You've been barred from docking by the local authorities after your failed raid." if(last_spaceport_action) eventdat += "
    Last Spaceport Action: [last_spaceport_action]" - eventdat += "

    Depart Spaceport

    " - eventdat += "

    Close

    " + eventdat += "

    Depart Spaceport

    " + eventdat += "

    Close

    " else eventdat += "Your jump into the sector yields a spaceport - a lucky find!" eventdat += "
    This spaceport is home to travellers who failed to reach Orion, but managed to find a different home..." @@ -943,13 +943,13 @@ //Buy crew if(food >= 10 && fuel >= 10) - eventdat += "

    Hire a New Crewmember (-10FU, -10FO)

    " + eventdat += "

    Hire a New Crewmember (-10FU, -10FO)

    " else eventdat += "

    You cannot afford a new crewmember.

    " //Sell crew if(settlers.len > 1) - eventdat += "

    Sell Crew for Fuel and Food (+7FU, +7FO)

    " + eventdat += "

    Sell Crew for Fuel and Food (+7FU, +7FO)

    " else eventdat += "

    You have no other crew to sell.

    " @@ -958,37 +958,37 @@ //Engine parts if(fuel > 5) - eventdat += "

    Buy Engine Parts (-5FU)

    " + eventdat += "

    Buy Engine Parts (-5FU)

    " else eventdat += "

    You cannot afford engine parts." //Hull plates if(fuel > 5) - eventdat += "

    Buy Hull Plates (-5FU)

    " + eventdat += "

    Buy Hull Plates (-5FU)

    " else eventdat += "

    You cannot afford hull plates." //Electronics if(fuel > 5) - eventdat += "

    Buy Spare Electronics (-5FU)

    " + eventdat += "

    Buy Spare Electronics (-5FU)

    " else eventdat += "

    You cannot afford spare electronics." //Trade if(fuel > 5) - eventdat += "

    Trade Fuel for Food (-5FU,+5FO)

    " + eventdat += "

    Trade Fuel for Food (-5FU,+5FO)

    " else eventdat += "

    You don't have 5FU to trade. 5) - eventdat += "

    Trade Food for Fuel (+5FU,-5FO)

    " + eventdat += "

    Trade Food for Fuel (+5FU,-5FO)

    " else eventdat += "

    You don't have 5FO to trade." - dat = "Crew Manifest:
    Please use security record computer to modify entries.

    [crew]Print

    Access ID modification console.
    " + dat = "Crew Manifest:
    Please use security record computer to modify entries.

    [crew]Print

    Access ID modification console.
    " else if(mode == 2) // JOB MANAGEMENT - dat = "Return" + dat = "Return" dat += " || Confirm Identity: " var/S if(scan) S = html_encode(scan.name) else S = "--------" - dat += "[S]" + dat += "[S]" dat += "" dat += "" var/ID @@ -174,7 +174,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) switch(can_open_job(job)) if(1) if(ID) - dat += "Open Position
    " + dat += "Open Position
    " else dat += "Open Position" if(-1) @@ -190,7 +190,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) switch(can_close_job(job)) if(1) if(ID) - dat += "Close Position" + dat += "Close Position" else dat += "Close Position" if(-1) @@ -209,10 +209,10 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) else if(ID) if(job in SSjob.prioritized_jobs) - dat += "Deprioritize" + dat += "Deprioritize" else if(SSjob.prioritized_jobs.len < 5) - dat += "Prioritize" + dat += "Prioritize" else dat += "Denied" else @@ -247,14 +247,14 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) if(!authenticated) header += "
    Please insert the cards into the slots
    " - header += "Target: [target_name]
    " - header += "Confirm Identity: [scan_name]
    " + header += "Target: [target_name]
    " + header += "Confirm Identity: [scan_name]
    " else header += "

    " - header += "Remove [target_name] || " - header += "Remove [scan_name]
    " - header += "Access Crew Manifest
    " - header += "Log Out
    " + header += "Remove [target_name] || " + header += "Remove [scan_name]
    " + header += "Access Crew Manifest
    " + header += "Log Out" header += "
    " @@ -262,7 +262,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) var/list/alljobs = list("Unassigned") alljobs += (istype(src, /obj/machinery/computer/card/centcom)? get_all_centcom_jobs() : get_all_jobs()) + "Custom" for(var/job in alljobs) - jobs_all += "[replacetext(job, " ", " ")] " //make sure there isn't a line break in the middle of a job + jobs_all += "[replacetext(job, " ", " ")] " //make sure there isn't a line break in the middle of a job var/body @@ -290,8 +290,8 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) allJobsSlot.innerHTML = "show"; } "} - carddesc += "" - carddesc += "" + carddesc += "" + carddesc += "" carddesc += "" carddesc += "registered name:" carddesc += "" @@ -302,16 +302,16 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) else carddesc += "registered_name: [target_owner]" - jobs += "Assignment: [target_rank] (Demote)" + jobs += "Assignment: [target_rank] (Demote)" var/accesses = "" if(istype(src, /obj/machinery/computer/card/centcom)) accesses += "
    Central Command:
    " for(var/A in get_all_centcom_access()) if(A in modify.access) - accesses += "[replacetext(get_centcom_access_desc(A), " ", " ")] " + accesses += "[replacetext(get_centcom_access_desc(A), " ", " ")] " else - accesses += "[replacetext(get_centcom_access_desc(A), " ", " ")] " + accesses += "[replacetext(get_centcom_access_desc(A), " ", " ")] " else accesses += "
    Access
    " accesses += "
    JobSlotsOpen jobClose jobPrioritize
    " @@ -327,19 +327,19 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) accesses += "" accesses += "
    " for(var/A in get_region_accesses(i)) if(A in modify.access) - accesses += "[replacetext(get_access_desc(A), " ", " ")] " + accesses += "[replacetext(get_access_desc(A), " ", " ")] " else - accesses += "[replacetext(get_access_desc(A), " ", " ")] " + accesses += "[replacetext(get_access_desc(A), " ", " ")] " accesses += "
    " accesses += "
    " body = "[carddesc]
    [jobs]

    [accesses]" //CHECK THIS else - body = "{Log in}


    " - body += "Access Crew Manifest" + body = "{Log in}

    " + body += "Access Crew Manifest" if(!target_dept) - body += "

    Job Management" + body += "

    Job Management" dat = "[header][body]

    " var/datum/browser/popup = new(user, "id_com", src.name, 900, 620) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index ee316b3eed..ba11b0fa8f 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -138,7 +138,7 @@ AttachCloner(pod) else P.buffer = src - to_chat(user, "-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-") + to_chat(user, "-% Successfully stored [REF(P.buffer)] [P.buffer.name] in buffer %-") return else return ..() @@ -158,13 +158,13 @@ updatemodules(TRUE) var/dat = "" - dat += "Refresh" + dat += "Refresh" if(scanner && HasEfficientPod() && scanner.scan_level > 2) if(!autoprocess) - dat += "Autoprocess" + dat += "Autoprocess" else - dat += "Stop autoprocess" + dat += "Stop autoprocess" else dat += "Autoprocess" dat += "

    Cloning Pod Status

    " @@ -175,7 +175,7 @@ // Modules if (isnull(src.scanner) || !LAZYLEN(pods)) dat += "

    Modules

    " - //dat += "Reload Modules" + //dat += "Reload Modules" if (isnull(src.scanner)) dat += "ERROR: No Scanner detected!
    " if (!LAZYLEN(pods)) @@ -200,36 +200,36 @@ dat += "
    " if(scanner_occupant) - dat += "Start Scan" - dat += "
    [src.scanner.locked ? "Unlock Scanner" : "Lock Scanner"]" + dat += "Start Scan" + dat += "
    [src.scanner.locked ? "Unlock Scanner" : "Lock Scanner"]" else dat += "Start Scan" // Database dat += "

    Database Functions

    " if (src.records.len && src.records.len > 0) - dat += "View Records ([src.records.len])
    " + dat += "View Records ([src.records.len])
    " else dat += "View Records (0)
    " if (src.diskette) - dat += "Eject Disk
    " + dat += "Eject Disk
    " if(2) dat += "

    Current records

    " - dat += "<< Back

    " + dat += "<< Back

    " for(var/datum/data/record/R in records) - dat += "

    [R.fields["name"]]

    Scan ID [R.fields["id"]] View Record" + dat += "

    [R.fields["name"]]

    Scan ID [R.fields["id"]] View Record" if(3) dat += "

    Selected Record

    " - dat += "<< Back
    " + dat += "<< Back
    " if (!src.active_record) dat += "Record not found." else dat += "

    [src.active_record.fields["name"]]

    " - dat += "Scan ID [src.active_record.fields["id"]] Clone
    " + dat += "Scan ID [src.active_record.fields["id"]] Clone
    " var/obj/item/implant/health/H = locate(src.active_record.fields["imp"]) @@ -253,12 +253,12 @@ if(diskette.fields["SE"]) L += "Structural Enzymes" dat += english_list(L, "Empty", " + ", " + ") - dat += "
    Load from Disk" + dat += "
    Load from Disk" - dat += "
    Save to Disk" + dat += "
    Save to Disk" dat += "
    " - dat += "Delete Record" + dat += "Delete Record" if(4) if (!src.active_record) @@ -266,8 +266,8 @@ dat = "[src.temp]
    " dat += "

    Confirm Record Deletion

    " - dat += "Scan card to confirm.
    " - dat += "Cancel" + dat += "Scan card to confirm.
    " + dat += "Cancel" var/datum/browser/popup = new(user, "cloning", "Cloning System Control") @@ -484,7 +484,7 @@ R.fields["factions"] = mob_occupant.faction if (!isnull(mob_occupant.mind)) //Save that mind so traitors can continue traitoring after cloning. - R.fields["mind"] = "\ref[mob_occupant.mind]" + R.fields["mind"] = "[REF(mob_occupant.mind)]" //Add an implant if needed var/obj/item/implant/health/imp @@ -494,7 +494,7 @@ if(!imp) imp = new /obj/item/implant/health(mob_occupant) imp.implant(mob_occupant) - R.fields["imp"] = "\ref[imp]" + R.fields["imp"] = "[REF(imp)]" src.records += R scantemp = "Subject successfully scanned." diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index c08eda2772..0ca59c45bc 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -454,33 +454,33 @@ dat += "Unable to trace most recent shuttle call/recall signal.
    " dat += "Logged in as: [auth_id]" dat += "
    " - dat += "
    \[ Log Out \]
    " + dat += "
    \[ Log Out \]
    " dat += "
    General Functions" - dat += "
    \[ Message List \]" + dat += "
    \[ Message List \]" switch(SSshuttle.emergency.mode) if(SHUTTLE_IDLE, SHUTTLE_RECALL) - dat += "
    \[ Call Emergency Shuttle \]" + dat += "
    \[ Call Emergency Shuttle \]" else - dat += "
    \[ Cancel Shuttle Call \]" + dat += "
    \[ Cancel Shuttle Call \]" - dat += "
    \[ Set Status Display \]" + dat += "
    \[ Set Status Display \]" if (authenticated==2) dat += "

    Captain Functions" - dat += "
    \[ Make a Captain's Announcement \]" + dat += "
    \[ Make a Captain's Announcement \]" if(CONFIG_GET(string/cross_server_address)) - dat += "
    \[ Send a message to an allied station \]" - if(SSmapping.config.allow_custom_shuttles == "yes") - dat += "
    \[ Purchase Shuttle \]" - dat += "
    \[ Change Alert Level \]" - dat += "
    \[ Emergency Maintenance Access \]" - dat += "
    \[ Request Nuclear Authentication Codes \]" + dat += "
    \[ Send a message to an allied station \]" + if(SSmapping.config.allow_custom_shuttles) + dat += "
    \[ Purchase Shuttle \]" + dat += "
    \[ Change Alert Level \]" + dat += "
    \[ Emergency Maintenance Access \]" + dat += "
    \[ Request Nuclear Authentication Codes \]" if(!emagged) - dat += "
    \[ Send Message to CentCom \]" + dat += "
    \[ Send Message to CentCom \]" else - dat += "
    \[ Send Message to \[UNKNOWN\] \]" - dat += "
    \[ Restore Backup Routing Data \]" + dat += "
    \[ Send Message to \[UNKNOWN\] \]" + dat += "
    \[ Restore Backup Routing Data \]" else - dat += "
    \[ Log In \]" + dat += "
    \[ Log In \]" if(STATE_CALLSHUTTLE) dat += get_call_shuttle_form() playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) @@ -491,7 +491,7 @@ dat += "Messages:" for(var/i in 1 to messages.len) var/datum/comm_message/M = messages[i] - dat += "
    [M.title]" + dat += "
    [M.title]" playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) if(STATE_VIEWMESSAGE) if (currmsg) @@ -499,53 +499,53 @@ if(!currmsg.answered && currmsg.possible_answers.len) for(var/i in 1 to currmsg.possible_answers.len) var/answer = currmsg.possible_answers[i] - dat += "
    \[ Answer : [answer] \]" + dat += "
    \[ Answer : [answer] \]" else if(currmsg.answered) var/answered = currmsg.possible_answers[currmsg.answered] dat += "
    Archived Answer : [answered]" - dat += "

    \[ Delete \]" + dat += "

    \[ Delete \]" else aistate = STATE_MESSAGELIST attack_hand(user) return null if(STATE_DELMESSAGE) if (currmsg) - dat += "Are you sure you want to delete this message? \[ OK | Cancel \]" + dat += "Are you sure you want to delete this message? \[ OK | Cancel \]" else state = STATE_MESSAGELIST attack_hand(user) return if(STATE_STATUSDISPLAY) dat += "Set Status Displays
    " - dat += "\[ Clear \]
    " - dat += "\[ Shuttle ETA \]
    " - dat += "\[ Message \]" - dat += "
    " - dat += "\[ Alert: None |" - dat += " Red Alert |" - dat += " Lockdown |" - dat += " Biohazard \]

    " + dat += "\[ Clear \]
    " + dat += "\[ Shuttle ETA \]
    " + dat += "\[ Message \]" + dat += "
    " + dat += "\[ Alert: None |" + dat += " Red Alert |" + dat += " Lockdown |" + dat += " Biohazard \]

    " playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) if(STATE_ALERT_LEVEL) dat += "Current alert level: [get_security_level()]
    " if(GLOB.security_level == SEC_LEVEL_DELTA) dat += "The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate." else - dat += "Blue
    " - dat += "Green" + dat += "Blue
    " + dat += "Green" if(STATE_CONFIRM_LEVEL) dat += "Current alert level: [get_security_level()]
    " dat += "Confirm the change to: [num2seclevel(tmp_alertlevel)]
    " - dat += "Swipe ID to confirm change.
    " + dat += "Swipe ID to confirm change.
    " if(STATE_TOGGLE_EMERGENCY) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) if(GLOB.emergency_access == 1) dat += "Emergency Maintenance Access is currently ENABLED" - dat += "
    Restore maintenance access restrictions?
    \[ OK | Cancel \]" + dat += "
    Restore maintenance access restrictions?
    \[ OK | Cancel \]" else dat += "Emergency Maintenance Access is currently DISABLED" - dat += "
    Lift access restrictions on maintenance and external airlocks?
    \[ OK | Cancel \]" + dat += "
    Lift access restrictions on maintenance and external airlocks?
    \[ OK | Cancel \]" if(STATE_PURCHASE) dat += "Budget: [SSshuttle.points] Credits.
    " @@ -556,9 +556,9 @@ dat += "[S.description]
    " if(S.prerequisites) dat += "Prerequisites: [S.prerequisites]
    " - dat += "(Purchase)

    " + dat += "(Purchase)

    " - dat += "

    \[ [(state != STATE_DEFAULT) ? "Main Menu | " : ""]Close \]" + dat += "

    \[ [(state != STATE_DEFAULT) ? "Main Menu | " : ""]Close \]" popup.set_content(dat) popup.open() @@ -585,8 +585,8 @@ /obj/machinery/computer/communications/proc/get_call_shuttle_form(ai_interface = 0) var/form_id = "callshuttle" var/dat = get_javascript_header(form_id) - dat += "" - dat += "" + dat += "" + dat += "" dat += "" dat += "Nature of emergency:
    " dat += "
    Are you sure you want to call the shuttle? \[ Call \]" @@ -595,8 +595,8 @@ /obj/machinery/computer/communications/proc/get_cancel_shuttle_form() var/form_id = "cancelshuttle" var/dat = get_javascript_header(form_id) - dat += "" - dat += "" + dat += "" + dat += "" dat += "" dat += "
    Are you sure you want to cancel the shuttle? \[ Cancel \]" @@ -616,39 +616,39 @@ else dat += "Current login: None" dat += "

    General Functions" - dat += "
    \[ Message List \]" + dat += "
    \[ Message List \]" if(SSshuttle.emergency.mode == SHUTTLE_IDLE) - dat += "
    \[ Call Emergency Shuttle \]" - dat += "
    \[ Set Status Display \]" + dat += "
    \[ Call Emergency Shuttle \]" + dat += "
    \[ Set Status Display \]" dat += "

    Special Functions" - dat += "
    \[ Make an Announcement \]" - dat += "
    \[ Change Alert Level \]" - dat += "
    \[ Emergency Maintenance Access \]" + dat += "
    \[ Make an Announcement \]" + dat += "
    \[ Change Alert Level \]" + dat += "
    \[ Emergency Maintenance Access \]" if(STATE_CALLSHUTTLE) dat += get_call_shuttle_form(1) if(STATE_MESSAGELIST) dat += "Messages:" for(var/i in 1 to messages.len) var/datum/comm_message/M = messages[i] - dat += "
    [M.title]" + dat += "
    [M.title]" if(STATE_VIEWMESSAGE) if (aicurrmsg) dat += "[aicurrmsg.title]

    [aicurrmsg.content]" if(!aicurrmsg.answered && aicurrmsg.possible_answers.len) for(var/i in 1 to aicurrmsg.possible_answers.len) var/answer = aicurrmsg.possible_answers[i] - dat += "
    \[ Answer : [answer] \]" + dat += "
    \[ Answer : [answer] \]" else if(aicurrmsg.answered) var/answered = aicurrmsg.possible_answers[aicurrmsg.answered] dat += "
    Archived Answer : [answered]" - dat += "

    \[ Delete \]" + dat += "

    \[ Delete \]" else aistate = STATE_MESSAGELIST attack_hand(user) return null if(STATE_DELMESSAGE) if(aicurrmsg) - dat += "Are you sure you want to delete this message? \[ OK | Cancel \]" + dat += "Are you sure you want to delete this message? \[ OK | Cancel \]" else aistate = STATE_MESSAGELIST attack_hand(user) @@ -656,33 +656,33 @@ if(STATE_STATUSDISPLAY) dat += "Set Status Displays
    " - dat += "\[ Clear \]
    " - dat += "\[ Shuttle ETA \]
    " - dat += "\[ Message \]" - dat += "
    " - dat += "\[ Alert: None |" - dat += " Red Alert |" - dat += " Lockdown |" - dat += " Biohazard \]

    " + dat += "\[ Clear \]
    " + dat += "\[ Shuttle ETA \]
    " + dat += "\[ Message \]" + dat += "
    " + dat += "\[ Alert: None |" + dat += " Red Alert |" + dat += " Lockdown |" + dat += " Biohazard \]

    " if(STATE_ALERT_LEVEL) dat += "Current alert level: [get_security_level()]
    " if(GLOB.security_level == SEC_LEVEL_DELTA) dat += "The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate." else - dat += "Blue
    " - dat += "Green" + dat += "Blue
    " + dat += "Green" if(STATE_TOGGLE_EMERGENCY) if(GLOB.emergency_access == 1) dat += "Emergency Maintenance Access is currently ENABLED" - dat += "
    Restore maintenance access restrictions?
    \[ OK | Cancel \]" + dat += "
    Restore maintenance access restrictions?
    \[ OK | Cancel \]" else dat += "Emergency Maintenance Access is currently DISABLED" - dat += "
    Lift access restrictions on maintenance and external airlocks?
    \[ OK | Cancel \]" + dat += "
    Lift access restrictions on maintenance and external airlocks?
    \[ OK | Cancel \]" - dat += "

    \[ [(aistate != STATE_DEFAULT) ? "Main Menu | " : ""]Close \]" + dat += "

    \[ [(aistate != STATE_DEFAULT) ? "Main Menu | " : ""]Close \]" return dat /obj/machinery/computer/communications/proc/make_announcement(mob/living/user, is_silicon) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index c540b51560..8e1447285c 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -143,27 +143,27 @@ status += "
    Pulse Duration:
    [radduration]
    " status += "
      \> Accuracy:
    [chance_to_hit]
    " status += "
    " // Close statusDisplay div - var/buttons = "Scan " + var/buttons = "Scan " if(connected) - buttons += " [connected.state_open ? "Close" : "Open"] Scanner " + buttons += " [connected.state_open ? "Close" : "Open"] Scanner " if (connected.state_open) buttons += "[connected.locked ? "Unlock" : "Lock"] Scanner " else - buttons += "[connected.locked ? "Unlock" : "Lock"] Scanner " + buttons += "[connected.locked ? "Unlock" : "Lock"] Scanner " else buttons += "Open Scanner Lock Scanner " if(viable_occupant) - buttons += "Inject Rejuvenators " + buttons += "Inject Rejuvenators " else buttons += "Inject Rejuvenators " if(diskette) - buttons += "Eject Disk " + buttons += "Eject Disk " else buttons += "Eject Disk " if(current_screen == "buffer") - buttons += "Radiation Emitter Menu " + buttons += "Radiation Emitter Menu " else - buttons += "Buffer Menu " + buttons += "Buffer Menu " switch(current_screen) if("working") @@ -182,12 +182,12 @@ if( !buffer_slot || !buffer_slot.len || !buffer_slot["name"] || !((buffer_slot["UI"] && buffer_slot["UE"]) || buffer_slot["SE"]) ) temp_html += "
    \tNo Data" if(viable_occupant) - temp_html += "
    Save to Buffer " + temp_html += "
    Save to Buffer " else temp_html += "
    Save to Buffer " temp_html += "Clear Buffer " if(diskette) - temp_html += "Load from Disk " + temp_html += "Load from Disk " else temp_html += "Load from Disk " temp_html += "Save to Disk " @@ -198,18 +198,18 @@ var/name = buffer_slot["name"] var/label = buffer_slot["label"] var/blood_type = buffer_slot["blood_type"] - temp_html += "
    \tLabel: [label ? label : name]" + temp_html += "
    \tLabel: [label ? label : name]" temp_html += "
    \tSubject: [name]" if(ue && name && blood_type) temp_html += "
    \tBlood Type: [blood_type]" temp_html += "
    \tUE: [ue] " if(viable_occupant) - temp_html += "Occupant " + temp_html += "Occupant " else temp_html += "Occupant" - temp_html += "Occupant:Delayed " + temp_html += "Occupant:Delayed " if(injectorready < world.time) - temp_html += "Injector" + temp_html += "Injector" else temp_html += "Injector" else @@ -218,12 +218,12 @@ if(ui) temp_html += "
    \tUI: [ui] " if(viable_occupant) - temp_html += "Occupant " + temp_html += "Occupant " else temp_html += "Occupant" - temp_html += "Occupant:Delayed " + temp_html += "Occupant:Delayed " if(injectorready < world.time) - temp_html += "Injector" + temp_html += "Injector" else temp_html += "Injector" else @@ -231,38 +231,38 @@ if(ue && name && blood_type && ui) temp_html += "
    \tUI+UE: [ui]/[ue] " if(viable_occupant) - temp_html += "Occupant " + temp_html += "Occupant " else temp_html += "Occupant" - temp_html += "Occupant:Delayed " + temp_html += "Occupant:Delayed " if(injectorready < world.time) - temp_html += "UI+UE Injector" + temp_html += "UI+UE Injector" else temp_html += "UI+UE Injector" if(se) temp_html += "
    \tSE: [se] " if(viable_occupant) - temp_html += "Occupant " + temp_html += "Occupant " else temp_html += "Occupant " - temp_html += "Occupant:Delayed " + temp_html += "Occupant:Delayed " if(injectorready < world.time ) - temp_html += "Injector" + temp_html += "Injector" else temp_html += "Injector" else temp_html += "
    \tSE: No Data" if(viable_occupant) - temp_html += "
    Save to Buffer " + temp_html += "
    Save to Buffer " else temp_html += "
    Save to Buffer " - temp_html += "Clear Buffer " + temp_html += "Clear Buffer " if(diskette) - temp_html += "Load from Disk " + temp_html += "Load from Disk " else temp_html += "Load from Disk " if(diskette && !diskette.read_only) - temp_html += "Save to Disk " + temp_html += "Save to Disk " else temp_html += "Save to Disk " else @@ -270,8 +270,8 @@ temp_html += buttons temp_html += "

    Radiation Emitter Menu

    " - temp_html += "-- Output Level ++" - temp_html += "
    -- Pulse Duration ++" + temp_html += "-- Output Level ++" + temp_html += "
    -- Pulse Duration ++" temp_html += "

    Irradiate Subject

    " temp_html += "
    Unique Identifier:
    " @@ -281,7 +281,7 @@ temp_html += "
    1
    " var/len = length(viable_occupant.dna.uni_identity) for(var/i=1, i<=len, i++) - temp_html += "[copytext(viable_occupant.dna.uni_identity,i,i+1)]" + temp_html += "[copytext(viable_occupant.dna.uni_identity,i,i+1)]" if ((i % max_line_len) == 0) temp_html += "
    " if((i % DNA_BLOCK_SIZE) == 0 && i < len) @@ -295,7 +295,7 @@ temp_html += "
    1
    " var/len = length(viable_occupant.dna.struc_enzymes) for(var/i=1, i<=len, i++) - temp_html += "[copytext(viable_occupant.dna.struc_enzymes,i,i+1)]" + temp_html += "[copytext(viable_occupant.dna.struc_enzymes,i,i+1)]" if ((i % max_line_len) == 0) temp_html += "
    " if((i % DNA_BLOCK_SIZE) == 0 && i < len) diff --git a/code/game/machinery/computer/launchpad_control.dm b/code/game/machinery/computer/launchpad_control.dm index d6c8d9e7e9..35fcb20bcc 100644 --- a/code/game/machinery/computer/launchpad_control.dm +++ b/code/game/machinery/computer/launchpad_control.dm @@ -60,7 +60,7 @@ if(pad.stat & NOPOWER) t+= "[pad.display_name]" else - t+= "[pad.display_name]" + t+= "[pad.display_name]" else launchpads -= get_pad(i) t += "
    " @@ -68,24 +68,24 @@ if(current_pad) var/obj/machinery/launchpad/pad = get_pad(current_pad) t += "
    [pad.display_name]
    " - t += "Rename" - t += "Remove

    " - t += "O" //up-left - t += "^" //up - t += "O
    " //up-right - t += "<"//left - t += "R"//reset to 0 - t += ">
    "//right - t += "O"//down-left - t += "v"//down - t += "O
    "//down-right + t += "Rename" + t += "Remove

    " + t += "O" //up-left + t += "^" //up + t += "O
    " //up-right + t += "<"//left + t += "R"//reset to 0 + t += ">
    "//right + t += "O"//down-left + t += "v"//down + t += "O
    "//down-right t += "
    " t += "
    Current offset:

    " t += "
    [abs(pad.y_offset)] [pad.y_offset > 0 ? "N":"S"]

    " t += "
    [abs(pad.x_offset)] [pad.x_offset > 0 ? "E":"W"]

    " - t += "
    Launch" - t += " Pull" + t += "
    Launch" + t += " Pull" var/datum/browser/popup = new(user, "launchpad", name, 300, 500) popup.set_content(t.Join()) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 41b41e536e..e413d204a2 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -39,21 +39,21 @@ return var/dat if(src.temp) - dat = text("[src.temp]

    Clear Screen") + dat = text("[src.temp]

    Clear Screen") else - dat = text("Confirm Identity: []
    ", src, (src.scan ? text("[]", src.scan.name) : "----------")) + dat = text("Confirm Identity: []
    ", (src.scan ? text("[]", src.scan.name) : "----------")) if(src.authenticated) switch(src.screen) if(1) dat += {" -Search Records -
    List Records +Search Records +
    List Records
    -
    Virus Database -
    Medbot Tracking +
    Virus Database +
    Medbot Tracking
    -
    Record Maintenance -
    {Log Out}
    +
    Record Maintenance +
    {Log Out}
    "} if(2) dat += {" @@ -65,10 +65,10 @@ - - + + - +"} @@ -93,7 +93,7 @@ else background = "'background-color:#4F7529;'" - dat += text("", background, src, R.fields["id"], R.fields["name"]) + dat += text("", background, R.fields["id"], R.fields["name"]) dat += text("", R.fields["id"]) dat += text("", R.fields["fingerprint"], b_dna) dat += text("", blood_type) @@ -102,11 +102,11 @@ dat += "
    NameIDNameID Fingerprints (F) | DNA (D)Blood TypeBlood Type Physical Status Mental Status
    []
    [][]F: []
    D: []
    []

    " // if(GLOB.data_core.general) // for(var/datum/data/record/R in sortRecord(GLOB.data_core.general)) -// dat += "[R.fields["id"]]: [R.fields["name"]]
    " +// dat += "
    [R.fields["id"]]: [R.fields["name"]]
    " // //Foreach goto(132) - dat += text("
    Back", src) + dat += "
    Back" if(3) - dat += text("Records Maintenance
    \nBackup To Disk
    \nUpload From Disk
    \nDelete All Records
    \n
    \nBack", src, src, src, src) + dat += "Records Maintenance
    \nBackup To Disk
    \nUpload From Disk
    \nDelete All Records
    \n
    \nBack" if(4) dat += "" @@ -118,45 +118,45 @@ var/obj/item/photo/P2 = active1.fields["photo_side"] user << browse_rsc(P2.img, "photo_side") dat += "" - dat += "" - dat += "" + dat += "" + dat += "" dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" else dat += "" dat += "" if(active2 in GLOB.data_core.medical) - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" //(per disease info placed in log/comment section) - dat += "" - dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" //(per disease info placed in log/comment section) + dat += "" + dat += "" dat += "" var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) - dat += "" + dat += "" counter++ - dat += "" + dat += "" - dat += "" + dat += "" else dat += "" - dat += "" - dat += "" - dat += "" + dat += "" + dat += "" + dat += "" dat += "
    Medical Record
    Name:[active1.fields["name"]]
    ID:[active1.fields["id"]]
    Sex: [active1.fields["sex"]] 
    Age: [active1.fields["age"]] 
    Species: [active1.fields["species"]] 
    Fingerprint: [active1.fields["fingerprint"]] 
    Physical Status: [active1.fields["p_stat"]] 
    Mental Status: [active1.fields["m_stat"]] 
    Sex: [active1.fields["sex"]] 
    Age: [active1.fields["age"]] 
    Species: [active1.fields["species"]] 
    Fingerprint: [active1.fields["fingerprint"]] 
    Physical Status: [active1.fields["p_stat"]] 
    Mental Status: [active1.fields["m_stat"]] 
    General Record Lost!

    Medical Data
    Blood Type: [active2.fields["blood_type"]] 
    DNA: [active2.fields["b_dna"]] 

    Minor Disabilities:

     [active2.fields["mi_dis"]] 
    Details: [active2.fields["mi_dis_d"]] 

    Major Disabilities:

     [active2.fields["ma_dis"]] 
    Details: [active2.fields["ma_dis_d"]] 

    Allergies:

     [active2.fields["alg"]] 
    Details: [active2.fields["alg_d"]] 

    Current Diseases:

     [active2.fields["cdi"]] 
    Details: [active2.fields["cdi_d"]] 

    Important Notes:

     [active2.fields["notes"]] 
    Blood Type: [active2.fields["blood_type"]] 
    DNA: [active2.fields["b_dna"]] 

    Minor Disabilities:

     [active2.fields["mi_dis"]] 
    Details: [active2.fields["mi_dis_d"]] 

    Major Disabilities:

     [active2.fields["ma_dis"]] 
    Details: [active2.fields["ma_dis_d"]] 

    Allergies:

     [active2.fields["alg"]] 
    Details: [active2.fields["alg_d"]] 

    Current Diseases:

     [active2.fields["cdi"]] 
    Details: [active2.fields["cdi_d"]] 

    Important Notes:

     [active2.fields["notes"]] 

    Comments/Log
    [active2.fields[text("com_[]", counter)]]
    Delete Entry
    [active2.fields[text("com_[]", counter)]]
    Delete Entry
    Add Entry
    Add Entry

    Delete Record (Medical Only)

    Delete Record (Medical Only)
    Medical Record Lost!

    New Record
    Print Record
    Back

    New Record
    Print Record
    Back
    " if(5) dat += "
    Virus Database
    " @@ -166,11 +166,11 @@ continue // TODO (tm): Add advance diseases to the virus database which no one uses. if(!Dis.desc) continue - dat += "
    [Dis.name]" - dat += "
    Back" + dat += "
    [Dis.name]" + dat += "
    Back" if(6) dat += "
    Medical Robot Monitor
    " - dat += "Back" + dat += "Back" dat += "
    Medical Robots:" var/bdat = null for(var/mob/living/simple_animal/bot/medbot/M in GLOB.living_mob_list) @@ -191,7 +191,7 @@ else else - dat += text("{Log In}", src) + dat += "{Log In}" var/datum/browser/popup = new(user, "med_rec", "Medical Records Console", 600, 400) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) @@ -286,7 +286,7 @@
    Severity: [Dis.severity]"} else if(href_list["del_all"]) - src.temp = text("Are you sure you wish to delete all records?
    \n\tYes
    \n\tNo
    ", src, src) + src.temp = "Are you sure you wish to delete all records?
    \n\tYes
    \n\tNo
    " else if(href_list["del_all2"]) investigate_log("[usr.name] ([usr.key]) has deleted all medical records.", INVESTIGATE_RECORDS) @@ -377,13 +377,13 @@ src.active2.fields["notes"] = t1 if("p_stat") if(active1) - src.temp = text("Physical Condition:
    \n\t*Deceased*
    \n\t*Unconscious*
    \n\tActive
    \n\tPhysically Unfit
    ", src, src, src, src) + src.temp = "Physical Condition:
    \n\t*Deceased*
    \n\t*Unconscious*
    \n\tActive
    \n\tPhysically Unfit
    " if("m_stat") if(active1) - src.temp = text("Mental Condition:
    \n\t*Insane*
    \n\t*Unstable*
    \n\t*Watch*
    \n\tStable
    ", src, src, src, src) + src.temp = "Mental Condition:
    \n\t*Insane*
    \n\t*Unstable*
    \n\t*Watch*
    \n\tStable
    " if("blood_type") if(active2) - src.temp = text("Blood Type:
    \n\tA- A+
    \n\tB- B+
    \n\tAB- AB+
    \n\tO- O+
    ", src, src, src, src, src, src, src, src) + src.temp = "Blood Type:
    \n\tA- A+
    \n\tB- B+
    \n\tAB- AB+
    \n\tO- O+
    " if("b_dna") if(active2) var/t1 = stripped_input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) @@ -452,7 +452,7 @@ else if(href_list["del_r"]) if(active2) - src.temp = text("Are you sure you wish to delete the record (Medical Portion Only)?
    \n\tYes
    \n\tNo
    ", src, src) + src.temp = "Are you sure you wish to delete the record (Medical Portion Only)?
    \n\tYes
    \n\tNo
    " else if(href_list["del_r2"]) investigate_log("[usr.name] ([usr.key]) has deleted the medical records for [active1.fields["name"]].", INVESTIGATE_RECORDS) @@ -575,7 +575,7 @@ if(4) R.fields["blood_type"] = random_blood_type() if(5) - R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit") + R.fields["p_stat"] = pick("*Unconscious*", "Active", "Physically Unfit") if(6) R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable") continue diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index 5ba20bc527..d41bcce164 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -1,473 +1,472 @@ - -// Allows you to monitor messages that passes the server. - - - - -/obj/machinery/computer/message_monitor - name = "message monitor console" - desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages." - icon_screen = "comm_logs" - circuit = /obj/item/circuitboard/computer/message_monitor - //Server linked to. - var/obj/machinery/message_server/linkedServer = null - //Sparks effect - For emag - var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread - //Messages - Saves me time if I want to change something. - var/noserver = "ALERT: No server detected." - var/incorrectkey = "ALERT: Incorrect decryption key!" - var/defaultmsg = "Welcome. Please select an option." - var/rebootmsg = "%$&(�: Critical %$$@ Error // !RestArting! - ?pLeaSe wAit!" - //Computer properties - var/screen = 0 // 0 = Main menu, 1 = Message Logs, 2 = Hacked screen, 3 = Custom Message - var/hacking = 0 // Is it being hacked into by the AI/Cyborg - var/message = "System bootup complete. Please select an option." // The message that shows on the main menu. - var/auth = 0 // Are they authenticated? - var/optioncount = 7 - // Custom Message Properties - var/customsender = "System Administrator" - var/obj/item/device/pda/customrecepient = null - var/customjob = "Admin" - var/custommessage = "This is a test, please ignore." - - light_color = LIGHT_COLOR_GREEN - -/obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params) - if(istype(O, /obj/item/screwdriver) && emagged) - //Stops people from just unscrewing the monitor and putting it back to get the console working again. - to_chat(user, "It is too hot to mess with!") - else - return ..() - -/obj/machinery/computer/message_monitor/emag_act(mob/user) - if(emagged) - return - if(!isnull(src.linkedServer)) - emagged = TRUE - screen = 2 - spark_system.set_up(5, 0, src) - src.spark_system.start() - var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey - MK.loc = src.loc - // Will help make emagging the console not so easy to get away with. - MK.info += "

    �%@%(*$%&(�&?*(%&�/{}" - var/time = 100 * length(src.linkedServer.decryptkey) - addtimer(CALLBACK(src, .proc/UnmagConsole), time) - message = rebootmsg - else - to_chat(user, "A no server error appears on the screen.") - -/obj/machinery/computer/message_monitor/Initialize() - . = ..() - //Is the server isn't linked to a server, and there's a server available, default it to the first one in the list. - if(!linkedServer) - if(GLOB.message_servers && GLOB.message_servers.len > 0) - linkedServer = GLOB.message_servers[1] - -/obj/machinery/computer/message_monitor/attack_hand(mob/living/user) - if(..()) - return - //If the computer is being hacked or is emagged, display the reboot message. - if(hacking || emagged) - message = rebootmsg - var/dat = "
    /
    " - - if(auth) - dat += "

    \[Authenticated\] /" - dat += " Server Power: [src.linkedServer && src.linkedServer.active ? "\[On\]":"\[Off\]"]

    " - else - dat += "

    \[Unauthenticated\] /" - dat += " Server Power: [src.linkedServer && src.linkedServer.active ? "\[On\]":"\[Off\]"]

    " - - if(hacking || emagged) - screen = 2 - else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) - if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - screen = 0 - - switch(screen) - //Main menu - if(0) - // = TAB - var/i = 0 - dat += "
    [++i]. Link To A Server
    " - if(auth) - if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) - dat += "
    ERROR: Server not found!
    " - else - dat += "
    [++i]. View Message Logs
    " - dat += "
    [++i]. View Request Console Logs
    " - dat += "
    [++i]. Clear Message Logs
    " - dat += "
    [++i]. Clear Request Console Logs
    " - dat += "
    [++i]. Set Custom Key
    " - dat += "
    [++i]. Send Admin Message
    " - else - for(var/n = ++i; n <= optioncount; n++) - dat += "
    [n]. ---------------
    " - if(issilicon(usr) && is_special_character(usr)) - //Malf/Traitor AIs can bruteforce into the system to gain the Key. - dat += "
    *&@#. Bruteforce Key
    " - else - dat += "
    " - - //Bottom message - if(!auth) - dat += "

    Please authenticate with the server in order to show additional options." - else - dat += "

    Reg, #514 forbids sending messages to a Head of Staff containing Erotic Rendering Properties." - - //Message Logs - if(1) - var/index = 0 - //var/recipient = "Unspecified" //name of the person - //var/sender = "Unspecified" //name of the sender - //var/message = "Blank" //transferred message - dat += "
    Back - Refresh

    " - dat += "" - for(var/datum/data_pda_msg/pda in src.linkedServer.pda_msgs) - index++ - if(index > 3000) - break - // Del - Sender - Recepient - Message - // X - Al Green - Your Mom - WHAT UP!? - dat += "" - dat += "
    XSenderRecipientMessage
    X
    [pda.sender][pda.recipient][pda.message][pda.photo ? "(Photo)":""]
    " - //Hacking screen. - if(2) - if(isAI(user) || iscyborg(user)) - dat += "Brute-forcing for server key.
    It will take 20 seconds for every character that the password has." - dat += "In the meantime, this console can reveal your true intentions if you let someone access it. Make sure no humans enter the room during that time." - else - //It's the same message as the one above but in binary. Because robots understand binary and humans don't... well I thought it was clever. - dat += {"01000010011100100111010101110100011001010010110
    - 10110011001101111011100100110001101101001011011100110011
    - 10010000001100110011011110111001000100000011100110110010
    - 10111001001110110011001010111001000100000011010110110010
    - 10111100100101110001000000100100101110100001000000111011
    - 10110100101101100011011000010000001110100011000010110101
    - 10110010100100000001100100011000000100000011100110110010
    - 10110001101101111011011100110010001110011001000000110011
    - 00110111101110010001000000110010101110110011001010111001
    - 00111100100100000011000110110100001100001011100100110000
    - 10110001101110100011001010111001000100000011101000110100
    - 00110000101110100001000000111010001101000011001010010000
    - 00111000001100001011100110111001101110111011011110111001
    - 00110010000100000011010000110000101110011001011100010000
    - 00100100101101110001000000111010001101000011001010010000
    - 00110110101100101011000010110111001110100011010010110110
    - 10110010100101100001000000111010001101000011010010111001
    - 10010000001100011011011110110111001110011011011110110110
    - 00110010100100000011000110110000101101110001000000111001
    - 00110010101110110011001010110000101101100001000000111100
    - 10110111101110101011100100010000001110100011100100111010
    - 10110010100100000011010010110111001110100011001010110111
    - 00111010001101001011011110110111001110011001000000110100
    - 10110011000100000011110010110111101110101001000000110110
    - 00110010101110100001000000111001101101111011011010110010
    - 10110111101101110011001010010000001100001011000110110001
    - 10110010101110011011100110010000001101001011101000010111
    - 00010000001001101011000010110101101100101001000000111001
    - 10111010101110010011001010010000001101110011011110010000
    - 00110100001110101011011010110000101101110011100110010000
    - 00110010101101110011101000110010101110010001000000111010
    - 00110100001100101001000000111001001101111011011110110110
    - 10010000001100100011101010111001001101001011011100110011
    - 10010000001110100011010000110000101110100001000000111010
    - 001101001011011010110010100101110"} - - //Fake messages - if(3) - dat += "
    Back - Reset

    " - - dat += {" - - - - "} - //Sender - Sender's Job - Recepient - Message - //Al Green- Your Dad - Your Mom - WHAT UP!? - - dat += {" - - - "} - dat += "
    SenderSender's JobRecipientMessage
    [customsender][customjob][customrecepient ? customrecepient.owner : "NONE"][custommessage]

    Send" - - //Request Console Logs - if(4) - - var/index = 0 - /* data_rc_msg - X - 5% - var/rec_dpt = "Unspecified" //name of the person - 15% - var/send_dpt = "Unspecified" //name of the sender- 15% - var/message = "Blank" //transferred message - 300px - var/stamp = "Unstamped" - 15% - var/id_auth = "Unauthenticated" - 15% - var/priority = "Normal" - 10% - */ - dat += "
    Back - Refresh

    " - dat += {" - "} - for(var/datum/data_rc_msg/rc in src.linkedServer.rc_msgs) - index++ - if(index > 3000) - break - // Del - Sender - Recepient - Message - // X - Al Green - Your Mom - WHAT UP!? - dat += {" - "} - dat += "
    XSending Dep.Receiving Dep.MessageStampID Auth.Priority.
    X
    [rc.send_dpt][rc.rec_dpt][rc.message][rc.stamp][rc.id_auth][rc.priority]
    " - - message = defaultmsg - var/datum/browser/popup = new(user, "hologram_console", name, 700, 700) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/message_monitor/proc/BruteForce(mob/user) - if(isnull(linkedServer)) - to_chat(user, "Could not complete brute-force: Linked Server Disconnected!") - else - var/currentKey = src.linkedServer.decryptkey - to_chat(user, "Brute-force completed! The key is '[currentKey]'.") - src.hacking = 0 - src.screen = 0 // Return the screen back to normal - -/obj/machinery/computer/message_monitor/proc/UnmagConsole() - emagged = FALSE - -/obj/machinery/computer/message_monitor/proc/ResetMessage() - customsender = "System Administrator" - customrecepient = null - custommessage = "This is a test, please ignore." - customjob = "Admin" - -/obj/machinery/computer/message_monitor/Topic(href, href_list) - if(..()) - return - - if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr)) - //Authenticate - if (href_list["auth"]) - if(!linkedServer || linkedServer.stat & (NOPOWER|BROKEN)) - message = noserver - else - if(auth) - auth = 0 - screen = 0 - else - var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null) - if(dkey && dkey != "") - if(src.linkedServer.decryptkey == dkey) - auth = 1 - else - message = incorrectkey - - //Turn the server on/off. - if (href_list["active"]) - if(auth) - linkedServer.active = !linkedServer.active - //Find a server - if (href_list["find"]) - if(GLOB.message_servers && GLOB.message_servers.len > 1) - src.linkedServer = input(usr,"Please select a server.", "Select a server.", null) as null|anything in GLOB.message_servers - message = "NOTICE: Server selected." - else if(GLOB.message_servers && GLOB.message_servers.len > 0) - linkedServer = GLOB.message_servers[1] - message = "NOTICE: Only Single Server Detected - Server selected." - else - message = noserver - - //View the logs - KEY REQUIRED - if (href_list["view"]) - if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else - if(auth) - src.screen = 1 - - //Clears the logs - KEY REQUIRED - if (href_list["clear"]) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else - if(auth) - src.linkedServer.pda_msgs = list() - message = "NOTICE: Logs cleared." - //Clears the request console logs - KEY REQUIRED - if (href_list["clearr"]) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else - if(auth) - src.linkedServer.rc_msgs = list() - message = "NOTICE: Logs cleared." - //Change the password - KEY REQUIRED - if (href_list["pass"]) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else - if(auth) - var/dkey = trim(stripped_input(usr, "Please enter the decryption key.")) - if(dkey && dkey != "") - if(src.linkedServer.decryptkey == dkey) - var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):")) - if(length(newkey) <= 3) - message = "NOTICE: Decryption key too short!" - else if(length(newkey) > 16) - message = "NOTICE: Decryption key too long!" - else if(newkey && newkey != "") - src.linkedServer.decryptkey = newkey - message = "NOTICE: Decryption key set." - else - message = incorrectkey - - //Hack the Console to get the password - if (href_list["hack"]) - if(issilicon(usr) && is_special_character(usr)) - src.hacking = 1 - src.screen = 2 - //Time it takes to bruteforce is dependant on the password length. - spawn(100*length(src.linkedServer.decryptkey)) - if(src && src.linkedServer && usr) - BruteForce(usr) - //Delete the log. - if (href_list["delete"]) - //Are they on the view logs screen? - if(screen == 1) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else //if(istype(href_list["delete"], /datum/data_pda_msg)) - src.linkedServer.pda_msgs -= locate(href_list["delete"]) - message = "NOTICE: Log Deleted!" - //Delete the request console log. - if (href_list["deleter"]) - //Are they on the view logs screen? - if(screen == 4) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else //if(istype(href_list["delete"], /datum/data_pda_msg)) - src.linkedServer.rc_msgs -= locate(href_list["deleter"]) - message = "NOTICE: Log Deleted!" - //Create a custom message - if (href_list["msg"]) - if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else - if(auth) - src.screen = 3 - //Fake messaging selection - KEY REQUIRED - if (href_list["select"]) - if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - screen = 0 - else - switch(href_list["select"]) - - //Reset - if("Reset") - ResetMessage() - - //Select Your Name - if("Sender") - customsender = stripped_input(usr, "Please enter the sender's name.") - - //Select Receiver - if("Recepient") - //Get out list of viable PDAs - var/list/obj/item/device/pda/sendPDAs = get_viewable_pdas() - if(GLOB.PDAs && GLOB.PDAs.len > 0) - customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sortNames(sendPDAs) - else - customrecepient = null - - //Enter custom job - if("RecJob") - customjob = stripped_input(usr, "Please enter the sender's job.") - - //Enter message - if("Message") - custommessage = stripped_input(usr, "Please enter your message.") - - //Send message - if("Send") - - if(isnull(customsender) || customsender == "") - customsender = "UNKNOWN" - - if(isnull(customrecepient)) - message = "NOTICE: No recepient selected!" - return src.attack_hand(usr) - - if(isnull(custommessage) || custommessage == "") - message = "NOTICE: No message entered!" - return src.attack_hand(usr) - - var/obj/item/device/pda/PDARec = null - for (var/obj/item/device/pda/P in get_viewable_pdas()) - if(P.owner == customsender) - PDARec = P - //Sender isn't faking as someone who exists - if(isnull(PDARec)) - src.linkedServer.send_pda_message("[customrecepient.owner]", "[customsender]","[custommessage]") - customrecepient.tnote += "← From
    [customsender] ([customjob]):
    [custommessage]
    " - if (!customrecepient.silent) - playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1) - customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3) - if( customrecepient.loc && ishuman(customrecepient.loc) ) - var/mob/living/carbon/human/H = customrecepient.loc - to_chat(H, "[icon2html(customrecepient, viewers(H))] Message from [customsender] ([customjob]), \"[custommessage]\" (Reply)") - log_talk(usr,"[key_name(usr)] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA) - customrecepient.cut_overlays() - customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r")) - //Sender is faking as someone who exists - else - src.linkedServer.send_pda_message("[customrecepient.owner]", "[PDARec.owner]","[custommessage]") - customrecepient.tnote += "← From [PDARec.owner] ([customjob]):
    [custommessage]
    " - if (!customrecepient.silent) - playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1) - customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3) - if( customrecepient.loc && ishuman(customrecepient.loc) ) - var/mob/living/carbon/human/H = customrecepient.loc - to_chat(H, "[icon2html(customrecepient, H)] Message from [PDARec.owner] ([customjob]), \"[custommessage]\" (Reply)") - log_talk(usr,"[key_name(usr)] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA) - customrecepient.cut_overlays() - customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r")) - //Finally.. - ResetMessage() - - //Request Console Logs - KEY REQUIRED - if(href_list["viewr"]) - if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else - if(auth) - src.screen = 4 - - if (href_list["back"]) - src.screen = 0 - - return src.attack_hand(usr) - - -/obj/item/paper/monitorkey - //..() - name = "monitor decryption key" - var/obj/machinery/message_server/server = null - -/obj/item/paper/monitorkey/Initialize() - ..() - return INITIALIZE_HINT_LATELOAD - -/obj/item/paper/monitorkey/LateInitialize() - if(GLOB.message_servers) - for(var/obj/machinery/message_server/server in GLOB.message_servers) - if(!isnull(server)) - if(!isnull(server.decryptkey)) - info = "

    Daily Key Reset


    The new message monitor key is '[server.decryptkey]'.
    Please keep this a secret and away from the clown.
    If necessary, change the password to a more secure one." - info_links = info - add_overlay("paper_words") - break +// Allows you to monitor messages that passes the server. + + + + +/obj/machinery/computer/message_monitor + name = "message monitor console" + desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages." + icon_screen = "comm_logs" + circuit = /obj/item/circuitboard/computer/message_monitor + //Server linked to. + var/obj/machinery/message_server/linkedServer = null + //Sparks effect - For emag + var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread + //Messages - Saves me time if I want to change something. + var/noserver = "ALERT: No server detected." + var/incorrectkey = "ALERT: Incorrect decryption key!" + var/defaultmsg = "Welcome. Please select an option." + var/rebootmsg = "%$&(�: Critical %$$@ Error // !RestArting! - ?pLeaSe wAit!" + //Computer properties + var/screen = 0 // 0 = Main menu, 1 = Message Logs, 2 = Hacked screen, 3 = Custom Message + var/hacking = 0 // Is it being hacked into by the AI/Cyborg + var/message = "System bootup complete. Please select an option." // The message that shows on the main menu. + var/auth = 0 // Are they authenticated? + var/optioncount = 7 + // Custom Message Properties + var/customsender = "System Administrator" + var/obj/item/device/pda/customrecepient = null + var/customjob = "Admin" + var/custommessage = "This is a test, please ignore." + + light_color = LIGHT_COLOR_GREEN + +/obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params) + if(istype(O, /obj/item/screwdriver) && emagged) + //Stops people from just unscrewing the monitor and putting it back to get the console working again. + to_chat(user, "It is too hot to mess with!") + else + return ..() + +/obj/machinery/computer/message_monitor/emag_act(mob/user) + if(emagged) + return + if(!isnull(src.linkedServer)) + emagged = TRUE + screen = 2 + spark_system.set_up(5, 0, src) + src.spark_system.start() + var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey + MK.loc = src.loc + // Will help make emagging the console not so easy to get away with. + MK.info += "

    �%@%(*$%&(�&?*(%&�/{}" + var/time = 100 * length(src.linkedServer.decryptkey) + addtimer(CALLBACK(src, .proc/UnmagConsole), time) + message = rebootmsg + else + to_chat(user, "A no server error appears on the screen.") + +/obj/machinery/computer/message_monitor/Initialize() + . = ..() + //Is the server isn't linked to a server, and there's a server available, default it to the first one in the list. + if(!linkedServer) + if(GLOB.message_servers && GLOB.message_servers.len > 0) + linkedServer = GLOB.message_servers[1] + +/obj/machinery/computer/message_monitor/attack_hand(mob/living/user) + if(..()) + return + //If the computer is being hacked or is emagged, display the reboot message. + if(hacking || emagged) + message = rebootmsg + var/dat = "
    /
    " + + if(auth) + dat += "

    \[Authenticated\] /" + dat += " Server Power: [src.linkedServer && src.linkedServer.active ? "\[On\]":"\[Off\]"]

    " + else + dat += "

    \[Unauthenticated\] /" + dat += " Server Power: [src.linkedServer && src.linkedServer.active ? "\[On\]":"\[Off\]"]

    " + + if(hacking || emagged) + screen = 2 + else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + screen = 0 + + switch(screen) + //Main menu + if(0) + // = TAB + var/i = 0 + dat += "
    [++i]. Link To A Server
    " + if(auth) + if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + dat += "
    ERROR: Server not found!
    " + else + dat += "
    [++i]. View Message Logs
    " + dat += "
    [++i]. View Request Console Logs
    " + dat += "
    [++i]. Clear Message Logs
    " + dat += "
    [++i]. Clear Request Console Logs
    " + dat += "
    [++i]. Set Custom Key
    " + dat += "
    [++i]. Send Admin Message
    " + else + for(var/n = ++i; n <= optioncount; n++) + dat += "
    [n]. ---------------
    " + if(issilicon(usr) && is_special_character(usr)) + //Malf/Traitor AIs can bruteforce into the system to gain the Key. + dat += "
    *&@#. Bruteforce Key
    " + else + dat += "
    " + + //Bottom message + if(!auth) + dat += "

    Please authenticate with the server in order to show additional options." + else + dat += "

    Reg, #514 forbids sending messages to a Head of Staff containing Erotic Rendering Properties." + + //Message Logs + if(1) + var/index = 0 + //var/recipient = "Unspecified" //name of the person + //var/sender = "Unspecified" //name of the sender + //var/message = "Blank" //transferred message + dat += "
    Back - Refresh

    " + dat += "" + for(var/datum/data_pda_msg/pda in src.linkedServer.pda_msgs) + index++ + if(index > 3000) + break + // Del - Sender - Recepient - Message + // X - Al Green - Your Mom - WHAT UP!? + dat += "" + dat += "
    XSenderRecipientMessage
    X
    [pda.sender][pda.recipient][pda.message][pda.photo ? "(Photo)":""]
    " + //Hacking screen. + if(2) + if(isAI(user) || iscyborg(user)) + dat += "Brute-forcing for server key.
    It will take 20 seconds for every character that the password has." + dat += "In the meantime, this console can reveal your true intentions if you let someone access it. Make sure no humans enter the room during that time." + else + //It's the same message as the one above but in binary. Because robots understand binary and humans don't... well I thought it was clever. + dat += {"01000010011100100111010101110100011001010010110
    + 10110011001101111011100100110001101101001011011100110011
    + 10010000001100110011011110111001000100000011100110110010
    + 10111001001110110011001010111001000100000011010110110010
    + 10111100100101110001000000100100101110100001000000111011
    + 10110100101101100011011000010000001110100011000010110101
    + 10110010100100000001100100011000000100000011100110110010
    + 10110001101101111011011100110010001110011001000000110011
    + 00110111101110010001000000110010101110110011001010111001
    + 00111100100100000011000110110100001100001011100100110000
    + 10110001101110100011001010111001000100000011101000110100
    + 00110000101110100001000000111010001101000011001010010000
    + 00111000001100001011100110111001101110111011011110111001
    + 00110010000100000011010000110000101110011001011100010000
    + 00100100101101110001000000111010001101000011001010010000
    + 00110110101100101011000010110111001110100011010010110110
    + 10110010100101100001000000111010001101000011010010111001
    + 10010000001100011011011110110111001110011011011110110110
    + 00110010100100000011000110110000101101110001000000111001
    + 00110010101110110011001010110000101101100001000000111100
    + 10110111101110101011100100010000001110100011100100111010
    + 10110010100100000011010010110111001110100011001010110111
    + 00111010001101001011011110110111001110011001000000110100
    + 10110011000100000011110010110111101110101001000000110110
    + 00110010101110100001000000111001101101111011011010110010
    + 10110111101101110011001010010000001100001011000110110001
    + 10110010101110011011100110010000001101001011101000010111
    + 00010000001001101011000010110101101100101001000000111001
    + 10111010101110010011001010010000001101110011011110010000
    + 00110100001110101011011010110000101101110011100110010000
    + 00110010101101110011101000110010101110010001000000111010
    + 00110100001100101001000000111001001101111011011110110110
    + 10010000001100100011101010111001001101001011011100110011
    + 10010000001110100011010000110000101110100001000000111010
    + 001101001011011010110010100101110"} + + //Fake messages + if(3) + dat += "
    Back - Reset

    " + + dat += {" + + + + "} + //Sender - Sender's Job - Recepient - Message + //Al Green- Your Dad - Your Mom - WHAT UP!? + + dat += {" + + + "} + dat += "
    SenderSender's JobRecipientMessage
    [customsender][customjob][customrecepient ? customrecepient.owner : "NONE"][custommessage]

    Send" + + //Request Console Logs + if(4) + + var/index = 0 + /* data_rc_msg + X - 5% + var/rec_dpt = "Unspecified" //name of the person - 15% + var/send_dpt = "Unspecified" //name of the sender- 15% + var/message = "Blank" //transferred message - 300px + var/stamp = "Unstamped" - 15% + var/id_auth = "Unauthenticated" - 15% + var/priority = "Normal" - 10% + */ + dat += "
    Back - Refresh

    " + dat += {" + "} + for(var/datum/data_rc_msg/rc in src.linkedServer.rc_msgs) + index++ + if(index > 3000) + break + // Del - Sender - Recepient - Message + // X - Al Green - Your Mom - WHAT UP!? + dat += {" + "} + dat += "
    XSending Dep.Receiving Dep.MessageStampID Auth.Priority.
    X
    [rc.send_dpt][rc.rec_dpt][rc.message][rc.stamp][rc.id_auth][rc.priority]
    " + + message = defaultmsg + var/datum/browser/popup = new(user, "hologram_console", name, 700, 700) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/message_monitor/proc/BruteForce(mob/user) + if(isnull(linkedServer)) + to_chat(user, "Could not complete brute-force: Linked Server Disconnected!") + else + var/currentKey = src.linkedServer.decryptkey + to_chat(user, "Brute-force completed! The key is '[currentKey]'.") + src.hacking = 0 + src.screen = 0 // Return the screen back to normal + +/obj/machinery/computer/message_monitor/proc/UnmagConsole() + emagged = FALSE + +/obj/machinery/computer/message_monitor/proc/ResetMessage() + customsender = "System Administrator" + customrecepient = null + custommessage = "This is a test, please ignore." + customjob = "Admin" + +/obj/machinery/computer/message_monitor/Topic(href, href_list) + if(..()) + return + + if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr)) + //Authenticate + if (href_list["auth"]) + if(!linkedServer || linkedServer.stat & (NOPOWER|BROKEN)) + message = noserver + else + if(auth) + auth = 0 + screen = 0 + else + var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null) + if(dkey && dkey != "") + if(src.linkedServer.decryptkey == dkey) + auth = 1 + else + message = incorrectkey + + //Turn the server on/off. + if (href_list["active"]) + if(auth) + linkedServer.active = !linkedServer.active + //Find a server + if (href_list["find"]) + if(GLOB.message_servers && GLOB.message_servers.len > 1) + src.linkedServer = input(usr,"Please select a server.", "Select a server.", null) as null|anything in GLOB.message_servers + message = "NOTICE: Server selected." + else if(GLOB.message_servers && GLOB.message_servers.len > 0) + linkedServer = GLOB.message_servers[1] + message = "NOTICE: Only Single Server Detected - Server selected." + else + message = noserver + + //View the logs - KEY REQUIRED + if (href_list["view"]) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.screen = 1 + + //Clears the logs - KEY REQUIRED + if (href_list["clear"]) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.linkedServer.pda_msgs = list() + message = "NOTICE: Logs cleared." + //Clears the request console logs - KEY REQUIRED + if (href_list["clearr"]) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.linkedServer.rc_msgs = list() + message = "NOTICE: Logs cleared." + //Change the password - KEY REQUIRED + if (href_list["pass"]) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + var/dkey = trim(stripped_input(usr, "Please enter the decryption key.")) + if(dkey && dkey != "") + if(src.linkedServer.decryptkey == dkey) + var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):")) + if(length(newkey) <= 3) + message = "NOTICE: Decryption key too short!" + else if(length(newkey) > 16) + message = "NOTICE: Decryption key too long!" + else if(newkey && newkey != "") + src.linkedServer.decryptkey = newkey + message = "NOTICE: Decryption key set." + else + message = incorrectkey + + //Hack the Console to get the password + if (href_list["hack"]) + if(issilicon(usr) && is_special_character(usr)) + src.hacking = 1 + src.screen = 2 + //Time it takes to bruteforce is dependant on the password length. + spawn(100*length(src.linkedServer.decryptkey)) + if(src && src.linkedServer && usr) + BruteForce(usr) + //Delete the log. + if (href_list["delete"]) + //Are they on the view logs screen? + if(screen == 1) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else //if(istype(href_list["delete"], /datum/data_pda_msg)) + src.linkedServer.pda_msgs -= locate(href_list["delete"]) + message = "NOTICE: Log Deleted!" + //Delete the request console log. + if (href_list["deleter"]) + //Are they on the view logs screen? + if(screen == 4) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else //if(istype(href_list["delete"], /datum/data_pda_msg)) + src.linkedServer.rc_msgs -= locate(href_list["deleter"]) + message = "NOTICE: Log Deleted!" + //Create a custom message + if (href_list["msg"]) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.screen = 3 + //Fake messaging selection - KEY REQUIRED + if (href_list["select"]) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + screen = 0 + else + switch(href_list["select"]) + + //Reset + if("Reset") + ResetMessage() + + //Select Your Name + if("Sender") + customsender = stripped_input(usr, "Please enter the sender's name.") + + //Select Receiver + if("Recepient") + //Get out list of viable PDAs + var/list/obj/item/device/pda/sendPDAs = get_viewable_pdas() + if(GLOB.PDAs && GLOB.PDAs.len > 0) + customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sortNames(sendPDAs) + else + customrecepient = null + + //Enter custom job + if("RecJob") + customjob = stripped_input(usr, "Please enter the sender's job.") + + //Enter message + if("Message") + custommessage = stripped_input(usr, "Please enter your message.") + + //Send message + if("Send") + + if(isnull(customsender) || customsender == "") + customsender = "UNKNOWN" + + if(isnull(customrecepient)) + message = "NOTICE: No recepient selected!" + return src.attack_hand(usr) + + if(isnull(custommessage) || custommessage == "") + message = "NOTICE: No message entered!" + return src.attack_hand(usr) + + var/obj/item/device/pda/PDARec = null + for (var/obj/item/device/pda/P in get_viewable_pdas()) + if(P.owner == customsender) + PDARec = P + //Sender isn't faking as someone who exists + if(isnull(PDARec)) + src.linkedServer.send_pda_message("[customrecepient.owner]", "[customsender]","[custommessage]") + customrecepient.tnote += "← From
    [customsender] ([customjob]):
    [custommessage]
    " + if (!customrecepient.silent) + playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1) + customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3) + if( customrecepient.loc && ishuman(customrecepient.loc) ) + var/mob/living/carbon/human/H = customrecepient.loc + to_chat(H, "[icon2html(customrecepient, viewers(H))] Message from [customsender] ([customjob]), \"[custommessage]\" (Reply)") + log_talk(usr,"[key_name(usr)] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA) + customrecepient.cut_overlays() + customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r")) + //Sender is faking as someone who exists + else + src.linkedServer.send_pda_message("[customrecepient.owner]", "[PDARec.owner]","[custommessage]") + customrecepient.tnote += "← From [PDARec.owner] ([customjob]):
    [custommessage]
    " + if (!customrecepient.silent) + playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1) + customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3) + if( customrecepient.loc && ishuman(customrecepient.loc) ) + var/mob/living/carbon/human/H = customrecepient.loc + to_chat(H, "[icon2html(customrecepient, H)] Message from [PDARec.owner] ([customjob]), \"[custommessage]\" (Reply)") + log_talk(usr,"[key_name(usr)] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA) + customrecepient.cut_overlays() + customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r")) + //Finally.. + ResetMessage() + + //Request Console Logs - KEY REQUIRED + if(href_list["viewr"]) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.screen = 4 + + if (href_list["back"]) + src.screen = 0 + + return src.attack_hand(usr) + + +/obj/item/paper/monitorkey + //..() + name = "monitor decryption key" + var/obj/machinery/message_server/server = null + +/obj/item/paper/monitorkey/Initialize() + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/item/paper/monitorkey/LateInitialize() + if(GLOB.message_servers) + for(var/obj/machinery/message_server/server in GLOB.message_servers) + if(!isnull(server)) + if(!isnull(server.decryptkey)) + info = "

    Daily Key Reset


    The new message monitor key is '[server.decryptkey]'.
    Please keep this a secret and away from the clown.
    If necessary, change the password to a more secure one." + info_links = info + add_overlay("paper_words") + break diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 61bf091af3..c13e80e48b 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -48,21 +48,21 @@ if(connected) var/d2 if(timing) //door controls do not need timers. - d2 = "Stop Time Launch" + d2 = "Stop Time Launch" else - d2 = "Initiate Time Launch" - dat += "
    \nTimer System: [d2]\nTime Left: [DisplayTimeText(time)] - - + +" + d2 = "Initiate Time Launch" + dat += "
    \nTimer System: [d2]\nTime Left: [DisplayTimeText(time)] - - + +" var/temp = "" var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 ) for(var/t in L) if(t == connected.power) temp += "[t] " else - temp += "[t] " - dat += "
    \nPower Level: [temp]
    \nFiring Sequence
    \nTest Fire Driver
    \nToggle Outer Door
    " + temp += "[t] " + dat += "
    \nPower Level: [temp]
    \nFiring Sequence
    \nTest Fire Driver
    \nToggle Outer Door
    " else - dat += "
    \nToggle Outer Door
    " - dat += "

    Close" + dat += "
    \nToggle Outer Door
    " + dat += "

    Close" add_fingerprint(usr) var/datum/browser/popup = new(user, "computer", title, 400, 500) popup.set_content(dat) diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index 3e9d6df42a..d2005d0a55 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -21,16 +21,16 @@ user.set_machine(src) var/dat = "" if(screen == 0) - dat += "
    Unlock Console" + dat += "
    Unlock Console" else if(screen == 1) dat += "

    Prisoner ID Management

    " if(inserted_id) - dat += text("[inserted_id]
    ") - dat += text("Collected Points: [inserted_id.points]. Reset.
    ") - dat += text("Card goal: [inserted_id.goal]. Set
    ") + dat += text("[inserted_id]
    ") + dat += text("Collected Points: [inserted_id.points]. Reset.
    ") + dat += text("Card goal: [inserted_id.goal]. Set
    ") dat += text("Space Law recommends quotas of 100 points per minute they would normally serve in the brig.
    ") else - dat += text("Insert Prisoner ID.
    ") + dat += text("Insert Prisoner ID.
    ") dat += "

    Prisoner Implant Management

    " dat += "
    Chemical Implants
    " var/turf/Tr = null @@ -42,9 +42,9 @@ continue dat += "ID: [C.imp_in.name] | Remaining Units: [C.reagents.total_volume]
    " dat += "| Inject: " - dat += "((1))" - dat += "((5))" - dat += "((10))
    " + dat += "((1))" + dat += "((5))" + dat += "((10))
    " dat += "********************************
    " dat += "
    Tracking Implants
    " for(var/obj/item/implant/tracking/T in GLOB.tracked_implants) @@ -61,9 +61,9 @@ loc_display = mob_loc.loc dat += "ID: [T.imp_in.name] | Location: [loc_display]
    " - dat += "(Message Holder) |
    " + dat += "(Message Holder) |
    " dat += "********************************
    " - dat += "
    Lock Console" + dat += "
    Lock Console" var/datum/browser/popup = new(user, "computer", "Prisoner Management Console", 400, 500) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 9960032d1d..ada4610e4b 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -1,176 +1,176 @@ - - - -/obj/machinery/computer/robotics - name = "robotics control console" - desc = "Used to remotely lockdown or detonate linked Cyborgs." - icon_screen = "robot" - icon_keyboard = "rd_key" + + + +/obj/machinery/computer/robotics + name = "robotics control console" + desc = "Used to remotely lockdown or detonate linked Cyborgs." + icon_screen = "robot" + icon_keyboard = "rd_key" req_access = list(ACCESS_ROBOTICS) - circuit = /obj/item/circuitboard/computer/robotics - var/temp = null - - light_color = LIGHT_COLOR_PINK - -/obj/machinery/computer/robotics/proc/can_control(mob/user, mob/living/silicon/robot/R) - if(!istype(R)) - return 0 - if(isAI(user)) - if (R.connected_ai != user) - return 0 - if(iscyborg(user)) - if (R != user) - return 0 - if(R.scrambledcodes) - return 0 - return 1 - -/obj/machinery/computer/robotics/attack_hand(mob/user) - if(..()) - return - interact(user) - -/obj/machinery/computer/robotics/interact(mob/user) - if (src.z > 6) - to_chat(user, "Unable to establish a connection: \black You're too far away from the station!") - return - user.set_machine(src) - var/dat - var/robots = 0 - for(var/mob/living/silicon/robot/R in GLOB.mob_list) - if(!can_control(user, R)) - continue - robots++ - dat += "[R.name] |" - if(R.stat) - dat += " Not Responding |" - else if (!R.canmove) - dat += " Locked Down |" - else - dat += " Operating Normally |" - if (!R.canmove) - else if(R.cell) - dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |" - else - dat += " No Cell Installed |" - if(R.module) - dat += " Module Installed ([R.module.name]) |" - else - dat += " No Module Installed |" - if(R.connected_ai) - dat += " Slaved to [R.connected_ai.name] |" - else - dat += " Independent from AI |" - if(issilicon(user) || IsAdminGhost(user)) - if(is_servant_of_ratvar(user) && user != R) - dat += "(Convert) " - else if(((issilicon(user) && is_special_character(user)) || IsAdminGhost(user)) && !R.emagged && (user != R || R.syndicate)) - dat += "(Hack) " - dat += "([R.canmove ? "Lockdown" : "Release"]) " - dat += "(Destroy)" - dat += "
    " - - if(!robots) - dat += "No Cyborg Units detected within access parameters." - dat += "
    " - - var/drones = 0 - for(var/mob/living/simple_animal/drone/D in GLOB.mob_list) - if(D.hacked) - continue - drones++ - dat += "[D.name] |" - if(D.stat) - dat += " Not Responding |" - dat += "(Destroy)" - dat += "
    " - - if(!drones) - dat += "No Drone Units detected within access parameters." - - var/datum/browser/popup = new(user, "computer", "Cyborg Control Console", 400, 500) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/robotics/Topic(href, href_list) - if(..()) - return - - if (href_list["temp"]) - src.temp = null - - else if (href_list["killbot"]) - if(src.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["killbot"]) in GLOB.silicon_mobs - if(can_control(usr, R)) - var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort") - if(choice == "Confirm" && can_control(usr, R) && !..()) - if(R.syndicate && R.emagged) - to_chat(R, "Extreme danger. Termination codes detected. Scrambling security codes and automatic AI unlink triggered.") - if(R.connected_ai) - to_chat(R.connected_ai, "

    ALERT - Cyborg detonation detected: [R.name]
    ") - R.ResetSecurityCodes() - else - var/turf/T = get_turf(R) - message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name(R, R.client)][ADMIN_JMP(T)]!") - log_game("\[key_name(usr)] detonated [key_name(R)]!") - if(R.connected_ai) - to_chat(R.connected_ai, "

    ALERT - Cyborg detonation detected: [R.name]
    ") - R.self_destruct() - else - to_chat(usr, "Access Denied.") - - else if (href_list["stopbot"]) - if(src.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) in GLOB.silicon_mobs - if(can_control(usr, R)) - var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort") - if(choice == "Confirm" && can_control(usr, R) && !..()) - message_admins("[ADMIN_LOOKUPFLW(usr)] [R.canmove ? "locked down" : "released"] [key_name(R, R.client)][ADMIN_LOOKUPFLW(R)]!") - log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [key_name(R)]!") - R.SetLockdown(!R.lockcharge) - to_chat(R, "[!R.lockcharge ? "Your lockdown has been lifted!" : "You have been locked down!"]") - if(R.connected_ai) - to_chat(R.connected_ai, "[!R.lockcharge ? "NOTICE - Cyborg lockdown lifted" : "ALERT - Cyborg lockdown detected"]: [R.name]
    ") - - else - to_chat(usr, "Access Denied.") - - else if (href_list["magbot"]) - if((issilicon(usr) && is_special_character(usr)) || IsAdminGhost(usr)) - var/mob/living/silicon/robot/R = locate(href_list["magbot"]) in GLOB.silicon_mobs - if(istype(R) && !R.emagged && ((R.syndicate && R == usr) || R.connected_ai == usr || IsAdminGhost(usr)) && !R.scrambledcodes && can_control(usr, R)) - log_game("[key_name(usr)] emagged [R.name] using robotic console!") - message_admins("[key_name_admin(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") - R.SetEmagged(1) - if(is_special_character(R)) - R.verbs += /mob/living/silicon/robot/proc/ResetSecurityCodes - - else if(href_list["convert"]) - if(issilicon(usr) && is_special_character(usr)) - var/mob/living/silicon/robot/R = locate(href_list["convert"]) in GLOB.silicon_mobs - if(istype(R) && !is_servant_of_ratvar(R) && is_servant_of_ratvar(usr) && R.connected_ai == usr) - log_game("[key_name(usr)] converted [R.name] using robotic console!") - message_admins("[key_name_admin(usr)] converted cyborg [key_name_admin(R)] using robotic console!") - add_servant_of_ratvar(R) - - else if (href_list["killdrone"]) - if(src.allowed(usr)) + circuit = /obj/item/circuitboard/computer/robotics + var/temp = null + + light_color = LIGHT_COLOR_PINK + +/obj/machinery/computer/robotics/proc/can_control(mob/user, mob/living/silicon/robot/R) + if(!istype(R)) + return 0 + if(isAI(user)) + if (R.connected_ai != user) + return 0 + if(iscyborg(user)) + if (R != user) + return 0 + if(R.scrambledcodes) + return 0 + return 1 + +/obj/machinery/computer/robotics/attack_hand(mob/user) + if(..()) + return + interact(user) + +/obj/machinery/computer/robotics/interact(mob/user) + if (src.z > 6) + to_chat(user, "Unable to establish a connection: \black You're too far away from the station!") + return + user.set_machine(src) + var/dat + var/robots = 0 + for(var/mob/living/silicon/robot/R in GLOB.mob_list) + if(!can_control(user, R)) + continue + robots++ + dat += "[R.name] |" + if(R.stat) + dat += " Not Responding |" + else if (!R.canmove) + dat += " Locked Down |" + else + dat += " Operating Normally |" + if (!R.canmove) + else if(R.cell) + dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |" + else + dat += " No Cell Installed |" + if(R.module) + dat += " Module Installed ([R.module.name]) |" + else + dat += " No Module Installed |" + if(R.connected_ai) + dat += " Slaved to [R.connected_ai.name] |" + else + dat += " Independent from AI |" + if(issilicon(user) || IsAdminGhost(user)) + if(is_servant_of_ratvar(user) && user != R) + dat += "(Convert) " + else if(((issilicon(user) && is_special_character(user)) || IsAdminGhost(user)) && !R.emagged && (user != R || R.syndicate)) + dat += "(Hack) " + dat += "([R.canmove ? "Lockdown" : "Release"]) " + dat += "(Destroy)" + dat += "
    " + + if(!robots) + dat += "No Cyborg Units detected within access parameters." + dat += "
    " + + var/drones = 0 + for(var/mob/living/simple_animal/drone/D in GLOB.mob_list) + if(D.hacked) + continue + drones++ + dat += "[D.name] |" + if(D.stat) + dat += " Not Responding |" + dat += "(Destroy)" + dat += "
    " + + if(!drones) + dat += "No Drone Units detected within access parameters." + + var/datum/browser/popup = new(user, "computer", "Cyborg Control Console", 400, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/robotics/Topic(href, href_list) + if(..()) + return + + if (href_list["temp"]) + src.temp = null + + else if (href_list["killbot"]) + if(src.allowed(usr)) + var/mob/living/silicon/robot/R = locate(href_list["killbot"]) in GLOB.silicon_mobs + if(can_control(usr, R)) + var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort") + if(choice == "Confirm" && can_control(usr, R) && !..()) + if(R.syndicate && R.emagged) + to_chat(R, "Extreme danger. Termination codes detected. Scrambling security codes and automatic AI unlink triggered.") + if(R.connected_ai) + to_chat(R.connected_ai, "

    ALERT - Cyborg detonation detected: [R.name]
    ") + R.ResetSecurityCodes() + else + var/turf/T = get_turf(R) + message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name(R, R.client)][ADMIN_JMP(T)]!") + log_game("\[key_name(usr)] detonated [key_name(R)]!") + if(R.connected_ai) + to_chat(R.connected_ai, "

    ALERT - Cyborg detonation detected: [R.name]
    ") + R.self_destruct() + else + to_chat(usr, "Access Denied.") + + else if (href_list["stopbot"]) + if(src.allowed(usr)) + var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) in GLOB.silicon_mobs + if(can_control(usr, R)) + var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort") + if(choice == "Confirm" && can_control(usr, R) && !..()) + message_admins("[ADMIN_LOOKUPFLW(usr)] [R.canmove ? "locked down" : "released"] [key_name(R, R.client)][ADMIN_LOOKUPFLW(R)]!") + log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [key_name(R)]!") + R.SetLockdown(!R.lockcharge) + to_chat(R, "[!R.lockcharge ? "Your lockdown has been lifted!" : "You have been locked down!"]") + if(R.connected_ai) + to_chat(R.connected_ai, "[!R.lockcharge ? "NOTICE - Cyborg lockdown lifted" : "ALERT - Cyborg lockdown detected"]: [R.name]
    ") + + else + to_chat(usr, "Access Denied.") + + else if (href_list["magbot"]) + if((issilicon(usr) && is_special_character(usr)) || IsAdminGhost(usr)) + var/mob/living/silicon/robot/R = locate(href_list["magbot"]) in GLOB.silicon_mobs + if(istype(R) && !R.emagged && ((R.syndicate && R == usr) || R.connected_ai == usr || IsAdminGhost(usr)) && !R.scrambledcodes && can_control(usr, R)) + log_game("[key_name(usr)] emagged [R.name] using robotic console!") + message_admins("[key_name_admin(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") + R.SetEmagged(1) + if(is_special_character(R)) + R.verbs += /mob/living/silicon/robot/proc/ResetSecurityCodes + + else if(href_list["convert"]) + if(issilicon(usr) && is_special_character(usr)) + var/mob/living/silicon/robot/R = locate(href_list["convert"]) in GLOB.silicon_mobs + if(istype(R) && !is_servant_of_ratvar(R) && is_servant_of_ratvar(usr) && R.connected_ai == usr) + log_game("[key_name(usr)] converted [R.name] using robotic console!") + message_admins("[key_name_admin(usr)] converted cyborg [key_name_admin(R)] using robotic console!") + add_servant_of_ratvar(R) + + else if (href_list["killdrone"]) + if(src.allowed(usr)) var/mob/living/simple_animal/drone/D = locate(href_list["killdrone"]) in GLOB.mob_list - if(D.hacked) - to_chat(usr, "ERROR: [D] is not responding to external commands.") - else + if(D.hacked) + to_chat(usr, "ERROR: [D] is not responding to external commands.") + else var/turf/T = get_turf(D) message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(D)][ADMIN_JMP(T)]!") log_game("[key_name(usr)] detonated [key_name(D)]!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, D) - s.start() - D.visible_message("\the [D] self destructs!") - D.gib() + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(3, 1, D) + s.start() + D.visible_message("\the [D] self destructs!") + D.gib() - - src.updateUsrDialog() - return + + src.updateUsrDialog() + return diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 81204a69f0..13f12c6d3f 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -63,9 +63,9 @@ var/dat if(temp) - dat = text("[]

    Clear Screen", temp, src) + dat = text("[]

    Clear Screen", temp) else - dat = text("Confirm Identity: []
    ", src, (scan ? text("[]", scan.name) : "----------")) + dat = text("Confirm Identity: []
    ", (scan ? text("[]", scan.name) : "----------")) if(authenticated) switch(screen) if(1) @@ -111,7 +111,7 @@ "} dat += {"

    "} - dat += text("New Record
    ", src) + dat += "New Record
    " //search bar dat += {" @@ -133,10 +133,10 @@
    - - - - + + + +"} if(!isnull(GLOB.data_core.general)) @@ -161,7 +161,7 @@ background = "''" //"'background-color:#FFFFFF;'" crimstat = "No Record." dat += "" - dat += text("", R.fields["name"], R.fields["id"], R.fields["rank"], R.fields["fingerprint"], src, R, R.fields["name"]) + dat += text("", R.fields["name"], R.fields["id"], R.fields["rank"], R.fields["fingerprint"], R.fields["name"]) dat += text("", R.fields["id"]) dat += text("", R.fields["rank"]) dat += text("", R.fields["fingerprint"]) @@ -173,11 +173,11 @@ var complete_list = maintable.innerHTML;
    "} - dat += text("Record Maintenance

    ", src) - dat += text("{Log Out}",src) + dat += "Record Maintenance

    " + dat += "{Log Out}" if(2) dat += "Records Maintenance
    " - dat += "
    Delete All Records

    Back" + dat += "
    Delete All Records

    Back" if(3) dat += "Security Record
    " if(istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1)) @@ -188,27 +188,27 @@ var/obj/item/photo/P2 = active1.fields["photo_side"] user << browse_rsc(P2.img, "photo_side") dat += {"
    NameIDRankFingerprintsNameIDRankFingerprints Criminal Status
    [][][][][]
    -
    - - - - "} - dat += "" - dat += {" - + + + + "} + dat += "" + dat += {" +
    Name: [active1.fields["name"]] 
    ID: [active1.fields["id"]] 
    Sex: [active1.fields["sex"]] 
    Age: [active1.fields["age"]] 
    Species: [active1.fields["species"]] 
    Rank: [active1.fields["rank"]] 
    Fingerprint: [active1.fields["fingerprint"]] 
    Name: [active1.fields["name"]] 
    ID: [active1.fields["id"]] 
    Sex: [active1.fields["sex"]] 
    Age: [active1.fields["age"]] 
    Species: [active1.fields["species"]] 
    Rank: [active1.fields["rank"]] 
    Fingerprint: [active1.fields["fingerprint"]] 
    Physical Status: [active1.fields["p_stat"]] 
    Mental Status: [active1.fields["m_stat"]] 
    -

    - Update front photo

    - Update side photo
    +
    +

    + Update front photo

    + Update side photo
    "} else dat += "
    General Record Lost!
    " if((istype(active2, /datum/data/record) && GLOB.data_core.security.Find(active2))) dat += "Security Data" - dat += "
    Criminal Status: [active2.fields["criminal"]]" - dat += "

    Minor Crimes: Add New" + dat += "
    Criminal Status: [active2.fields["criminal"]]" + dat += "

    Minor Crimes: Add New" dat +={" @@ -224,12 +224,12 @@ dat += "" dat += "" dat += "" - dat += "" + dat += "" dat += "" dat += "
    [c.crimeDetails][c.author][c.time]\[X\]\[X\]
    " - dat += "
    Major Crimes: Add New" + dat += "
    Major Crimes: Add New" dat +={" @@ -244,27 +244,27 @@ dat += "" dat += "" dat += "" - dat += "" + dat += "" dat += "" dat += "
    [c.crimeDetails][c.author][c.time]\[X\]\[X\]
    " - dat += "
    \nImportant Notes:
    \n\t [active2.fields["notes"]] " + dat += "
    \nImportant Notes:
    \n\t [active2.fields["notes"]] " dat += "

    Comments/Log
    " var/counter = 1 while(active2.fields[text("com_[]", counter)]) dat += (active2.fields[text("com_[]", counter)] + "
    ") if(active2.fields[text("com_[]", counter)] != "Deleted") - dat += text("Delete Entry

    ", src, counter) + dat += text("Delete Entry

    ", counter) counter++ - dat += text("Add Entry

    ", src) - dat += text("Delete Record (Security Only)
    ", src) + dat += "Add Entry

    " + dat += "Delete Record (Security Only)
    " else dat += "Security Record Lost!
    " - dat += text("New Security Record

    ", src) - dat += text("Delete Record (ALL)
    Print Record
    Print Wanted Poster
    Back
    ", src, src, src, src) + dat += "New Security Record

    " + dat += "Delete Record (ALL)
    Print Record
    Print Wanted Poster
    Back
    " else else - dat += text("{Log In}", src) + dat += "{Log In}" var/datum/browser/popup = new(user, "secure_rec", "Security Records Console", 600, 400) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) @@ -451,8 +451,8 @@ What a mess.*/ if("Delete All Records") temp = "" temp += "Are you sure you wish to delete all Security records?
    " - temp += "Yes
    " - temp += "No" + temp += "Yes
    " + temp += "No" if("Purge All Records") investigate_log("[usr.name] ([usr.key]) has purged all the security records.", INVESTIGATE_RECORDS) @@ -476,14 +476,14 @@ What a mess.*/ if("Delete Record (ALL)") if(active1) temp = "

    Are you sure you wish to delete the record (ALL)?
    " - temp += "Yes
    " - temp += "No" + temp += "Yes
    " + temp += "No" if("Delete Record (Security)") if(active2) temp = "
    Are you sure you wish to delete the record (Security Portion Only)?
    " - temp += "Yes
    " - temp += "No" + temp += "Yes
    " + temp += "No" if("Delete Entry") if((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])])) @@ -657,11 +657,11 @@ What a mess.*/ if(istype(active2, /datum/data/record)) temp = "
    Criminal Status:
    " temp += "" if("rank") var/list/L = list( "Head of Personnel", "Captain", "AI", "Central Command" ) @@ -670,7 +670,7 @@ What a mess.*/ temp = "
    Rank:
    " temp += "
      " for(var/rank in get_all_jobs()) - temp += "
    • [rank]
    • " + temp += "
    • [rank]
    • " temp += "
    " else alert(usr, "You do not have the required rank to do this!") diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 4fefdb044e..c879bc175a 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -97,8 +97,8 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E if(uplinkholder) dat += "[uplinkholder.hidden_uplink.telecrystals] telecrystals remain in this uplink.
    " if(linkedboss) - dat += "Donate TC: 1 | 5 | All" - dat += "
    Eject Uplink" + dat += "Donate TC: 1 | 5 | All" + dat += "
    Eject Uplink" var/datum/browser/popup = new(user, "computer", "Telecrystal Upload/Receive Station", 700, 500) @@ -167,7 +167,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E var/dat = "" - dat += "Scan for TC stations.
    " + dat += "Scan for TC stations.
    " dat += "[storedcrystals] telecrystals are available for distribution.
    " dat += "

    " @@ -177,11 +177,11 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E if(A.uplinkholder) dat += "[A.uplinkholder.hidden_uplink.telecrystals] telecrystals." if(storedcrystals) - dat+= "
    Add TC: 1 | 5 | 10 | All" + dat+= "
    Add TC: 1 | 5 | 10 | All" dat += "
    " if(TCstations.len && storedcrystals) - dat += "

    Evenly distribute remaining TC.

    " + dat += "

    Evenly distribute remaining TC.

    " for(var/entry in transferlog) diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm index ab4c72ab41..c62965f02d 100644 --- a/code/game/machinery/computer/teleporter.dm +++ b/code/game/machinery/computer/teleporter.dm @@ -70,16 +70,16 @@ data += "Calibration: Sub-Optimal" data += "

    " - data += "Change regime
    " - data += "Set target
    " + data += "Change regime
    " + data += "Set target
    " if(locked) - data += "
    Get target from memory
    " - data += "Eject GPS device
    " + data += "
    Get target from memory
    " + data += "Eject GPS device
    " else data += "
    Get target from memory
    " data += "Eject GPS device
    " - data += "
    Calibrate Hub" + data += "
    Calibrate Hub" var/datum/browser/popup = new(user, "teleporter", name, 400, 400) popup.set_content(data) diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index de26806273..ec8779b7d2 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -92,21 +92,21 @@ user.set_machine(src) var/list/dat = list() dat +="
    " - dat += " Select Track
    " + dat += " Select Track
    " dat += "Track Selected: [selection.song_name]
    " dat += "Track Length: [DisplayTimeText(selection.song_length)]

    " dat += "
    DJ's Soundboard:
    " dat +="
    " - dat += "Air Horn " - dat += "Station Alert " - dat += "Warning Siren " - dat += "Honk
    " - dat += "Shotgun Pump" - dat += "Gunshot" - dat += "Esword" - dat += "Harm Alarm" + dat += "Air Horn " + dat += "Station Alert " + dat += "Warning Siren " + dat += "Honk
    " + dat += "Shotgun Pump" + dat += "Gunshot" + dat += "Esword" + dat += "Harm Alarm" var/datum/browser/popup = new(user, "vending", "Radiance Dance Machine - Mark IV", 400, 350) popup.set_content(dat.Join()) popup.open() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index aac80cc1a0..817b8b1cae 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -118,6 +118,15 @@ max_integrity = normal_integrity if(damage_deflection == AIRLOCK_DAMAGE_DEFLECTION_N && security_level > AIRLOCK_SECURITY_METAL) damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_R + prepare_huds() + var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC] + diag_hud.add_to_hud(src) + diag_hud_set_electrified() + + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/door/airlock/LateInitialize() + . = ..() if(abandoned) var/outcome = rand(1,100) switch(outcome) @@ -136,10 +145,6 @@ welded = TRUE if(24 to 30) panel_open = TRUE - prepare_huds() - var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC] - diag_hud.add_to_hud(src) - diag_hud_set_electrified() update_icon() @@ -632,23 +637,23 @@ if(wires.is_cut(WIRE_IDSCAN)) t1 += text("IdScan wire is cut.
    \n") else if(src.aiDisabledIdScanner) - t1 += text("IdScan disabled. Enable?
    \n", src) + t1 += "IdScan disabled. Enable?
    \n" else - t1 += text("IdScan enabled. Disable?
    \n", src) + t1 += "IdScan enabled. Disable?
    \n" if(src.emergency) - t1 += text("Emergency Access Override is enabled. Disable?
    \n", src) + t1 += "Emergency Access Override is enabled. Disable?
    \n" else - t1 += text("Emergency Access Override is disabled. Enable?
    \n", src) + t1 += "Emergency Access Override is disabled. Enable?
    \n" if(wires.is_cut(WIRE_POWER1)) t1 += text("Main Power Input wire is cut.
    \n") if(wires.is_cut(WIRE_POWER2)) t1 += text("Main Power Output wire is cut.
    \n") if(!secondsMainPowerLost) - t1 += text("Temporarily disrupt main power?.
    \n", src) + t1 += "Temporarily disrupt main power?.
    \n" if(!secondsBackupPowerLost) - t1 += text("Temporarily disrupt backup power?.
    \n", src) + t1 += "Temporarily disrupt backup power?.
    \n" if(wires.is_cut(WIRE_BACKUP1)) t1 += text("Backup Power Input wire is cut.
    \n") @@ -658,53 +663,53 @@ if(wires.is_cut(WIRE_BOLTS)) t1 += text("Door bolt drop wire is cut.
    \n") else if(!src.locked) - t1 += text("Door bolts are up. Drop them?
    \n", src) + t1 += "Door bolts are up. Drop them?
    \n" else t1 += text("Door bolts are down.") if(src.hasPower()) - t1 += text(" Raise?
    \n", src) + t1 += " Raise?
    \n" else t1 += text(" Cannot raise door bolts due to power failure.
    \n") if(wires.is_cut(WIRE_LIGHT)) t1 += text("Door bolt lights wire is cut.
    \n") else if(!src.lights) - t1 += text("Door bolt lights are off. Enable?
    \n", src) + t1 += "Door bolt lights are off. Enable?
    \n" else - t1 += text("Door bolt lights are on. Disable?
    \n", src) + t1 += "Door bolt lights are on. Disable?
    \n" if(wires.is_cut(WIRE_SHOCK)) t1 += text("Electrification wire is cut.
    \n") if(secondsElectrified==ELECTRIFIED_PERMANENT) - t1 += text("Door is electrified indefinitely. Un-electrify it?
    \n", src) + t1 += "Door is electrified indefinitely. Un-electrify it?
    \n" else if(secondsElectrified>NOT_ELECTRIFIED) - t1 += text("Door is electrified temporarily ([] seconds). Un-electrify it?
    \n", secondsElectrified, src) + t1 += text("Door is electrified temporarily ([] seconds). Un-electrify it?
    \n", secondsElectrified) else - t1 += text("Door is not electrified. Electrify it for 30 seconds? Or, Electrify it indefinitely until someone cancels the electrification?
    \n", src, src) + t1 += "Door is not electrified. Electrify it for 30 seconds? Or, Electrify it indefinitely until someone cancels the electrification?
    \n" if(wires.is_cut(WIRE_SAFETY)) t1 += text("Door force sensors not responding.
    \n") else if(src.safe) - t1 += text("Door safeties operating normally. Override?
    \n",src) + t1 += "Door safeties operating normally. Override?
    \n" else - t1 += text("Danger. Door safeties disabled. Restore?
    \n",src) + t1 += "Danger. Door safeties disabled. Restore?
    \n" if(wires.is_cut(WIRE_TIMING)) t1 += text("Door timing circuitry not responding.
    \n") else if(src.normalspeed) - t1 += text("Door timing circuitry operating normally. Override?
    \n",src) + t1 += "Door timing circuitry operating normally. Override?
    \n" else - t1 += text("Warning. Door timing circuitry operating abnormally. Restore?
    \n",src) + t1 += "Warning. Door timing circuitry operating abnormally. Restore?
    \n" if(src.welded) t1 += text("Door appears to have been welded shut.
    \n") else if(!src.locked) if(src.density) - t1 += text("Open door
    \n", src) + t1 += "Open door
    \n" else - t1 += text("Close door
    \n", src) + t1 += "Close door
    \n" - t1 += text("

    Close

    \n", src) + t1 += "

    Close

    \n" user << browse(t1, "window=airlock") onclose(user, "airlock") diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm index 5e0d018554..e243494f2b 100644 --- a/code/game/machinery/embedded_controller/access_controller.dm +++ b/code/game/machinery/embedded_controller/access_controller.dm @@ -277,29 +277,29 @@ if(!exteriorAirlock || !interiorAirlock) if(!exteriorAirlock) if(interiorAirlock.density) - output = "Open Interior Airlock
    " + output = "Open Interior Airlock
    " else - output = "Close Interior Airlock
    " + output = "Close Interior Airlock
    " else if(exteriorAirlock.density) - output = "Open Exterior Airlock
    " + output = "Open Exterior Airlock
    " else - output = "Close Exterior Airlock
    " + output = "Close Exterior Airlock
    " else if(exteriorAirlock.density) if(interiorAirlock.density) - output = {"Open Exterior Airlock
    - Open Interior Airlock
    "} + output = {"Open Exterior Airlock
    + Open Interior Airlock
    "} else - output = {"Cycle to Exterior Airlock
    - Close Interior Airlock
    "} + output = {"Cycle to Exterior Airlock
    + Close Interior Airlock
    "} else if(interiorAirlock.density) - output = {"Close Exterior Airlock
    - Cycle to Interior Airlock
    "} + output = {"Close Exterior Airlock
    + Cycle to Interior Airlock
    "} else - output = {"Close Exterior Airlock
    - Close Interior Airlock
    "} + output = {"Close Exterior Airlock
    + Close Interior Airlock
    "} output = {"Access Control Console
    diff --git a/code/game/machinery/embedded_controller/airlock_controller.dm b/code/game/machinery/embedded_controller/airlock_controller.dm index 59d58bc9a5..f34191370d 100644 --- a/code/game/machinery/embedded_controller/airlock_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_controller.dm @@ -1,296 +1,296 @@ -//States for airlock_control -#define AIRLOCK_STATE_INOPEN -2 -#define AIRLOCK_STATE_PRESSURIZE -1 -#define AIRLOCK_STATE_CLOSED 0 -#define AIRLOCK_STATE_DEPRESSURIZE 1 -#define AIRLOCK_STATE_OUTOPEN 2 - -/datum/computer/file/embedded_program/airlock_controller - var/id_tag - var/exterior_door_tag - var/interior_door_tag - var/airpump_tag - var/sensor_tag - var/sanitize_external - - state = AIRLOCK_STATE_CLOSED - var/target_state = AIRLOCK_STATE_CLOSED - var/sensor_pressure = null - -/datum/computer/file/embedded_program/airlock_controller/receive_signal(datum/signal/signal, receive_method, receive_param) - var/receive_tag = signal.data["tag"] - if(!receive_tag) - return - - if(receive_tag==sensor_tag) - if(signal.data["pressure"]) - sensor_pressure = text2num(signal.data["pressure"]) - - else if(receive_tag==exterior_door_tag) - memory["exterior_status"] = signal.data["door_status"] - - else if(receive_tag==interior_door_tag) - memory["interior_status"] = signal.data["door_status"] - - else if(receive_tag==airpump_tag) - if(signal.data["power"]) - memory["pump_status"] = signal.data["direction"] - else - memory["pump_status"] = "off" - - else if(receive_tag==id_tag) - switch(signal.data["command"]) - if("cycle") - if(state < AIRLOCK_STATE_CLOSED) - target_state = AIRLOCK_STATE_OUTOPEN - else - target_state = AIRLOCK_STATE_INOPEN - -/datum/computer/file/embedded_program/airlock_controller/receive_user_command(command) - switch(command) - if("cycle_closed") - target_state = AIRLOCK_STATE_CLOSED - if("cycle_exterior") - target_state = AIRLOCK_STATE_OUTOPEN - if("cycle_interior") - target_state = AIRLOCK_STATE_INOPEN - if("abort") - target_state = AIRLOCK_STATE_CLOSED - -/datum/computer/file/embedded_program/airlock_controller/process() - var/process_again = 1 - while(process_again) - process_again = 0 - switch(state) - if(AIRLOCK_STATE_INOPEN) // state -2 - if(target_state > state) - if(memory["interior_status"] == "closed") - state = AIRLOCK_STATE_CLOSED - process_again = 1 - else - var/datum/signal/signal = new - signal.data["tag"] = interior_door_tag - signal.data["command"] = "secure_close" - post_signal(signal) - else - if(memory["pump_status"] != "off") - var/datum/signal/signal = new - signal.data = list( - "tag" = airpump_tag, - "power" = 0, - "sigtype"="command" - ) - post_signal(signal) - - if(AIRLOCK_STATE_PRESSURIZE) - if(target_state < state) - if(sensor_pressure >= ONE_ATMOSPHERE*0.95) - if(memory["interior_status"] == "open") - state = AIRLOCK_STATE_INOPEN - process_again = 1 - else - var/datum/signal/signal = new - signal.data["tag"] = interior_door_tag - signal.data["command"] = "secure_open" - post_signal(signal) - else - var/datum/signal/signal = new - signal.data = list( - "tag" = airpump_tag, - "sigtype"="command" - ) - if(memory["pump_status"] == "siphon") - signal.data["stabalize"] = 1 - else if(memory["pump_status"] != "release") - signal.data["power"] = 1 - post_signal(signal) - else if(target_state > state) - state = AIRLOCK_STATE_CLOSED - process_again = 1 - - if(AIRLOCK_STATE_CLOSED) - if(target_state > state) - if(memory["interior_status"] == "closed") - state = AIRLOCK_STATE_DEPRESSURIZE - process_again = 1 - else - var/datum/signal/signal = new - signal.data["tag"] = interior_door_tag - signal.data["command"] = "secure_close" - post_signal(signal) - else if(target_state < state) - if(memory["exterior_status"] == "closed") - state = AIRLOCK_STATE_PRESSURIZE - process_again = 1 - else - var/datum/signal/signal = new - signal.data["tag"] = exterior_door_tag - signal.data["command"] = "secure_close" - post_signal(signal) - - else - if(memory["pump_status"] != "off") - var/datum/signal/signal = new - signal.data = list( - "tag" = airpump_tag, - "power" = 0, - "sigtype"="command" - ) - post_signal(signal) - - if(AIRLOCK_STATE_DEPRESSURIZE) - var/target_pressure = ONE_ATMOSPHERE*0.05 - if(sanitize_external) - target_pressure = ONE_ATMOSPHERE*0.01 - - if(sensor_pressure <= target_pressure) - if(target_state > state) - if(memory["exterior_status"] == "open") - state = AIRLOCK_STATE_OUTOPEN - else - var/datum/signal/signal = new - signal.data["tag"] = exterior_door_tag - signal.data["command"] = "secure_open" - post_signal(signal) - else if(target_state < state) - state = AIRLOCK_STATE_CLOSED - process_again = 1 - else if((target_state < state) && !sanitize_external) - state = AIRLOCK_STATE_CLOSED - process_again = 1 - else - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.data = list( - "tag" = airpump_tag, - "sigtype"="command" - ) - if(memory["pump_status"] == "release") - signal.data["purge"] = 1 - else if(memory["pump_status"] != "siphon") - signal.data["power"] = 1 - post_signal(signal) - - if(AIRLOCK_STATE_OUTOPEN) //state 2 - if(target_state < state) - if(memory["exterior_status"] == "closed") - if(sanitize_external) - state = AIRLOCK_STATE_DEPRESSURIZE - process_again = 1 - else - state = AIRLOCK_STATE_CLOSED - process_again = 1 - else - var/datum/signal/signal = new - signal.data["tag"] = exterior_door_tag - signal.data["command"] = "secure_close" - post_signal(signal) - else - if(memory["pump_status"] != "off") - var/datum/signal/signal = new - signal.data = list( - "tag" = airpump_tag, - "power" = 0, - "sigtype"="command" - ) - post_signal(signal) - - memory["sensor_pressure"] = sensor_pressure - memory["processing"] = state != target_state - //sensor_pressure = null //not sure if we can comment this out. Uncomment in case of problems -rastaf0 - - return 1 - - -/obj/machinery/embedded_controller/radio/airlock_controller - icon = 'icons/obj/airlock_machines.dmi' - icon_state = "airlock_control_standby" - - name = "airlock console" - density = FALSE - - frequency = 1449 - power_channel = ENVIRON - - // Setup parameters only - var/id_tag - var/exterior_door_tag - var/interior_door_tag - var/airpump_tag - var/sensor_tag - var/sanitize_external - -/obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload) - . = ..() - if(!mapload) - return - - var/datum/computer/file/embedded_program/airlock_controller/new_prog = new - - new_prog.id_tag = id_tag - new_prog.exterior_door_tag = exterior_door_tag - new_prog.interior_door_tag = interior_door_tag - new_prog.airpump_tag = airpump_tag - new_prog.sensor_tag = sensor_tag - new_prog.sanitize_external = sanitize_external - - new_prog.master = src - program = new_prog - -/obj/machinery/embedded_controller/radio/airlock_controller/update_icon() - if(on && program) - if(program.memory["processing"]) - icon_state = "airlock_control_process" - else - icon_state = "airlock_control_standby" - else - icon_state = "airlock_control_off" - - -/obj/machinery/embedded_controller/radio/airlock_controller/return_text() - var/state_options = null - - var/state = 0 - var/sensor_pressure = "----" - var/exterior_status = "----" - var/interior_status = "----" - var/pump_status = "----" - var/current_status = "Inactive
     " - if(program) - state = program.state - sensor_pressure = program.memory["sensor_pressure"] ? program.memory["sensor_pressure"] : "----" - exterior_status = program.memory["exterior_status"] ? program.memory["exterior_status"] : "----" - interior_status = program.memory["interior_status"] ? program.memory["interior_status"] : "----" - pump_status = program.memory["pump_status"] ? program.memory["pump_status"] : "----" - - switch(state) - if(AIRLOCK_STATE_INOPEN) - state_options = {"Close Interior Airlock
    -Cycle to Exterior Airlock
    "} - current_status = "Interior Airlock Open
    Chamber Pressurized" - if(AIRLOCK_STATE_PRESSURIZE) - state_options = "Abort Cycling
    " - current_status = "Cycling to Interior Airlock
    Chamber Pressurizing" - if(AIRLOCK_STATE_CLOSED) - state_options = {"Open Interior Airlock
    -Open Exterior Airlock
    "} - if(AIRLOCK_STATE_DEPRESSURIZE) - state_options = "Abort Cycling
    " - current_status = "Cycling to Exterior Airlock
    Chamber Depressurizing" - if(AIRLOCK_STATE_OUTOPEN) - state_options = {"Cycle to Interior Airlock
    -Close Exterior Airlock
    "} - current_status = "Exterior Airlock Open
    Chamber Depressurized" - - var/output = {"

    Airlock Status

    -
    -
    Current Status:
    [current_status]
    -
     
    -
    \> Chamber Pressure:
    [sensor_pressure] kPa
    -
    \> Control Pump:
    [pump_status]
    -
    \> Interior Door:
    [interior_status]
    -
    \> Exterior Door:
    [exterior_status]
    -
    -[state_options]"} - - return output +//States for airlock_control +#define AIRLOCK_STATE_INOPEN -2 +#define AIRLOCK_STATE_PRESSURIZE -1 +#define AIRLOCK_STATE_CLOSED 0 +#define AIRLOCK_STATE_DEPRESSURIZE 1 +#define AIRLOCK_STATE_OUTOPEN 2 + +/datum/computer/file/embedded_program/airlock_controller + var/id_tag + var/exterior_door_tag + var/interior_door_tag + var/airpump_tag + var/sensor_tag + var/sanitize_external + + state = AIRLOCK_STATE_CLOSED + var/target_state = AIRLOCK_STATE_CLOSED + var/sensor_pressure = null + +/datum/computer/file/embedded_program/airlock_controller/receive_signal(datum/signal/signal, receive_method, receive_param) + var/receive_tag = signal.data["tag"] + if(!receive_tag) + return + + if(receive_tag==sensor_tag) + if(signal.data["pressure"]) + sensor_pressure = text2num(signal.data["pressure"]) + + else if(receive_tag==exterior_door_tag) + memory["exterior_status"] = signal.data["door_status"] + + else if(receive_tag==interior_door_tag) + memory["interior_status"] = signal.data["door_status"] + + else if(receive_tag==airpump_tag) + if(signal.data["power"]) + memory["pump_status"] = signal.data["direction"] + else + memory["pump_status"] = "off" + + else if(receive_tag==id_tag) + switch(signal.data["command"]) + if("cycle") + if(state < AIRLOCK_STATE_CLOSED) + target_state = AIRLOCK_STATE_OUTOPEN + else + target_state = AIRLOCK_STATE_INOPEN + +/datum/computer/file/embedded_program/airlock_controller/receive_user_command(command) + switch(command) + if("cycle_closed") + target_state = AIRLOCK_STATE_CLOSED + if("cycle_exterior") + target_state = AIRLOCK_STATE_OUTOPEN + if("cycle_interior") + target_state = AIRLOCK_STATE_INOPEN + if("abort") + target_state = AIRLOCK_STATE_CLOSED + +/datum/computer/file/embedded_program/airlock_controller/process() + var/process_again = 1 + while(process_again) + process_again = 0 + switch(state) + if(AIRLOCK_STATE_INOPEN) // state -2 + if(target_state > state) + if(memory["interior_status"] == "closed") + state = AIRLOCK_STATE_CLOSED + process_again = 1 + else + var/datum/signal/signal = new + signal.data["tag"] = interior_door_tag + signal.data["command"] = "secure_close" + post_signal(signal) + else + if(memory["pump_status"] != "off") + var/datum/signal/signal = new + signal.data = list( + "tag" = airpump_tag, + "power" = 0, + "sigtype"="command" + ) + post_signal(signal) + + if(AIRLOCK_STATE_PRESSURIZE) + if(target_state < state) + if(sensor_pressure >= ONE_ATMOSPHERE*0.95) + if(memory["interior_status"] == "open") + state = AIRLOCK_STATE_INOPEN + process_again = 1 + else + var/datum/signal/signal = new + signal.data["tag"] = interior_door_tag + signal.data["command"] = "secure_open" + post_signal(signal) + else + var/datum/signal/signal = new + signal.data = list( + "tag" = airpump_tag, + "sigtype"="command" + ) + if(memory["pump_status"] == "siphon") + signal.data["stabalize"] = 1 + else if(memory["pump_status"] != "release") + signal.data["power"] = 1 + post_signal(signal) + else if(target_state > state) + state = AIRLOCK_STATE_CLOSED + process_again = 1 + + if(AIRLOCK_STATE_CLOSED) + if(target_state > state) + if(memory["interior_status"] == "closed") + state = AIRLOCK_STATE_DEPRESSURIZE + process_again = 1 + else + var/datum/signal/signal = new + signal.data["tag"] = interior_door_tag + signal.data["command"] = "secure_close" + post_signal(signal) + else if(target_state < state) + if(memory["exterior_status"] == "closed") + state = AIRLOCK_STATE_PRESSURIZE + process_again = 1 + else + var/datum/signal/signal = new + signal.data["tag"] = exterior_door_tag + signal.data["command"] = "secure_close" + post_signal(signal) + + else + if(memory["pump_status"] != "off") + var/datum/signal/signal = new + signal.data = list( + "tag" = airpump_tag, + "power" = 0, + "sigtype"="command" + ) + post_signal(signal) + + if(AIRLOCK_STATE_DEPRESSURIZE) + var/target_pressure = ONE_ATMOSPHERE*0.05 + if(sanitize_external) + target_pressure = ONE_ATMOSPHERE*0.01 + + if(sensor_pressure <= target_pressure) + if(target_state > state) + if(memory["exterior_status"] == "open") + state = AIRLOCK_STATE_OUTOPEN + else + var/datum/signal/signal = new + signal.data["tag"] = exterior_door_tag + signal.data["command"] = "secure_open" + post_signal(signal) + else if(target_state < state) + state = AIRLOCK_STATE_CLOSED + process_again = 1 + else if((target_state < state) && !sanitize_external) + state = AIRLOCK_STATE_CLOSED + process_again = 1 + else + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.data = list( + "tag" = airpump_tag, + "sigtype"="command" + ) + if(memory["pump_status"] == "release") + signal.data["purge"] = 1 + else if(memory["pump_status"] != "siphon") + signal.data["power"] = 1 + post_signal(signal) + + if(AIRLOCK_STATE_OUTOPEN) //state 2 + if(target_state < state) + if(memory["exterior_status"] == "closed") + if(sanitize_external) + state = AIRLOCK_STATE_DEPRESSURIZE + process_again = 1 + else + state = AIRLOCK_STATE_CLOSED + process_again = 1 + else + var/datum/signal/signal = new + signal.data["tag"] = exterior_door_tag + signal.data["command"] = "secure_close" + post_signal(signal) + else + if(memory["pump_status"] != "off") + var/datum/signal/signal = new + signal.data = list( + "tag" = airpump_tag, + "power" = 0, + "sigtype"="command" + ) + post_signal(signal) + + memory["sensor_pressure"] = sensor_pressure + memory["processing"] = state != target_state + //sensor_pressure = null //not sure if we can comment this out. Uncomment in case of problems -rastaf0 + + return 1 + + +/obj/machinery/embedded_controller/radio/airlock_controller + icon = 'icons/obj/airlock_machines.dmi' + icon_state = "airlock_control_standby" + + name = "airlock console" + density = FALSE + + frequency = 1449 + power_channel = ENVIRON + + // Setup parameters only + var/id_tag + var/exterior_door_tag + var/interior_door_tag + var/airpump_tag + var/sensor_tag + var/sanitize_external + +/obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload) + . = ..() + if(!mapload) + return + + var/datum/computer/file/embedded_program/airlock_controller/new_prog = new + + new_prog.id_tag = id_tag + new_prog.exterior_door_tag = exterior_door_tag + new_prog.interior_door_tag = interior_door_tag + new_prog.airpump_tag = airpump_tag + new_prog.sensor_tag = sensor_tag + new_prog.sanitize_external = sanitize_external + + new_prog.master = src + program = new_prog + +/obj/machinery/embedded_controller/radio/airlock_controller/update_icon() + if(on && program) + if(program.memory["processing"]) + icon_state = "airlock_control_process" + else + icon_state = "airlock_control_standby" + else + icon_state = "airlock_control_off" + + +/obj/machinery/embedded_controller/radio/airlock_controller/return_text() + var/state_options = null + + var/state = 0 + var/sensor_pressure = "----" + var/exterior_status = "----" + var/interior_status = "----" + var/pump_status = "----" + var/current_status = "Inactive
     " + if(program) + state = program.state + sensor_pressure = program.memory["sensor_pressure"] ? program.memory["sensor_pressure"] : "----" + exterior_status = program.memory["exterior_status"] ? program.memory["exterior_status"] : "----" + interior_status = program.memory["interior_status"] ? program.memory["interior_status"] : "----" + pump_status = program.memory["pump_status"] ? program.memory["pump_status"] : "----" + + switch(state) + if(AIRLOCK_STATE_INOPEN) + state_options = {"Close Interior Airlock
    +Cycle to Exterior Airlock
    "} + current_status = "Interior Airlock Open
    Chamber Pressurized" + if(AIRLOCK_STATE_PRESSURIZE) + state_options = "Abort Cycling
    " + current_status = "Cycling to Interior Airlock
    Chamber Pressurizing" + if(AIRLOCK_STATE_CLOSED) + state_options = {"Open Interior Airlock
    +Open Exterior Airlock
    "} + if(AIRLOCK_STATE_DEPRESSURIZE) + state_options = "Abort Cycling
    " + current_status = "Cycling to Exterior Airlock
    Chamber Depressurizing" + if(AIRLOCK_STATE_OUTOPEN) + state_options = {"Cycle to Interior Airlock
    +Close Exterior Airlock
    "} + current_status = "Exterior Airlock Open
    Chamber Depressurized" + + var/output = {"

    Airlock Status

    +
    +
    Current Status:
    [current_status]
    +
     
    +
    \> Chamber Pressure:
    [sensor_pressure] kPa
    +
    \> Control Pump:
    [pump_status]
    +
    \> Interior Door:
    [interior_status]
    +
    \> Exterior Door:
    [exterior_status]
    +
    +[state_options]"} + + return output diff --git a/code/game/machinery/embedded_controller/simple_vent_controller.dm b/code/game/machinery/embedded_controller/simple_vent_controller.dm index 063e81354c..af945c7ccb 100644 --- a/code/game/machinery/embedded_controller/simple_vent_controller.dm +++ b/code/game/machinery/embedded_controller/simple_vent_controller.dm @@ -1,79 +1,79 @@ -/datum/computer/file/embedded_program/simple_vent_controller - - var/airpump_tag - -/datum/computer/file/embedded_program/simple_vent_controller/receive_user_command(command) - switch(command) - if("vent_inactive") - var/datum/signal/signal = new - signal.data = list( - "tag" = airpump_tag, - "sigtype"="command" - ) - signal.data["power"] = 0 - post_signal(signal) - - if("vent_pump") - var/datum/signal/signal = new - signal.data = list( - "tag" = airpump_tag, - "sigtype"="command" - ) - signal.data["stabalize"] = 1 - signal.data["power"] = 1 - post_signal(signal) - - if("vent_clear") - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.data = list( - "tag" = airpump_tag, - "sigtype"="command" - ) - signal.data["purge"] = 1 - signal.data["power"] = 1 - post_signal(signal) - -/datum/computer/file/embedded_program/simple_vent_controller/process() - return 0 - - -/obj/machinery/embedded_controller/radio/simple_vent_controller - icon = 'icons/obj/airlock_machines.dmi' - icon_state = "airlock_control_standby" - - name = "vent controller" +/datum/computer/file/embedded_program/simple_vent_controller + + var/airpump_tag + +/datum/computer/file/embedded_program/simple_vent_controller/receive_user_command(command) + switch(command) + if("vent_inactive") + var/datum/signal/signal = new + signal.data = list( + "tag" = airpump_tag, + "sigtype"="command" + ) + signal.data["power"] = 0 + post_signal(signal) + + if("vent_pump") + var/datum/signal/signal = new + signal.data = list( + "tag" = airpump_tag, + "sigtype"="command" + ) + signal.data["stabalize"] = 1 + signal.data["power"] = 1 + post_signal(signal) + + if("vent_clear") + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.data = list( + "tag" = airpump_tag, + "sigtype"="command" + ) + signal.data["purge"] = 1 + signal.data["power"] = 1 + post_signal(signal) + +/datum/computer/file/embedded_program/simple_vent_controller/process() + return 0 + + +/obj/machinery/embedded_controller/radio/simple_vent_controller + icon = 'icons/obj/airlock_machines.dmi' + icon_state = "airlock_control_standby" + + name = "vent controller" density = FALSE - - frequency = 1229 - power_channel = ENVIRON - - // Setup parameters only - var/airpump_tag - -/obj/machinery/embedded_controller/radio/simple_vent_controller/Initialize(mapload) + + frequency = 1229 + power_channel = ENVIRON + + // Setup parameters only + var/airpump_tag + +/obj/machinery/embedded_controller/radio/simple_vent_controller/Initialize(mapload) . = ..() - if(!mapload) - return - var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new - - new_prog.airpump_tag = airpump_tag - new_prog.master = src - program = new_prog - -/obj/machinery/embedded_controller/radio/simple_vent_controller/update_icon() - if(on && program) - icon_state = "airlock_control_standby" - else - icon_state = "airlock_control_off" - - -/obj/machinery/embedded_controller/radio/simple_vent_controller/return_text() - var/state_options = null - state_options = {"Deactivate Vent
    -Activate Vent / Pump
    -Activate Vent / Clear
    "} - var/output = {"Vent Control Console
    -[state_options]
    "} - - return output + if(!mapload) + return + var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new + + new_prog.airpump_tag = airpump_tag + new_prog.master = src + program = new_prog + +/obj/machinery/embedded_controller/radio/simple_vent_controller/update_icon() + if(on && program) + icon_state = "airlock_control_standby" + else + icon_state = "airlock_control_off" + + +/obj/machinery/embedded_controller/radio/simple_vent_controller/return_text() + var/state_options = null + state_options = {"Deactivate Vent
    +Activate Vent / Pump
    +Activate Vent / Clear
    "} + var/output = {"Vent Control Console
    +[state_options]
    "} + + return output diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm index 3b4503c3c8..7de077c016 100644 --- a/code/game/machinery/gulag_item_reclaimer.dm +++ b/code/game/machinery/gulag_item_reclaimer.dm @@ -67,7 +67,7 @@ var/mob/thismob = i var/list/mob_info = list() mob_info["name"] = thismob.real_name - mob_info["mob"] = "\ref[thismob]" + mob_info["mob"] = "[REF(thismob)]" mobs += list(mob_info) data["mobs"] = mobs diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index f7a4138348..afc463a60e 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -120,8 +120,8 @@ Possible to do for anyone motivated enough: if(temp) dat = temp else - dat = "Request an AI's presence.
    " - dat += "Call another holopad.
    " + dat = "Request an AI's presence.
    " + dat += "Call another holopad.
    " if(LAZYLEN(holo_calls)) dat += "=====================================================
    " @@ -131,7 +131,7 @@ Possible to do for anyone motivated enough: for(var/I in holo_calls) var/datum/holocall/HC = I if(HC.connected_holopad != src) - dat += "Answer call from [get_area(HC.calling_holopad)].
    " + dat += "Answer call from [get_area(HC.calling_holopad)].
    " one_unanswered_call = TRUE else one_answered_call = TRUE @@ -142,7 +142,7 @@ Possible to do for anyone motivated enough: for(var/I in holo_calls) var/datum/holocall/HC = I if(HC.connected_holopad == src) - dat += "Disconnect call from [HC.user].
    " + dat += "Disconnect call from [HC.user].
    " var/datum/browser/popup = new(user, "holopad", name, 300, 130) @@ -166,22 +166,22 @@ Possible to do for anyone motivated enough: if(last_request + 200 < world.time) last_request = world.time temp = "You requested an AI's presence.
    " - temp += "Main Menu" + temp += "Main Menu" var/area/area = get_area(src) for(var/mob/living/silicon/ai/AI in GLOB.silicon_mobs) if(!AI.client) continue - to_chat(AI, "Your presence is requested at \the [area].") + to_chat(AI, "Your presence is requested at \the [area].") else temp = "A request for AI presence was already sent recently.
    " - temp += "Main Menu" + temp += "Main Menu" else if(href_list["Holocall"]) if(outgoing_call) return temp = "You must stand on the holopad to make a call!
    " - temp += "Main Menu" + temp += "Main Menu" if(usr.loc == loc) var/list/callnames = list() for(var/I in holopads) @@ -196,7 +196,7 @@ Possible to do for anyone motivated enough: if(usr.loc == loc) temp = "Dialing...
    " - temp += "Main Menu" + temp += "Main Menu" new /datum/holocall(usr, src, callnames[result]) else if(href_list["connectcall"]) diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index b37be1c4c2..f31a2d2436 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -160,7 +160,7 @@ /obj/machinery/limbgrower/proc/main_win(mob/user) var/dat = "

    Limb Grower Menu:


    " - dat += "Chemical Storage" + dat += "Chemical Storage" dat += materials_printout() dat += "" @@ -168,7 +168,7 @@ if(C=="special" && !emagged) //Only want to show special when console is emagged continue - dat += "" + dat += "" dat += "" //one category per line @@ -176,7 +176,7 @@ return dat /obj/machinery/limbgrower/proc/category_win(mob/user,selected_category) - var/dat = "Return to main menu" + var/dat = "Return to main menu" dat += "

    Browsing [selected_category]:


    " dat += materials_printout() @@ -187,7 +187,7 @@ if(disabled || !can_build(D)) dat += "[D.name]" else - dat += "[D.name]" + dat += "[D.name]" dat += "[get_design_cost(D)]
    " dat += "
    " @@ -195,13 +195,13 @@ /obj/machinery/limbgrower/proc/chemical_win(mob/user) - var/dat = "Return to main menu" + var/dat = "Return to main menu" dat += "

    Browsing Chemical Storage:


    " dat += materials_printout() for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
    " + dat += "Purge
    " dat += "
    " return dat diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 7808e7ed05..aa3bf465f2 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -249,9 +249,9 @@ var/dat = "Magnetic Control Console

    " if(!autolink) dat += {" - Frequency: [frequency]
    - Code: [code]
    - Probe Generators
    + Frequency: [frequency]
    + Code: [code]
    + Probe Generators
    "} if(magnets.len >= 1) @@ -260,11 +260,11 @@ var/i = 0 for(var/obj/machinery/magnetic_module/M in magnets) i++ - dat += "     < \[[i]\] ([M.on ? "On":"Off"]) | Electricity level: - [M.electricity_level] +; Magnetic field: - [M.magnetic_field] +
    " + dat += "     < \[[i]\] ([M.on ? "On":"Off"]) | Electricity level: - [M.electricity_level] +; Magnetic field: - [M.magnetic_field] +
    " - dat += "
    Speed: - [speed] +
    " - dat += "Path: {[path]}
    " - dat += "Moving: [moving ? "Enabled":"Disabled"]" + dat += "
    Speed: - [speed] +
    " + dat += "Path: {[path]}
    " + dat += "Moving: [moving ? "Enabled":"Disabled"]" user << browse(dat, "window=magnet;size=400x500") diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index c79630a58c..e62d25e5fa 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -1,208 +1,208 @@ -// Navigation beacon for AI robots -// No longer exists on the radio controller, it is managed by a global list. - -/obj/machinery/navbeacon - - icon = 'icons/obj/objects.dmi' - icon_state = "navbeacon0-f" - name = "navigation beacon" - desc = "A radio beacon used for bot navigation." - level = 1 // underfloor - layer = LOW_OBJ_LAYER +// Navigation beacon for AI robots +// No longer exists on the radio controller, it is managed by a global list. + +/obj/machinery/navbeacon + + icon = 'icons/obj/objects.dmi' + icon_state = "navbeacon0-f" + name = "navigation beacon" + desc = "A radio beacon used for bot navigation." + level = 1 // underfloor + layer = LOW_OBJ_LAYER anchored = TRUE - max_integrity = 500 - armor = list(melee = 70, bullet = 70, laser = 70, energy = 70, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80) - + max_integrity = 500 + armor = list(melee = 70, bullet = 70, laser = 70, energy = 70, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80) + var/open = FALSE // true if cover is open var/locked = TRUE // true if controls are locked - var/freq = 1445 // radio frequency - var/location = "" // location response text - var/list/codes // assoc. list of transponder codes - var/codes_txt = "" // codes as set on map: "tag1;tag2" or "tag1=value;tag2=value" - + var/freq = 1445 // radio frequency + var/location = "" // location response text + var/list/codes // assoc. list of transponder codes + var/codes_txt = "" // codes as set on map: "tag1;tag2" or "tag1=value;tag2=value" + req_access = list(ACCESS_ENGINE, ACCESS_ROBOTICS) - + /obj/machinery/navbeacon/Initialize() . = ..() - - set_codes() - - var/turf/T = loc - hide(T.intact) - if(codes["patrol"]) - if(!GLOB.navbeacons["[z]"]) - GLOB.navbeacons["[z]"] = list() - GLOB.navbeacons["[z]"] += src //Register with the patrol list! - if(codes["delivery"]) - GLOB.deliverybeacons += src - GLOB.deliverybeacontags += location - -/obj/machinery/navbeacon/Destroy() - GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one. - GLOB.deliverybeacons -= src - return ..() - -// set the transponder codes assoc list from codes_txt -/obj/machinery/navbeacon/proc/set_codes() - if(!codes_txt) - return - - codes = new() - - var/list/entries = splittext(codes_txt, ";") // entries are separated by semicolons - - for(var/e in entries) - var/index = findtext(e, "=") // format is "key=value" - if(index) - var/key = copytext(e, 1, index) - var/val = copytext(e, index+1) - codes[key] = val - else - codes[e] = "1" - - -// called when turf state changes -// hide the object if turf is intact -/obj/machinery/navbeacon/hide(intact) - invisibility = intact ? INVISIBILITY_MAXIMUM : 0 - updateicon() - -// update the icon_state -/obj/machinery/navbeacon/proc/updateicon() - var/state="navbeacon[open]" - - if(invisibility) - icon_state = "[state]-f" // if invisible, set icon to faded version - // in case revealed by T-scanner - else - icon_state = "[state]" - -/obj/machinery/navbeacon/attackby(obj/item/I, mob/user, params) - var/turf/T = loc - if(T.intact) - return // prevent intraction when T-scanner revealed - - if(istype(I, /obj/item/screwdriver)) - open = !open - - user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.") - - updateicon() - - else if (istype(I, /obj/item/card/id)||istype(I, /obj/item/device/pda)) - if(open) - if (src.allowed(user)) - src.locked = !src.locked - to_chat(user, "Controls are now [src.locked ? "locked" : "unlocked"].") - else - to_chat(user, "Access denied.") - updateDialog() - else - to_chat(user, "You must open the cover first!") - else - return ..() - -/obj/machinery/navbeacon/attack_ai(mob/user) - interact(user, 1) - -/obj/machinery/navbeacon/attack_paw() - return - -/obj/machinery/navbeacon/attack_hand(mob/user) - interact(user, 0) - -/obj/machinery/navbeacon/interact(mob/user, ai = 0) - var/turf/T = loc - if(T.intact) - return // prevent intraction when T-scanner revealed - - if(!open && !ai) // can't alter controls if not open, unless you're an AI - to_chat(user, "The beacon's control cover is closed!") - return - - - var/t - - if(locked && !ai) - t = {"Navigation Beacon

    -(swipe card to unlock controls)
    -Location: [location ? location : "(none)"]
    -Transponder Codes:
      "} - - for(var/key in codes) - t += "
    • [key] ... [codes[key]]" - t+= "
        " - - else - - t = {"Navigation Beacon

        -(swipe card to lock controls)
        - -
        -Location: [location ? location : "None"]
        -Transponder Codes:
          "} - - for(var/key in codes) - t += "
        • [key] ... [codes[key]]" - t += " Edit" - t += " Delete
          " - t += " Add New
          " - t+= "
            " - - var/datum/browser/popup = new(user, "navbeacon", "Navigation Beacon", 300, 400) - popup.set_content(t) - popup.open() - return - -/obj/machinery/navbeacon/Topic(href, href_list) - if(..()) - return - if(open && !locked) - usr.set_machine(src) - - if(href_list["locedit"]) - var/newloc = copytext(sanitize(input("Enter New Location", "Navigation Beacon", location) as text|null),1,MAX_MESSAGE_LEN) - if(newloc) - location = newloc - updateDialog() - - else if(href_list["edit"]) - var/codekey = href_list["code"] - - var/newkey = stripped_input(usr, "Enter Transponder Code Key", "Navigation Beacon", codekey) - if(!newkey) - return - - var/codeval = codes[codekey] - var/newval = stripped_input(usr, "Enter Transponder Code Value", "Navigation Beacon", codeval) - if(!newval) - newval = codekey - return - - codes.Remove(codekey) - codes[newkey] = newval - - updateDialog() - - else if(href_list["delete"]) - var/codekey = href_list["code"] - codes.Remove(codekey) - updateDialog() - - else if(href_list["add"]) - - var/newkey = stripped_input(usr, "Enter New Transponder Code Key", "Navigation Beacon") - if(!newkey) - return - - var/newval = stripped_input(usr, "Enter New Transponder Code Value", "Navigation Beacon") - if(!newval) - newval = "1" - return - - if(!codes) - codes = new() - - codes[newkey] = newval - - updateDialog() \ No newline at end of file + + set_codes() + + var/turf/T = loc + hide(T.intact) + if(codes["patrol"]) + if(!GLOB.navbeacons["[z]"]) + GLOB.navbeacons["[z]"] = list() + GLOB.navbeacons["[z]"] += src //Register with the patrol list! + if(codes["delivery"]) + GLOB.deliverybeacons += src + GLOB.deliverybeacontags += location + +/obj/machinery/navbeacon/Destroy() + GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one. + GLOB.deliverybeacons -= src + return ..() + +// set the transponder codes assoc list from codes_txt +/obj/machinery/navbeacon/proc/set_codes() + if(!codes_txt) + return + + codes = new() + + var/list/entries = splittext(codes_txt, ";") // entries are separated by semicolons + + for(var/e in entries) + var/index = findtext(e, "=") // format is "key=value" + if(index) + var/key = copytext(e, 1, index) + var/val = copytext(e, index+1) + codes[key] = val + else + codes[e] = "1" + + +// called when turf state changes +// hide the object if turf is intact +/obj/machinery/navbeacon/hide(intact) + invisibility = intact ? INVISIBILITY_MAXIMUM : 0 + updateicon() + +// update the icon_state +/obj/machinery/navbeacon/proc/updateicon() + var/state="navbeacon[open]" + + if(invisibility) + icon_state = "[state]-f" // if invisible, set icon to faded version + // in case revealed by T-scanner + else + icon_state = "[state]" + +/obj/machinery/navbeacon/attackby(obj/item/I, mob/user, params) + var/turf/T = loc + if(T.intact) + return // prevent intraction when T-scanner revealed + + if(istype(I, /obj/item/screwdriver)) + open = !open + + user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.") + + updateicon() + + else if (istype(I, /obj/item/card/id)||istype(I, /obj/item/device/pda)) + if(open) + if (src.allowed(user)) + src.locked = !src.locked + to_chat(user, "Controls are now [src.locked ? "locked" : "unlocked"].") + else + to_chat(user, "Access denied.") + updateDialog() + else + to_chat(user, "You must open the cover first!") + else + return ..() + +/obj/machinery/navbeacon/attack_ai(mob/user) + interact(user, 1) + +/obj/machinery/navbeacon/attack_paw() + return + +/obj/machinery/navbeacon/attack_hand(mob/user) + interact(user, 0) + +/obj/machinery/navbeacon/interact(mob/user, ai = 0) + var/turf/T = loc + if(T.intact) + return // prevent intraction when T-scanner revealed + + if(!open && !ai) // can't alter controls if not open, unless you're an AI + to_chat(user, "The beacon's control cover is closed!") + return + + + var/t + + if(locked && !ai) + t = {"Navigation Beacon

            +(swipe card to unlock controls)
            +Location: [location ? location : "(none)"]
            +Transponder Codes:
              "} + + for(var/key in codes) + t += "
            • [key] ... [codes[key]]" + t+= "
                " + + else + + t = {"Navigation Beacon

                +(swipe card to lock controls)
                + +
                +Location: [location ? location : "None"]
                +Transponder Codes:
                  "} + + for(var/key in codes) + t += "
                • [key] ... [codes[key]]" + t += " Edit" + t += " Delete
                  " + t += " Add New
                  " + t+= "
                    " + + var/datum/browser/popup = new(user, "navbeacon", "Navigation Beacon", 300, 400) + popup.set_content(t) + popup.open() + return + +/obj/machinery/navbeacon/Topic(href, href_list) + if(..()) + return + if(open && !locked) + usr.set_machine(src) + + if(href_list["locedit"]) + var/newloc = copytext(sanitize(input("Enter New Location", "Navigation Beacon", location) as text|null),1,MAX_MESSAGE_LEN) + if(newloc) + location = newloc + updateDialog() + + else if(href_list["edit"]) + var/codekey = href_list["code"] + + var/newkey = stripped_input(usr, "Enter Transponder Code Key", "Navigation Beacon", codekey) + if(!newkey) + return + + var/codeval = codes[codekey] + var/newval = stripped_input(usr, "Enter Transponder Code Value", "Navigation Beacon", codeval) + if(!newval) + newval = codekey + return + + codes.Remove(codekey) + codes[newkey] = newval + + updateDialog() + + else if(href_list["delete"]) + var/codekey = href_list["code"] + codes.Remove(codekey) + updateDialog() + + else if(href_list["add"]) + + var/newkey = stripped_input(usr, "Enter New Transponder Code Key", "Navigation Beacon") + if(!newkey) + return + + var/newval = stripped_input(usr, "Enter New Transponder Code Value", "Navigation Beacon") + if(!newval) + newval = "1" + return + + if(!codes) + codes = new() + + codes[newkey] = newval + + updateDialog() diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 863eb3286b..577e7d23eb 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -267,21 +267,21 @@ GLOBAL_LIST_EMPTY(allCasters) dat += "Welcome to Newscasting Unit #[unit_no].
                    Interface & News networks Operational." dat += "
                    Property of Nanotrasen Inc" if(GLOB.news_network.wanted_issue.active) - dat+= "
                    Read Wanted Issue" - dat+= "

                    Create Feed Channel" - dat+= "
                    View Feed Channels" - dat+= "
                    Submit new Feed story" - dat+= "
                    Print newspaper" - dat+= "
                    Re-scan User" - dat+= "

                    Exit" + dat+= "
                    Read Wanted Issue" + dat+= "

                    Create Feed Channel" + dat+= "
                    View Feed Channels" + dat+= "
                    Submit new Feed story" + dat+= "
                    Print newspaper" + dat+= "
                    Re-scan User" + dat+= "

                    Exit" if(securityCaster) var/wanted_already = 0 if(GLOB.news_network.wanted_issue.active) wanted_already = 1 dat+="
                    Feed Security functions:
                    " - dat+="
                    [(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue" - dat+="
                    Censor Feed Stories" - dat+="
                    Mark Feed Channel with Nanotrasen D-Notice" + dat+="
                    [(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue" + dat+="
                    Censor Feed Stories" + dat+="
                    Mark Feed Channel with Nanotrasen D-Notice" dat+="

                    The newscaster recognises you as: [scanned_user]" if(1) dat+= "Station Feed Channels
                    " @@ -290,31 +290,31 @@ GLOBAL_LIST_EMPTY(allCasters) else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) if(CHANNEL.is_admin_channel) - dat+="[CHANNEL.channel_name]
                    " + dat+="[CHANNEL.channel_name]
                    " else - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
                    " - dat+="

                    Refresh" - dat+="
                    Back" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
                    " + dat+="

                    Refresh" + dat+="
                    Back" if(2) dat+="Creating new Feed Channel..." - dat+="
                    Channel Name: [channel_name]
                    " + dat+="
                    Channel Name: [channel_name]
                    " dat+="Channel Author: [scanned_user]
                    " - dat+="Will Accept Public Feeds: [(c_locked) ? ("NO") : ("YES")]

                    " - dat+="
                    Submit

                    Cancel
                    " + dat+="Will Accept Public Feeds: [(c_locked) ? ("NO") : ("YES")]

                    " + dat+="
                    Submit

                    Cancel
                    " if(3) dat+="Creating new Feed Message..." - dat+="
                    Receiving Channel: [channel_name]
                    " + dat+="
                    Receiving Channel: [channel_name]
                    " dat+="Message Author: [scanned_user]
                    " - dat+="Message Body:
                    [parsemarkdown(msg, user)]
                    " - dat+="Attach Photo: [(photo ? "Photo Attached" : "No Photo")]
                    " - dat+="Comments [allow_comments ? "Enabled" : "Disabled"]
                    " - dat+="
                    Submit

                    Cancel
                    " + dat+="Message Body:
                    [parsemarkdown(msg, user)]
                    " + dat+="Attach Photo: [(photo ? "Photo Attached" : "No Photo")]
                    " + dat+="Comments [allow_comments ? "Enabled" : "Disabled"]
                    " + dat+="
                    Submit

                    Cancel
                    " if(4) dat+="Feed story successfully submitted to [channel_name].

                    " - dat+="
                    Return
                    " + dat+="
                    Return
                    " if(5) dat+="Feed Channel [channel_name] created successfully.

                    " - dat+="
                    Return
                    " + dat+="
                    Return
                    " if(6) dat+="ERROR: Could not submit Feed story to Network.

                    " if(channel_name=="") @@ -323,7 +323,7 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="Channel author unverified.
                    " if(msg == "" || msg == "\[REDACTED\]") dat+="Invalid message body.
                    " - dat+="
                    Return
                    " + dat+="
                    Return
                    " if(7) dat+="ERROR: Could not submit Feed Channel to Network.

                    " var/list/existing_authors = list() @@ -345,7 +345,7 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="Channel name already in use.
                    " if(scanned_user=="Unknown") dat+="Channel author unverified.
                    " - dat+="
                    Return
                    " + dat+="
                    Return
                    " if(8) var/total_num=length(GLOB.news_network.network_channels) var/active_num=total_num @@ -357,8 +357,8 @@ GLOBAL_LIST_EMPTY(allCasters) active_num-- dat+="Network currently serves a total of [total_num] Feed channels, [active_num] of which are active, and a total of [message_num] Feed Stories." dat+="

                    Liquid Paper remaining: [(paper_remaining) *100 ] cm^3" - dat+="

                    Print Paper" - dat+="
                    Cancel" + dat+="

                    Print Paper" + dat+="
                    Cancel" if(9) dat+="[viewing_channel.channel_name]: \[created by: [viewing_channel.returnAuthor(-1)]\]
                    " if(viewing_channel.censored) @@ -385,9 +385,9 @@ GLOBAL_LIST_EMPTY(allCasters) if(MESSAGE.locked) dat+="Comments locked
                    " else - dat+="Comment
                    " - dat+="

                    Refresh" - dat+="
                    Back" + dat+="Comment
                    " + dat+="

                    Refresh" + dat+="
                    Back" if(10) dat+="Nanotrasen Feed Censorship Tool
                    " dat+="NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.
                    " @@ -397,8 +397,8 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="No feed channels found active...
                    " else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
                    " - dat+="
                    Cancel" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
                    " + dat+="
                    Cancel" if(11) dat+="Nanotrasen D-Notice Handler
                    " dat+="A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's" @@ -408,24 +408,24 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="No feed channels found active...
                    " else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
                    " - dat+="
                    Back" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
                    " + dat+="
                    Back" if(12) dat+="[viewing_channel.channel_name]: \[ created by: [viewing_channel.returnAuthor(-1)] \]
                    " - dat+="[(viewing_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]
                    " + dat+="[(viewing_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]
                    " if(isemptylist(viewing_channel.messages)) dat+="No feed messages found in channel...
                    " else for(var/datum/newscaster/feed_message/MESSAGE in viewing_channel.messages) dat+="-[MESSAGE.returnBody(-1)]
                    \[Story by [MESSAGE.returnAuthor(-1)]\]
                    " - dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
                    " - dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: [MESSAGE.locked ? "Unlock" : "Lock"]
                    " + dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
                    " + dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: [MESSAGE.locked ? "Unlock" : "Lock"]
                    " for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments) - dat+="[comment.body] X
                    [comment.author] [comment.time_stamp]
                    " - dat+="
                    Back" + dat+="[comment.body] X
                    [comment.author] [comment.time_stamp]
                    " + dat+="
                    Back" if(13) dat+="[viewing_channel.channel_name]: \[ created by: [viewing_channel.returnAuthor(-1)] \]
                    " - dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
                    " + dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
                    " if(viewing_channel.censored) dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
                    " dat+="No further feed story additions are allowed while the D-Notice is in effect.


                    " @@ -435,7 +435,7 @@ GLOBAL_LIST_EMPTY(allCasters) else for(var/datum/newscaster/feed_message/MESSAGE in viewing_channel.messages) dat+="-[MESSAGE.returnBody(-1)]
                    \[Story by [MESSAGE.returnAuthor(-1)]\]
                    " - dat+="
                    Back" + dat+="
                    Back" if(14) dat+="Wanted Issue Handler:" var/wanted_already = 0 @@ -446,20 +446,20 @@ GLOBAL_LIST_EMPTY(allCasters) if(wanted_already) dat+="
                    A wanted issue is already in Feed Circulation. You can edit or cancel it below.
                    " dat+="
                    " - dat+="Criminal Name: [channel_name]
                    " - dat+="Description: [msg]
                    " - dat+="Attach Photo: [(photo ? "Photo Attached" : "No Photo")]
                    " + dat+="Criminal Name: [channel_name]
                    " + dat+="Description: [msg]
                    " + dat+="Attach Photo: [(photo ? "Photo Attached" : "No Photo")]
                    " if(wanted_already) dat+="Wanted Issue created by:[GLOB.news_network.wanted_issue.scannedUser]
                    " else dat+="Wanted Issue will be created under prosecutor:[scanned_user]
                    " - dat+="
                    [(wanted_already) ? ("Edit Issue") : ("Submit")]" + dat+="
                    [(wanted_already) ? ("Edit Issue") : ("Submit")]" if(wanted_already) - dat+="
                    Take down Issue" - dat+="
                    Cancel" + dat+="
                    Take down Issue" + dat+="
                    Cancel" if(15) dat+="Wanted issue for [channel_name] is now in Network Circulation.

                    " - dat+="
                    Return
                    " + dat+="
                    Return
                    " if(16) dat+="ERROR: Wanted Issue rejected by Network.

                    " if(channel_name=="" || channel_name == "\[REDACTED\]") @@ -468,10 +468,10 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="Issue author unverified.
                    " if(msg == "" || msg == "\[REDACTED\]") dat+="Invalid description.
                    " - dat+="
                    Return
                    " + dat+="
                    Return
                    " if(17) dat+="Wanted Issue successfully deleted from Circulation
                    " - dat+="
                    Return
                    " + dat+="
                    Return
                    " if(18) if(GLOB.news_network.wanted_issue.active) dat+="-- STATIONWIDE WANTED ISSUE --
                    \[Submitted by: [GLOB.news_network.wanted_issue.scannedUser]\]
                    " @@ -485,16 +485,16 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="None" else dat+="No current wanted issue found.

                    " - dat+="

                    Back
                    " + dat+="

                    Back
                    " if(19) dat+="Wanted issue for [channel_name] successfully edited.

                    " - dat+="
                    Return
                    " + dat+="
                    Return
                    " if(20) dat+="Printing successful. Please receive your newspaper from the bottom of the machine.

                    " - dat+="Return" + dat+="Return" if(21) dat+="Unable to print newspaper. Insufficient paper. Please notify maintenance personnel to refill machine storage.

                    " - dat+="Return" + dat+="Return" var/datum/browser/popup = new(human_or_robot_user, "newscaster_main", "Newscaster Unit #[unit_no]", 400, 600) popup.set_content(dat) popup.set_title_image(human_or_robot_user.browse_rsc_icon(icon, icon_state)) @@ -933,7 +933,7 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="
                  " if(scribble_page==curr_page) dat+="
                  There is a small scribble near the end of this page... It reads: \"[scribble]\"" - dat+= "
                  " + dat+= "
                  " if(1) // X channel pages inbetween. for(var/datum/newscaster/feed_channel/NP in news_content) pages++ @@ -962,7 +962,7 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="
                " if(scribble_page==curr_page) dat+="
                There is a small scribble near the end of this page... It reads: \"[scribble]\"" - dat+= "

                " + dat+= "

                " if(2) //Last page for(var/datum/newscaster/feed_channel/NP in news_content) pages++ @@ -980,7 +980,7 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="Apart from some uninteresting classified ads, there's nothing on this page..." if(scribble_page==curr_page) dat+="
                There is a small scribble near the end of this page... It reads: \"[scribble]\"" - dat+= "
                " + dat+= "
                " dat+="

                [curr_page+1]
                " human_user << browse(dat, "window=newspaper_main;size=300x400") onclose(human_user, "newspaper_main") diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index eb79ab72f3..28c4b8c0aa 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -69,9 +69,9 @@ Buildable meters return ..() /obj/item/pipe/proc/setPipingLayer(new_layer = PIPING_LAYER_DEFAULT) - var/obj/machinery/atmospherics/fakeA = get_pipe_cache(pipe_type) + var/obj/machinery/atmospherics/fakeA = pipe_type - if(fakeA.pipe_flags & PIPING_ALL_LAYER) + if(initial(fakeA.pipe_flags) & PIPING_ALL_LAYER) new_layer = PIPING_LAYER_DEFAULT piping_layer = new_layer @@ -80,9 +80,9 @@ Buildable meters layer = initial(layer) + ((piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE) /obj/item/pipe/proc/update() - var/obj/machinery/atmospherics/A = get_pipe_cache(pipe_type) - name = "[A.name] fitting" - icon_state = A.pipe_state + var/obj/machinery/atmospherics/fakeA = pipe_type + name = "[initial(fakeA.name)] fitting" + icon_state = initial(fakeA.pipe_state) // rotate the pipe item clockwise @@ -147,19 +147,6 @@ Buildable meters /obj/item/pipe/attack_self(mob/user) return rotate() -/obj/item/pipe/proc/get_pipe_cache(type, direction) - var/list/obj/machinery/atmospherics/check_cache = SSair.pipe_construction_generation_cache - if(!islist(check_cache)) - check_cache = list() - if(!check_cache[type]) - check_cache[type] = list() - if(!check_cache[type]["[direction]"]) - var/obj/machinery/atmospherics/A = new type(null, FALSE, direction) - A.name = "\[CACHE\] [A.name]" - check_cache[type]["[direction]"] = A - - return check_cache[type]["[direction]"] - /obj/item/pipe/attackby(obj/item/W, mob/user, params) if (!istype(W, /obj/item/wrench)) return ..() @@ -169,15 +156,15 @@ Buildable meters fixdir() - var/obj/machinery/atmospherics/fakeA = get_pipe_cache(pipe_type, dir) - + var/obj/machinery/atmospherics/fakeA = pipe_type + var/flags = initial(fakeA.pipe_flags) for(var/obj/machinery/atmospherics/M in loc) - if((M.pipe_flags & fakeA.pipe_flags & PIPING_ONE_PER_TURF)) //Only one dense/requires density object per tile, eg connectors/cryo/heater/coolers. + if((M.pipe_flags & flags & PIPING_ONE_PER_TURF)) //Only one dense/requires density object per tile, eg connectors/cryo/heater/coolers. to_chat(user, "Something is hogging the tile!") return TRUE - if((M.piping_layer != piping_layer) && !((M.pipe_flags | fakeA.pipe_flags) & PIPING_ALL_LAYER)) //don't continue if either pipe goes across all layers + if((M.piping_layer != piping_layer) && !((M.pipe_flags | flags) & PIPING_ALL_LAYER)) //don't continue if either pipe goes across all layers continue - if(M.GetInitDirections() & fakeA.GetInitDirections()) // matches at least one direction on either type of pipe + if(M.GetInitDirections() & SSair.get_init_dirs(pipe_type, dir)) // matches at least one direction on either type of pipe to_chat(user, "There is already a pipe at that location!") return TRUE // no conflicts found diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index fda66624b7..52aa82f82a 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -15,32 +15,32 @@ if(..()) return 1 var/dat = {" -PIPING LAYER: --[piping_layer]++
                +PIPING LAYER: --[piping_layer]++
                Pipes:
                -Pipe
                -Bent Pipe
                -Manifold
                -Layer Manifold
                -4-Way Manifold
                -Manual Valve
                -Digital Valve
                +Pipe
                +Bent Pipe
                +Manifold
                +Layer Manifold
                +4-Way Manifold
                +Manual Valve
                +Digital Valve
                Devices:
                -Connector
                -Vent
                -Gas Pump
                -Passive Gate
                -Volume Pump
                -Scrubber
                -Meter
                -Gas Filter
                -Gas Mixer
                +Connector
                +Vent
                +Gas Pump
                +Passive Gate
                +Volume Pump
                +Scrubber
                +Meter
                +Gas Filter
                +Gas Mixer
                Heat exchange:
                -Pipe
                -Bent Pipe
                -Manifold
                -4-Way Manifold
                -Junction
                -Heat Exchanger
                +Pipe
                +Bent Pipe
                +Manifold
                +4-Way Manifold
                +Junction
                +Heat Exchanger
                "} @@ -148,15 +148,15 @@ Nah return 1 var/dat = {"Disposal Pipes

                -Pipe
                -Bent Pipe
                -Junction
                -Y-Junction
                -Trunk
                -Bin
                -Outlet
                -Chute
                -Sort Junction
                +Pipe
                +Bent Pipe
                +Junction
                +Y-Junction
                +Trunk
                +Bin
                +Outlet
                +Chute
                +Sort Junction
                "} user << browse("[src][dat]", "window=pipedispenser") @@ -198,16 +198,16 @@ Nah return 1 var/dat = {"Transit Tubes:
                -Straight Tube
                -Straight Tube with Crossing
                -Curved Tube
                -Diagonal Tube
                -Diagonal Tube with Crossing
                -Junction
                +Straight Tube
                +Straight Tube with Crossing
                +Curved Tube
                +Diagonal Tube
                +Diagonal Tube with Crossing
                +Junction
                Station Equipment:
                -Through Tube Station
                -Terminus Tube Station
                -Transit Tube Pod
                +Through Tube Station
                +Terminus Tube Station
                +Transit Tube Pod
                "} user << browse("[src][dat]", "window=pipedispenser") diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 01f92e41d4..9aa0a8f4b0 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -16,7 +16,7 @@ use_power = IDLE_POWER_USE //this turret uses and requires power idle_power_usage = 50 //when inactive, this turret takes up constant 50 Equipment power active_power_usage = 300 //when active, this turret takes up constant 300 Equipment power - req_access = list(ACCESS_SECURITY) + req_access = list(ACCESS_SEC_DOORS) power_channel = EQUIP //drains power from the EQUIPMENT channel var/base_icon_state = "standard" @@ -166,15 +166,15 @@ /obj/machinery/porta_turret/interact(mob/user) var/dat - dat += "Status: [on ? "On" : "Off"]
                " + dat += "Status: [on ? "On" : "Off"]
                " dat += "Behaviour controls are [locked ? "locked" : "unlocked"]
                " if(!locked) - dat += "Check for Weapon Authorization: [auth_weapons ? "Yes" : "No"]
                " - dat += "Check Security Records: [check_records ? "Yes" : "No"]
                " - dat += "Neutralize Identified Criminals: [criminals ? "Yes" : "No"]
                " - dat += "Neutralize All Non-Security and Non-Command Personnel: [stun_all ? "Yes" : "No"]
                " - dat += "Neutralize All Unidentified Life Signs: [check_anomalies ? "Yes" : "No"]
                " + dat += "Check for Weapon Authorization: [auth_weapons ? "Yes" : "No"]
                " + dat += "Check Security Records: [check_records ? "Yes" : "No"]
                " + dat += "Neutralize Identified Criminals: [criminals ? "Yes" : "No"]
                " + dat += "Neutralize All Non-Security and Non-Command Personnel: [stun_all ? "Yes" : "No"]
                " + dat += "Neutralize All Unidentified Life Signs: [check_anomalies ? "Yes" : "No"]
                " var/datum/browser/popup = new(user, "autosec", "Automatic Portable Turret Installation", 300, 300) popup.set_content(dat) @@ -747,8 +747,8 @@ else if(!issilicon(user) && !IsAdminGhost(user)) t += "
                Swipe ID card to lock interface
                " - t += "Turrets [enabled?"activated":"deactivated"] - [enabled?"Disable":"Enable"]?
                " - t += "Currently set for [lethal?"lethal":"stun repeatedly"] - Change to [lethal?"Stun repeatedly":"Lethal"]?
                " + t += "Turrets [enabled?"activated":"deactivated"] - [enabled?"Disable":"Enable"]?
                " + t += "Currently set for [lethal?"lethal":"stun repeatedly"] - Change to [lethal?"Stun repeatedly":"Lethal"]?
                " var/datum/browser/popup = new(user, "turretid", "Turret Control Panel ([area.name])") popup.set_content(t) @@ -901,7 +901,7 @@ if(team_color == "red" && istype(H.wear_suit, /obj/item/clothing/suit/bluetag)) return - var/dat = "Status: [on ? "On" : "Off"]" + var/dat = "Status: [on ? "On" : "Off"]" var/datum/browser/popup = new(user, "autosec", "Automatic Portable Turret Installation", 300, 300) popup.set_content(dat) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 2f6fe2bdd0..f0e6eb2df0 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -145,13 +145,13 @@ GLOBAL_LIST_EMPTY(allConsoles) if (dpt != department) dat += "
    " dat += "" - dat += "" dat += "" dat += "
    [C][C]
    [dpt]Normal High" + dat += "Normal High" if(hackState) - dat += "EXTREME" + dat += "EXTREME" dat += "
    " - dat += "
    << Back
    " + dat += "
    << Back
    " if(2) //req. supplies dat += "Which department do you need supplies from?

    " @@ -160,13 +160,13 @@ GLOBAL_LIST_EMPTY(allConsoles) if (dpt != department) dat += "" dat += "[dpt]" - dat += "Normal High" + dat += "Normal High" if(hackState) - dat += "EXTREME" + dat += "EXTREME" dat += "" dat += "" dat += "" - dat += "
    << Back
    " + dat += "
    << Back
    " if(3) //relay information dat += "Which department would you like to send information to?

    " @@ -175,21 +175,21 @@ GLOBAL_LIST_EMPTY(allConsoles) if (dpt != department) dat += "" dat += "[dpt]" - dat += "Normal High" + dat += "Normal High" if(hackState) - dat += "EXTREME" + dat += "EXTREME" dat += "" dat += "" dat += "" - dat += "
    << Back
    " + dat += "
    << Back
    " if(6) //sent successfully dat += "Message sent.

    " - dat += "Continue
    " + dat += "Continue
    " if(7) //unsuccessful; not sent dat += "An error occurred.

    " - dat += "Continue
    " + dat += "Continue
    " if(8) //view messages for (var/obj/machinery/requests_console/Console in GLOB.allConsoles) @@ -203,7 +203,7 @@ GLOBAL_LIST_EMPTY(allConsoles) for(var/msg in messages) // This puts more recent messages at the *top*, where they belong. messageComposite = "
    [msg]
    " + messageComposite dat += messageComposite - dat += "
    << Back to Main Menu
    " + dat += "
    << Back to Main Menu
    " if(9) //authentication before sending dat += "Message Authentication

    " @@ -211,8 +211,8 @@ GLOBAL_LIST_EMPTY(allConsoles) dat += "
    You may authenticate your message now by scanning your ID or your stamp

    " dat += "Validated by: [msgVerified ? msgVerified : "Not Validated"]
    " dat += "Stamped by: [msgStamped ? msgStamped : "Not Stamped"]

    " - dat += "Send Message
    " - dat += "
    << Discard Message
    " + dat += "Send Message
    " + dat += "
    << Discard Message
    " if(10) //send announcement dat += "

    Station-wide Announcement

    " @@ -221,12 +221,12 @@ GLOBAL_LIST_EMPTY(allConsoles) else dat += "
    Swipe your card to authenticate yourself

    " dat += "Message: [message ? message : "No Message"]
    " - dat += "[message ? "Edit" : "Write"] Message

    " + dat += "[message ? "Edit" : "Write"] Message

    " if ((announceAuth || IsAdminGhost(user)) && message) - dat += "Announce Message
    " + dat += "Announce Message
    " else dat += "Announce Message
    " - dat += "
    << Back
    " + dat += "
    << Back
    " else //main menu screen = 0 @@ -237,25 +237,25 @@ GLOBAL_LIST_EMPTY(allConsoles) dat += "
    There are new PRIORITY messages

    " if (newmessagepriority == 3) dat += "
    There are new EXTREME PRIORITY messages

    " - dat += "View Messages

    " + dat += "View Messages

    " - dat += "Request Assistance
    " - dat += "Request Supplies
    " - dat += "Relay Anonymous Information

    " + dat += "Request Assistance
    " + dat += "Request Supplies
    " + dat += "Relay Anonymous Information

    " if(!emergency) - dat += "Emergency: Security
    " - dat += "Emergency: Engineering
    " - dat += "Emergency: Medical

    " + dat += "Emergency: Security
    " + dat += "Emergency: Engineering
    " + dat += "Emergency: Medical

    " else dat += "[emergency] has been dispatched to this location.

    " if(announcementConsole) - dat += "Send Station-wide Announcement

    " + dat += "Send Station-wide Announcement

    " if (silent) - dat += "Speaker OFF" + dat += "Speaker OFF" else - dat += "Speaker ON" + dat += "Speaker ON" var/datum/browser/popup = new(user, "req_console", "[department] Requests Console", 450, 440) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) @@ -454,7 +454,7 @@ GLOBAL_LIST_EMPTY(allConsoles) var/linkedsender if(istype(source, /obj/machinery/requests_console)) var/obj/machinery/requests_console/sender = source - linkedsender = "[sender.department]" + linkedsender = "[sender.department]" else capitalize(source) linkedsender = source diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 20fd729304..606f64c7f3 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -58,13 +58,13 @@ Please wait until completion...
    dat = {" Metal Amount: [min(150000, src.metal_amount)] cm3 (MAX: 150,000)


    -Left Arm (25,000 cc metal.)
    -
    Right Arm (25,000 cc metal.)
    -
    Left Leg (25,000 cc metal.)
    -
    Right Leg (25,000 cc metal).
    -
    Chest (50,000 cc metal).
    -
    Head (50,000 cc metal).
    -
    Robot Frame (75,000 cc metal).
    +
    Left Arm (25,000 cc metal.)
    +
    Right Arm (25,000 cc metal.)
    +
    Left Leg (25,000 cc metal.)
    +
    Right Leg (25,000 cc metal).
    +
    Chest (50,000 cc metal).
    +
    Head (50,000 cc metal).
    +
    Robot Frame (75,000 cc metal).
    "} user << browse("Robotic Fabricator Control Panel[dat]", "window=robot_fabricator") diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index a9162b85f8..a538e4ec0c 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -134,11 +134,11 @@ Credit Remaining: [balance]
    [plays] players have tried their luck today, and [jackpots] have won a jackpot!


    -
    Play!
    + Play!

    [reeltext]
    - Refund balance
    "} + Refund balance
    "} var/datum/browser/popup = new(user, "slotmachine", "Slot Machine") popup.set_content(dat) diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm index 590c8d03a5..93f9d2b03a 100644 --- a/code/game/machinery/telecomms/computers/logbrowser.dm +++ b/code/game/machinery/telecomms/computers/logbrowser.dm @@ -30,23 +30,23 @@ if(0) dat += "
    [temp]
    " - dat += "
    Current Network: [network]
    " + dat += "
    Current Network: [network]
    " if(servers.len) dat += "
    Detected Telecommunication Servers:" - dat += "
    \[Flush Buffer\]" + dat += "
    \[Flush Buffer\]" else - dat += "
    No servers detected. Scan for servers: \[Scan\]" + dat += "
    No servers detected. Scan for servers: \[Scan\]" // --- Viewing Server --- if(1) dat += "
    [temp]
    " - dat += "
    \[Main Menu\] \[Refresh\]
    " + dat += "
    \[Main Menu\] \[Refresh\]
    " dat += "
    Current Network: [network]" dat += "
    Selected Server: [SelectedServer.id]" @@ -65,7 +65,7 @@ // If the log is a speech file if(C.input_type == "Speech File") - dat += "
  • [C.name] \[X\]
    " + dat += "
  • [C.name] \[X\]
    " // -- Determine race of orator -- @@ -128,7 +128,7 @@ else if(C.input_type == "Execution Error") - dat += "
  • [C.name] \[X\]
    " + dat += "
  • [C.name] \[X\]
    " dat += "Output: \"[C.parameters["message"]]\"
    " dat += "

  • " diff --git a/code/game/machinery/telecomms/computers/telemonitor.dm b/code/game/machinery/telecomms/computers/telemonitor.dm index cb3ae78e72..c5c53888fc 100644 --- a/code/game/machinery/telecomms/computers/telemonitor.dm +++ b/code/game/machinery/telecomms/computers/telemonitor.dm @@ -32,28 +32,28 @@ if(0) dat += "
    [temp]

    " - dat += "
    Current Network: [network]
    " + dat += "
    Current Network: [network]
    " if(machinelist.len) dat += "
    Detected Network Entities:" - dat += "
    \[Flush Buffer\]" + dat += "
    \[Flush Buffer\]" else - dat += "\[Probe Network\]" + dat += "\[Probe Network\]" // --- Viewing Machine --- if(1) dat += "
    [temp]
    " - dat += "
    \[Main Menu\]
    " + dat += "
    \[Main Menu\]
    " dat += "
    Current Network: [network]
    " dat += "Selected Network Entity: [SelectedMachine.name] ([SelectedMachine.id])
    " dat += "Linked Entities:
      " for(var/obj/machinery/telecomms/T in SelectedMachine.links) if(!T.hide) - dat += "
    1. \ref[T.id] [T.name] ([T.id])
    2. " + dat += "
    3. [REF(T.id)] [T.name] ([T.id])
    4. " dat += "
    " diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 893ab38380..74774f2670 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -52,13 +52,13 @@ var/dat dat = "[name]

    [name] Access

    " dat += "
    [temp]
    " - dat += "
    Power Status: [toggled ? "On" : "Off"]" + dat += "
    Power Status: [toggled ? "On" : "Off"]" if(on && toggled) if(id != "" && id) - dat += "
    Identification String: [id]" + dat += "
    Identification String: [id]" else - dat += "
    Identification String: NULL" - dat += "
    Network: [network]" + dat += "
    Identification String: NULL" + dat += "
    Network: [network]" dat += "
    Prefabrication: [autolinkers.len ? "TRUE" : "FALSE"]" if(hide) dat += "
    Shadow Link: ACTIVE" @@ -73,7 +73,7 @@ i++ if(T.hide && !hide) continue - dat += "
  • \ref[T] [T.name] ([T.id]) \[X\]
  • " + dat += "
  • [REF(T)] [T.name] ([T.id]) \[X\]
  • " dat += "" dat += "
    Filtering Frequencies: " @@ -83,21 +83,21 @@ for(var/x in freq_listening) i++ if(i < length(freq_listening)) - dat += "[format_frequency(x)] GHz\[X\]; " + dat += "[format_frequency(x)] GHz\[X\]; " else - dat += "[format_frequency(x)] GHz\[X\]" + dat += "[format_frequency(x)] GHz\[X\]" else dat += "NONE" - dat += "
    \[Add Filter\]" + dat += "
    \[Add Filter\]" dat += "
    " if(P) var/obj/machinery/telecomms/T = P.buffer if(istype(T)) - dat += "

    MULTITOOL BUFFER: [T] ([T.id]) \[Link\] \[Flush\]" + dat += "

    MULTITOOL BUFFER: [T] ([T.id])
    \[Link\] \[Flush\]" else - dat += "

    MULTITOOL BUFFER:
    \[Add Machine\]" + dat += "

    MULTITOOL BUFFER: \[Add Machine\]" dat += "
    " temp = "" @@ -151,8 +151,8 @@ /obj/machinery/telecomms/relay/Options_Menu() var/dat = "" - dat += "
    Broadcasting: [broadcasting ? "YES" : "NO"]" - dat += "
    Receiving: [receiving ? "YES" : "NO"]" + dat += "
    Broadcasting: [broadcasting ? "YES" : "NO"]" + dat += "
    Receiving: [receiving ? "YES" : "NO"]" return dat /obj/machinery/telecomms/relay/Options_Topic(href, href_list) @@ -167,7 +167,7 @@ // BUS /obj/machinery/telecomms/bus/Options_Menu() - var/dat = "
    Change Signal Frequency: [change_frequency ? "YES ([change_frequency])" : "NO"]" + var/dat = "
    Change Signal Frequency: [change_frequency ? "YES ([change_frequency])" : "NO"]" return dat /obj/machinery/telecomms/bus/Options_Topic(href, href_list) @@ -254,7 +254,7 @@ if(text2num(href_list["unlink"]) <= length(links)) var/obj/machinery/telecomms/T = links[text2num(href_list["unlink"])] if(T) - temp = "-% Removed \ref[T] [T.name] from linked entities. %-" + temp = "-% Removed [REF(T)] [T.name] from linked entities. %-" // Remove link entries from both T and src. @@ -276,7 +276,7 @@ if(!(T in links)) links += T - temp = "-% Successfully linked with \ref[T] [T.name] %-" + temp = "-% Successfully linked with [REF(T)] [T.name] %-" else temp = "-% Unable to acquire buffer %-" @@ -284,7 +284,7 @@ if(href_list["buffer"]) P.buffer = src - temp = "-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-" + temp = "-% Successfully stored [REF(P.buffer)] [P.buffer.name] in buffer %-" if(href_list["flush"]) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 6a3cb6b179..bd93975f46 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -373,7 +373,7 @@ for (var/datum/data/vending_product/R in display_records) dat += "
  • " if(R.amount > 0) - dat += "Vend " + dat += "Vend " else dat += "Sold out " dat += "[sanitize(R.product_name)]:" @@ -384,7 +384,7 @@ if(premium.len > 0) dat += "Change Return: " if (coin || bill) - dat += "[(coin ? coin : "")][(bill ? bill : "")]  Remove" + dat += "[(coin ? coin : "")][(bill ? bill : "")]  Remove" else dat += "No money  Remove" if(istype(src, /obj/machinery/vending/snack)) @@ -393,7 +393,7 @@ for (var/O in dish_quants) if(dish_quants[O] > 0) var/N = dish_quants[O] - dat += "Dispense " + dat += "Dispense " dat += "[capitalize(O)]: [N]
    " dat += "
  • " user.set_machine(src) diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm index ab3ebb4050..fe399e64da 100644 --- a/code/game/mecha/combat/honker.dm +++ b/code/game/mecha/combat/honker.dm @@ -1,156 +1,154 @@ -/obj/mecha/combat/honker - desc = "Produced by \"Tyranny of Honk, INC\", this exosuit is designed as heavy clown-support. Used to spread the fun and joy of life. HONK!" - name = "\improper H.O.N.K" - icon_state = "honker" - step_in = 3 - max_integrity = 140 - deflect_chance = 60 - internal_damage_threshold = 60 - armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100) - max_temperature = 25000 - infra_luminosity = 5 +/obj/mecha/combat/honker + desc = "Produced by \"Tyranny of Honk, INC\", this exosuit is designed as heavy clown-support. Used to spread the fun and joy of life. HONK!" + name = "\improper H.O.N.K" + icon_state = "honker" + step_in = 3 + max_integrity = 140 + deflect_chance = 60 + internal_damage_threshold = 60 + armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100) + max_temperature = 25000 + infra_luminosity = 5 operation_req_access = list(ACCESS_THEATRE) - wreckage = /obj/structure/mecha_wreckage/honker - add_req_access = 0 - max_equip = 3 - var/squeak = 0 - -/* -/obj/mecha/combat/honker/New() - ..() - - weapons += new /datum/mecha_weapon/honker(src) - weapons += new /datum/mecha_weapon/missile_rack/banana_mortar(src) - weapons += new /datum/mecha_weapon/missile_rack/mousetrap_mortar(src) - selected_weapon = weapons[1] - return -*/ - -/obj/mecha/combat/honker/get_stats_part() - var/integrity = obj_integrity/max_integrity*100 - var/cell_charge = get_charge() - var/datum/gas_mixture/int_tank_air = internal_tank.return_air() - var/tank_pressure = internal_tank ? round(int_tank_air.return_pressure(),0.01) : "None" - var/tank_temperature = internal_tank ? int_tank_air.temperature : "Unknown" - var/cabin_pressure = round(return_pressure(),0.01) - var/output = {"[report_internal_damage()] - [integrity<30?"DAMAGE LEVEL CRITICAL
    ":null] - [internal_damage&MECHA_INT_TEMP_CONTROL?"CLOWN SUPPORT SYSTEM MALFUNCTION
    ":null] - [internal_damage&MECHA_INT_TANK_BREACH?"GAS TANK HONK
    ":null] - [internal_damage&MECHA_INT_CONTROL_LOST?"HONK-A-DOODLE - Recalibrate
    ":null] - IntegriHONK: [integrity]%
    - PowerHONK charge: [isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]
    - Air source: [use_internal_tank?"Internal Airtank":"Environment"]
    - AirHONK pressure: [tank_pressure]kPa
    - AirHONK temperature: [tank_temperature]°K|[tank_temperature - T0C]°C
    - HONK pressure: [cabin_pressure>WARNING_HIGH_PRESSURE ? "[cabin_pressure]": cabin_pressure]kPa
    - HONK temperature: [return_temperature()]°K|[return_temperature() - T0C]°C
    - Lights: [lights?"on":"off"]
    - [dna_lock?"DNA-locked:
    [dna_lock] \[Reset\]
    ":null] - "} - return output - -/obj/mecha/combat/honker/get_stats_html() - var/output = {" - [src.name] data - - - - -
    - [src.get_stats_part()] -
    -
    - [src.get_equipment_list()] -
    -
    -
    - [src.get_commands()] -
    - - - "} - return output - -/obj/mecha/combat/honker/get_commands() - var/output = {"
    -
    Sounds of HONK:
    - -
    - "} - output += ..() - return output - - -/obj/mecha/combat/honker/get_equipment_list() - if(!equipment.len) - return - var/output = "Honk-ON-Systems:
    " - for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment) - output += "
    [MT.get_equip_info()]
    " - output += "
    " - return output - - - -/obj/mecha/combat/honker/mechstep(direction) - var/result = step(src,direction) - if(result) - if(!squeak) - playsound(src, "clownstep", 70, 1) - squeak = 1 - else - squeak = 0 - return result - -/obj/mecha/combat/honker/Topic(href, href_list) - ..() - if (href_list["play_sound"]) - switch(href_list["play_sound"]) - if("sadtrombone") - playsound(src, 'sound/misc/sadtrombone.ogg', 50) - return - -/proc/rand_hex_color() - var/list/colors = list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f") - var/color="" - for (var/i=0;i<6;i++) - color = color+pick(colors) - return color - - + wreckage = /obj/structure/mecha_wreckage/honker + add_req_access = 0 + max_equip = 3 + var/squeak = 0 + +/* +/obj/mecha/combat/honker/New() + ..() + + weapons += new /datum/mecha_weapon/honker(src) + weapons += new /datum/mecha_weapon/missile_rack/banana_mortar(src) + weapons += new /datum/mecha_weapon/missile_rack/mousetrap_mortar(src) + selected_weapon = weapons[1] + return +*/ + +/obj/mecha/combat/honker/get_stats_part() + var/integrity = obj_integrity/max_integrity*100 + var/cell_charge = get_charge() + var/datum/gas_mixture/int_tank_air = internal_tank.return_air() + var/tank_pressure = internal_tank ? round(int_tank_air.return_pressure(),0.01) : "None" + var/tank_temperature = internal_tank ? int_tank_air.temperature : "Unknown" + var/cabin_pressure = round(return_pressure(),0.01) + var/output = {"[report_internal_damage()] + [integrity<30?"DAMAGE LEVEL CRITICAL
    ":null] + [internal_damage&MECHA_INT_TEMP_CONTROL?"CLOWN SUPPORT SYSTEM MALFUNCTION
    ":null] + [internal_damage&MECHA_INT_TANK_BREACH?"GAS TANK HONK
    ":null] + [internal_damage&MECHA_INT_CONTROL_LOST?"HONK-A-DOODLE - Recalibrate
    ":null] + IntegriHONK: [integrity]%
    + PowerHONK charge: [isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]
    + Air source: [use_internal_tank?"Internal Airtank":"Environment"]
    + AirHONK pressure: [tank_pressure]kPa
    + AirHONK temperature: [tank_temperature]°K|[tank_temperature - T0C]°C
    + HONK pressure: [cabin_pressure>WARNING_HIGH_PRESSURE ? "[cabin_pressure]": cabin_pressure]kPa
    + HONK temperature: [return_temperature()]°K|[return_temperature() - T0C]°C
    + Lights: [lights?"on":"off"]
    + [dna_lock?"DNA-locked:
    [dna_lock] \[Reset\]
    ":null] + "} + return output + +/obj/mecha/combat/honker/get_stats_html() + var/output = {" + [src.name] data + + + + +
    + [src.get_stats_part()] +
    +
    + [src.get_equipment_list()] +
    +
    +
    + [src.get_commands()] +
    + + + "} + return output + +/obj/mecha/combat/honker/get_commands() + var/output = {"
    +
    Sounds of HONK:
    + +
    + "} + output += ..() + return output + + +/obj/mecha/combat/honker/get_equipment_list() + if(!equipment.len) + return + var/output = "Honk-ON-Systems:
    " + for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment) + output += "
    [MT.get_equip_info()]
    " + output += "
    " + return output + + + +/obj/mecha/combat/honker/mechstep(direction) + var/result = step(src,direction) + if(result) + if(!squeak) + playsound(src, "clownstep", 70, 1) + squeak = 1 + else + squeak = 0 + return result + +/obj/mecha/combat/honker/Topic(href, href_list) + ..() + if (href_list["play_sound"]) + switch(href_list["play_sound"]) + if("sadtrombone") + playsound(src, 'sound/misc/sadtrombone.ogg', 50) + return + +/proc/rand_hex_color() + var/list/colors = list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f") + var/color="" + for (var/i=0;i<6;i++) + color = color+pick(colors) + return color diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 48d98aa70f..627858bea6 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -25,7 +25,7 @@ /obj/item/mecha_parts/mecha_equipment/proc/update_equip_info() if(chassis) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",get_equip_info()) return 1 return @@ -52,7 +52,7 @@ if(chassis.selected == src) txt += "[src.name]" else if(selectable) - txt += "[src.name]" + txt += "[src.name]" else txt += "[src.name]" @@ -132,7 +132,7 @@ /obj/item/mecha_parts/mecha_equipment/proc/set_ready_state(state) equip_ready = state if(chassis) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) return /obj/item/mecha_parts/mecha_equipment/proc/occupant_message(message) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 0b99d811b3..cc0f935628 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -104,21 +104,21 @@ if(output) var/temp = "" if(patient) - temp = "
    \[Occupant: [patient] ([patient.stat > 1 ? "*DECEASED*" : "Health: [patient.health]%"])\]
    View stats|Eject" + temp = "
    \[Occupant: [patient] ([patient.stat > 1 ? "*DECEASED*" : "Health: [patient.health]%"])\]
    View stats|Eject" return "[output] [temp]" return /obj/item/mecha_parts/mecha_equipment/medical/sleeper/Topic(href,href_list) ..() - var/datum/topic_input/filter = new /datum/topic_input(href,href_list) - if(filter.get("eject")) + var/datum/topic_input/afilter = new /datum/topic_input(href,href_list) + if(afilter.get("eject")) go_out() - if(filter.get("view_stats")) + if(afilter.get("view_stats")) chassis.occupant << browse(get_patient_stats(),"window=msleeper") onclose(chassis.occupant, "msleeper") return - if(filter.get("inject")) - inject_reagent(filter.getType("inject", /datum/reagent),filter.getObj("source")) + if(afilter.get("inject")) + inject_reagent(afilter.getType("inject", /datum/reagent),afilter.getObj("source")) return /obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/get_patient_stats() @@ -184,7 +184,7 @@ if(SG && SG.reagents && islist(SG.reagents.reagent_list)) for(var/datum/reagent/R in SG.reagents.reagent_list) if(R.volume > 0) - output += "Inject [R.name]
    " + output += "Inject [R.name]
    " return output @@ -287,7 +287,7 @@ /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/get_equip_info() var/output = ..() if(output) - return "[output] \[[mode? "Analyze" : "Launch"]\]
    \[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]
    Reagents list" + return "[output] \[[mode? "Analyze" : "Launch"]\]
    \[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]
    Reagents list" return /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/action(atom/movable/target) @@ -358,19 +358,19 @@ /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/Topic(href,href_list) ..() - var/datum/topic_input/filter = new (href,href_list) - if(filter.get("toggle_mode")) + var/datum/topic_input/afilter = new (href,href_list) + if(afilter.get("toggle_mode")) mode = !mode update_equip_info() return - if(filter.get("select_reagents")) + if(afilter.get("select_reagents")) processed_reagents.len = 0 var/m = 0 var/message for(var/i=1 to known_reagents.len) if(m>=synth_speed) break - var/reagent = filter.get("reagent_[i]") + var/reagent = afilter.get("reagent_[i]") if(reagent && (reagent in known_reagents)) message = "[m ? ", " : null][known_reagents[reagent]]" processed_reagents += reagent @@ -382,14 +382,14 @@ occupant_message("Reagent processing started.") log_message("Reagent processing started.") return - if(filter.get("show_reagents")) + if(afilter.get("show_reagents")) chassis.occupant << browse(get_reagents_page(),"window=msyringegun") - if(filter.get("purge_reagent")) - var/reagent = filter.get("purge_reagent") + if(afilter.get("purge_reagent")) + var/reagent = afilter.get("purge_reagent") if(reagent) reagents.del_reagent(reagent) return - if(filter.get("purge_all")) + if(afilter.get("purge_all")) reagents.clear_reagents() return return @@ -426,7 +426,7 @@ var/r_list = get_reagents_list() var/inputs if(r_list) - inputs += "" + inputs += "" inputs += "" inputs += "" var/output = {" @@ -448,9 +448,9 @@ var/output for(var/datum/reagent/R in reagents.reagent_list) if(R.volume > 0) - output += "[R]: [round(R.volume,0.001)] - Purge Reagent
    " + output += "[R]: [round(R.volume,0.001)] - Purge Reagent
    " if(output) - output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - Purge All" + output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - Purge All" return output || "None" /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/load_syringe(obj/item/reagent_containers/syringe/S) diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index c99814148d..9203e32177 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -6,7 +6,7 @@ name = "exosuit drill" desc = "Equipment for engineering and combat exosuits. This is the drill that'll pierce the heavens!" icon_state = "mecha_drill" - equip_cooldown = 30 + equip_cooldown = 15 energy_drain = 10 force = 15 @@ -99,7 +99,7 @@ desc = "Equipment for engineering and combat exosuits. This is an upgraded version of the drill that'll pierce the heavens!" icon_state = "mecha_diamond_drill" origin_tech = "materials=4;engineering=4" - equip_cooldown = 20 + equip_cooldown = 10 force = 15 @@ -108,16 +108,16 @@ desc = "Equipment for engineering and combat exosuits. It will automatically check surrounding rock for useful minerals." icon_state = "mecha_analyzer" selectable = 0 - equip_cooldown = 30 + equip_cooldown = 15 var/scanning_time = 0 /obj/item/mecha_parts/mecha_equipment/mining_scanner/New() ..() - START_PROCESSING(SSobj, src) + START_PROCESSING(SSfastprocess, src) /obj/item/mecha_parts/mecha_equipment/mining_scanner/process() if(!loc) - STOP_PROCESSING(SSobj, src) + STOP_PROCESSING(SSfastprocess, src) qdel(src) if(istype(loc, /obj/mecha/working) && scanning_time <= world.time) var/obj/mecha/working/mecha = loc diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 38b8e2bb96..9d7c9b6833 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -92,20 +92,20 @@ return locked = target occupant_message("Locked on [target]") - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) else if(target!=locked) if(locked in view(chassis)) var/turf/targ = get_turf(target) var/turf/orig = get_turf(locked) locked.throw_at(target, 14, 1.5) locked = null - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) log_game("[key_name(chassis.occupant)] used a Gravitational Catapult to throw [locked]([COORD(orig)]) at [target]([COORD(targ)]).") return TRUE else locked = null occupant_message("Lock on [locked] disengaged.") - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) if(2) var/list/atoms = list() if(isturf(target)) @@ -126,13 +126,13 @@ /obj/item/mecha_parts/mecha_equipment/gravcatapult/get_equip_info() - return "[..()] [mode==1?"([locked||"Nothing"])":null] \[S|P\]" + return "[..()] [mode==1?"([locked||"Nothing"])":null] \[S|P\]" /obj/item/mecha_parts/mecha_equipment/gravcatapult/Topic(href, href_list) ..() if(href_list["mode"]) mode = text2num(href_list["mode"]) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) return @@ -212,7 +212,7 @@ /obj/item/mecha_parts/mecha_equipment/repair_droid/get_equip_info() if(!chassis) return - return "*  [src.name] - [equip_ready?"A":"Dea"]ctivate" + return "*  [src.name] - [equip_ready?"A":"Dea"]ctivate" /obj/item/mecha_parts/mecha_equipment/repair_droid/Topic(href, href_list) @@ -230,7 +230,7 @@ log_message("Deactivated.") set_ready_state(1) chassis.add_overlay(droid_overlay) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) /obj/item/mecha_parts/mecha_equipment/repair_droid/process() @@ -320,7 +320,7 @@ /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/get_equip_info() if(!chassis) return - return "*  [src.name] - [equip_ready?"A":"Dea"]ctivate" + return "*  [src.name] - [equip_ready?"A":"Dea"]ctivate" /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/process() @@ -397,13 +397,13 @@ /obj/item/mecha_parts/mecha_equipment/generator/get_equip_info() var/output = ..() if(output) - return "[output] \[[fuel]: [round(fuel.amount*fuel.perunit,0.1)] cm3\] - [equip_ready?"A":"Dea"]ctivate" + return "[output] \[[fuel]: [round(fuel.amount*fuel.perunit,0.1)] cm3\] - [equip_ready?"A":"Dea"]ctivate" /obj/item/mecha_parts/mecha_equipment/generator/action(target) if(chassis) var/result = load_fuel(target) if(result) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) /obj/item/mecha_parts/mecha_equipment/generator/proc/load_fuel(var/obj/item/stack/sheet/P) if(P.type == fuel.type && P.amount > 0) diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 2bc3d3eaff..7ec90ab7ce 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -288,7 +288,7 @@ return /obj/item/mecha_parts/mecha_equipment/rcd/get_equip_info() - return "[..()] \[D|C|A\]" + return "[..()] \[D|C|A\]" @@ -342,7 +342,7 @@ cable.amount += to_load target.use(to_load) occupant_message("[to_load] meters of cable successfully loaded.") - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) else occupant_message("Reel is full.") else @@ -371,7 +371,7 @@ /obj/item/mecha_parts/mecha_equipment/cable_layer/get_equip_info() var/output = ..() if(output) - return "[output] \[Cable: [cable ? cable.amount : 0] m\][(cable && cable.amount) ? "- [!equip_ready?"Dea":"A"]ctivate|Cut" : null]" + return "[output] \[Cable: [cable ? cable.amount : 0] m\][(cable && cable.amount) ? "- [!equip_ready?"Dea":"A"]ctivate|Cut" : null]" return /obj/item/mecha_parts/mecha_equipment/cable_layer/proc/use_cable(amount) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 9d83c1c95b..4b814d6e58 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -210,7 +210,7 @@ return 1 /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_equip_info() - return "[..()] \[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]" + return "[..()] \[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]" /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/rearm() @@ -220,7 +220,7 @@ projectiles++ projectiles_to_add-- chassis.use_power(projectile_energy_cost) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) log_message("Rearmed [src.name].") return 1 @@ -239,7 +239,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/action(atom/target) if(..()) projectiles -= get_shot_amount() - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) return 1 diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 524dc4e5b5..be0f596ced 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -98,8 +98,8 @@ continue output += "
    [output_part_info(D)]
    \[" if(check_resources(D)) - output += "Build | " - output += "Add to queue\]\[?\]
    " + output += "Build | " + output += "Add to queue\]\[?\]
    " return output /obj/machinery/mecha_part_fabricator/proc/output_part_info(datum/design/D) @@ -121,10 +121,10 @@ var/datum/material/M = materials.materials[mat_id] output += "[M.name]: [M.amount] cm³" if(M.amount >= MINERAL_MATERIAL_AMOUNT) - output += "- Remove \[1\]" + output += "- Remove \[1\]" if(M.amount >= (MINERAL_MATERIAL_AMOUNT * 10)) - output += " | \[10\]" - output += " | \[All\]" + output += " | \[10\]" + output += " | \[All\]" output += "
    " return output @@ -206,7 +206,7 @@ if(!check_resources(D)) say("Not enough resources. Queue processing stopped.") temp = {"Not enough resources to build next part.
    - Try again | Return"} + Try again | Return"} return 0 remove_from_queue(1) build_part(D) @@ -225,12 +225,12 @@ var/obj/part = D.build_path output += "" output += initial(part.name) + " - " - output += "[i>1?"":null] " - output += "[i↓":null] " - output += "Remove" + output += "[i>1?"":null] " + output += "[i↓":null] " + output += "Remove" output += "" - output += "\[Process queue | Clear queue\]" + output += "\[Process queue | Clear queue\]" return output /obj/machinery/mecha_part_fabricator/proc/sync() @@ -250,13 +250,13 @@ files.RefreshResearch() temp = "Processed equipment designs.
    " //check if the tech coefficients have changed - temp += "Return" + temp += "Return" updateUsrDialog() say("Successfully synchronized with R&D server.") return - temp = "Unable to connect to local R&D Database.
    Please check your connections and try again.
    Return" + temp = "Unable to connect to local R&D Database.
    Please check your connections and try again.
    Return" updateUsrDialog() return @@ -289,12 +289,12 @@ switch(screen) if("main") left_part = output_available_resources()+"
    " - left_part += "Sync with R&D servers
    " + left_part += "Sync with R&D servers
    " for(var/part_set in part_sets) - left_part += "[part_set] - \[Add all parts to queue\]
    " + left_part += "[part_set] - \[Add all parts to queue\]
    " if("parts") left_part += output_parts_list(part_set) - left_part += "
    Return" + left_part += "
    Return" dat = {" [name] @@ -332,9 +332,9 @@ /obj/machinery/mecha_part_fabricator/Topic(href, href_list) if(..()) return - var/datum/topic_input/filter = new /datum/topic_input(href,href_list) + var/datum/topic_input/afilter = new /datum/topic_input(href,href_list) if(href_list["part_set"]) - var/tpart_set = filter.getStr("part_set") + var/tpart_set = afilter.getStr("part_set") if(tpart_set) if(tpart_set=="clear") part_set = null @@ -342,7 +342,7 @@ part_set = tpart_set screen = "parts" if(href_list["part"]) - var/T = filter.getStr("part") + var/T = afilter.getStr("part") for(var/v in files.known_designs) var/datum/design/D = files.known_designs[v] if(D.build_type & MECHFAB) @@ -353,7 +353,7 @@ add_to_queue(D) break if(href_list["add_to_queue"]) - var/T = filter.getStr("add_to_queue") + var/T = afilter.getStr("add_to_queue") for(var/v in files.known_designs) var/datum/design/D = files.known_designs[v] if(D.build_type & MECHFAB) @@ -362,10 +362,10 @@ break return update_queue_on_page() if(href_list["remove_from_queue"]) - remove_from_queue(filter.getNum("remove_from_queue")) + remove_from_queue(afilter.getNum("remove_from_queue")) return update_queue_on_page() if(href_list["partset_to_queue"]) - add_part_set_to_queue(filter.get("partset_to_queue")) + add_part_set_to_queue(afilter.get("partset_to_queue")) return update_queue_on_page() if(href_list["process_queue"]) spawn(0) @@ -379,8 +379,8 @@ if(href_list["screen"]) screen = href_list["screen"] if(href_list["queue_move"] && href_list["index"]) - var/index = filter.getNum("index") - var/new_index = index + filter.getNum("queue_move") + var/index = afilter.getNum("index") + var/new_index = index + afilter.getNum("queue_move") if(isnum(index) && isnum(new_index) && IsInteger(index) && IsInteger(new_index)) if(IsInRange(new_index,1,queue.len)) queue.Swap(index,new_index) @@ -391,7 +391,7 @@ if(href_list["sync"]) sync() if(href_list["part_desc"]) - var/T = filter.getStr("part_desc") + var/T = afilter.getStr("part_desc") for(var/v in files.known_designs) var/datum/design/D = files.known_designs[v] if(D.build_type & MECHFAB) @@ -399,7 +399,7 @@ var/obj/part = D.build_path temp = {"

    [initial(part.name)] description:

    [initial(part.desc)]
    - Return + Return "} break diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index ad0e428f14..2f98b2cc4c 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -647,7 +647,7 @@ to_chat(user, "[B.get_mecha_info()]") break //Nothing like a big, red link to make the player feel powerful! - to_chat(user, "ASSUME DIRECT CONTROL?
    ") + to_chat(user, "ASSUME DIRECT CONTROL?
    ") else examine(user) if(occupant) @@ -661,7 +661,7 @@ if(!can_control_mech) to_chat(user, "You cannot control exosuits without AI control beacons installed.") return - to_chat(user, "Take control of exosuit?
    ") + to_chat(user, "Take control of exosuit?
    ") /obj/mecha/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/device/aicard/card) if(!..()) diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 431768500e..63dd798a34 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -23,15 +23,15 @@ var/answer = TR.get_mecha_info() if(answer) dat += {"
    [answer]
    - Send message
    - Show exosuit log | (EMP pulse)
    "} + Send message
    + Show exosuit log | (EMP pulse)
    "} if(screen==1) dat += "

    Log contents

    " - dat += "Return
    " + dat += "Return
    " dat += "[stored_data]" - dat += "(Refresh)
    " + dat += "(Refresh)
    " dat += "" user << browse(dat, "window=computer;size=400x500") @@ -41,19 +41,19 @@ /obj/machinery/computer/mecha/Topic(href, href_list) if(..()) return - var/datum/topic_input/filter = new /datum/topic_input(href,href_list) + var/datum/topic_input/afilter = new /datum/topic_input(href,href_list) if(href_list["send_message"]) - var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("send_message") + var/obj/item/mecha_parts/mecha_tracking/MT = afilter.getObj("send_message") var/message = stripped_input(usr,"Input message","Transmit message") var/obj/mecha/M = MT.in_mecha() if(trim(message) && M) M.occupant_message(message) return if(href_list["shock"]) - var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("shock") + var/obj/item/mecha_parts/mecha_tracking/MT = afilter.getObj("shock") MT.shock() if(href_list["get_log"]) - var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("get_log") + var/obj/item/mecha_parts/mecha_tracking/MT = afilter.getObj("get_log") stored_data = MT.get_mecha_log() screen = 1 if(href_list["return"]) diff --git a/code/game/mecha/mecha_topic.dm b/code/game/mecha/mecha_topic.dm index 27256d8b0b..54b44f89f9 100644 --- a/code/game/mecha/mecha_topic.dm +++ b/code/game/mecha/mecha_topic.dm @@ -22,7 +22,7 @@ [js_dropdowns] function SSticker() { setInterval(function(){ - window.location='byond://?src=\ref[src]&update_content=1'; + window.location='byond://?src=[REF(src)]&update_content=1'; }, 1000); } @@ -55,7 +55,7 @@ "[MECHA_INT_FIRE]" = "INTERNAL FIRE", "[MECHA_INT_TEMP_CONTROL]" = "LIFE SUPPORT SYSTEM MALFUNCTION", "[MECHA_INT_TANK_BREACH]" = "GAS TANK BREACH", - "[MECHA_INT_CONTROL_LOST]" = "COORDINATION SYSTEM CALIBRATION FAILURE - Recalibrate", + "[MECHA_INT_CONTROL_LOST]" = "COORDINATION SYSTEM CALIBRATION FAILURE - Recalibrate", "[MECHA_INT_SHORT_CIRCUIT]" = "SHORT CIRCUIT" ) for(var/tflag in dam_reports) @@ -84,7 +84,7 @@ Airtank temperature: [tank_temperature]°K|[tank_temperature - T0C]°C
    Cabin pressure: [cabin_pressure>WARNING_HIGH_PRESSURE ? "[cabin_pressure]": cabin_pressure]kPa
    Cabin temperature: [return_temperature()]°K|[return_temperature() - T0C]°C
    - [dna_lock?"DNA-locked:
    [dna_lock] \[Reset\]
    ":""]
    + [dna_lock?"DNA-locked:
    [dna_lock] \[Reset\]
    ":""]
    [thrusters_action.owner ? "Thrusters: [thrusters_active ? "Enabled" : "Disabled"]
    " : ""] [defense_action.owner ? "Defence Mode: [defence_mode ? "Enabled" : "Disabled"]
    " : ""] [overload_action.owner ? "Leg Actuators Overload: [leg_overload_mode ? "Enabled" : "Disabled"]
    " : ""] @@ -100,25 +100,25 @@
    Electronics
    [get_equipment_menu()]
    @@ -133,7 +133,7 @@
    " @@ -143,7 +143,7 @@ return . = "Equipment:
    " for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment) - . += "
    [MT.get_equip_info()]
    " + . += "
    [MT.get_equip_info()]
    " . += "
    " @@ -171,7 +171,7 @@

    Following keycodes are present in this system:

    "} for(var/a in operation_req_access) - . += "[get_access_desc(a)] - Delete
    " + . += "[get_access_desc(a)] - Delete
    " . += "

    Following keycodes were detected on portable device:

    " for(var/a in id_card.access) if(a in operation_req_access) @@ -179,8 +179,8 @@ var/a_name = get_access_desc(a) if(!a_name) continue //there's some strange access without a name - . += "[a_name] - Add
    " - . += "
    Finish " + . += "[a_name] - Add
    " + . += "
    Finish " . += "(Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)" . += "" user << browse(., "window=exosuit_add_access") @@ -198,9 +198,9 @@ - [add_req_access?"Edit operation keycodes":null] - [maint_access?"Initiate maintenance protocol":null] - [(state>0) ?"Set Cabin Air Pressure":null] + [add_req_access?"Edit operation keycodes":null] + [maint_access?"Initiate maintenance protocol":null] + [(state>0) ?"Set Cabin Air Pressure":null] "} user << browse(., "window=exosuit_maint_console") @@ -221,15 +221,15 @@ if(usr.incapacitated()) return - var/datum/topic_input/filter = new /datum/topic_input(href,href_list) + var/datum/topic_input/afilter = new /datum/topic_input(href,href_list) if(in_range(src, usr)) if(href_list["req_access"] && add_req_access) - output_access_dialog(filter.getObj("id_card"),filter.getMob("user")) + output_access_dialog(afilter.getObj("id_card"),afilter.getMob("user")) if(href_list["maint_access"] && maint_access) - var/mob/user = filter.getMob("user") + var/mob/user = afilter.getMob("user") if(user) if(state==0) state = 1 @@ -237,27 +237,27 @@ else if(state==1) state = 0 to_chat(user, "The securing bolts are now hidden.") - output_maintenance_dialog(filter.getObj("id_card"),user) + output_maintenance_dialog(afilter.getObj("id_card"),user) if(href_list["set_internal_tank_valve"] && state >=1) - var/mob/user = filter.getMob("user") + var/mob/user = afilter.getMob("user") if(user) var/new_pressure = input(user,"Input new output pressure","Pressure setting",internal_tank_valve) as num if(new_pressure) internal_tank_valve = new_pressure to_chat(user, "The internal pressure valve has been set to [internal_tank_valve]kPa.") - if(href_list["add_req_access"] && add_req_access && filter.getObj("id_card")) - operation_req_access += filter.getNum("add_req_access") - output_access_dialog(filter.getObj("id_card"),filter.getMob("user")) + if(href_list["add_req_access"] && add_req_access && afilter.getObj("id_card")) + operation_req_access += afilter.getNum("add_req_access") + output_access_dialog(afilter.getObj("id_card"),afilter.getMob("user")) - if(href_list["del_req_access"] && add_req_access && filter.getObj("id_card")) - operation_req_access -= filter.getNum("del_req_access") - output_access_dialog(filter.getObj("id_card"),filter.getMob("user")) + if(href_list["del_req_access"] && add_req_access && afilter.getObj("id_card")) + operation_req_access -= afilter.getNum("del_req_access") + output_access_dialog(afilter.getObj("id_card"),afilter.getMob("user")) if(href_list["finish_req_access"]) add_req_access = 0 - var/mob/user = filter.getMob("user") + var/mob/user = afilter.getMob("user") user << browse(null,"window=exosuit_add_access") if(usr != occupant) @@ -267,7 +267,7 @@ send_byjax(src.occupant,"exosuit.browser","content",src.get_stats_part()) if(href_list["select_equip"]) - var/obj/item/mecha_parts/mecha_equipment/equip = filter.getObj("select_equip") + var/obj/item/mecha_parts/mecha_equipment/equip = afilter.getObj("select_equip") if(equip && equip.selectable) src.selected = equip src.occupant_message("You switch to [equip]") @@ -283,7 +283,7 @@ send_byjax(src.occupant,"exosuit.browser","rspkstate",(radio.listening?"Engaged":"Disengaged")) if(href_list["rfreq"]) - var/new_frequency = (radio.frequency + filter.getNum("rfreq")) + var/new_frequency = (radio.frequency + afilter.getNum("rfreq")) if (!radio.freerange || (radio.frequency < 1200 || radio.frequency > 1600)) new_frequency = sanitize_frequency(new_frequency) radio.set_frequency(new_frequency) diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 131e6cd7f7..0da64c3e4d 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -149,7 +149,7 @@ output += "Cargo Compartment Contents:
    " if(cargo.len) for(var/obj/O in cargo) - output += "Unload : [O]
    " + output += "Unload : [O]
    " else output += "Nothing" output += "
    " diff --git a/code/game/objects/effects/countdown.dm b/code/game/objects/effects/countdown.dm index 4dd8e323c8..f4b67b7df2 100644 --- a/code/game/objects/effects/countdown.dm +++ b/code/game/objects/effects/countdown.dm @@ -108,7 +108,7 @@ if(!istype(G)) return else if(G.obj_integrity && !G.purpose_fulfilled) - return "
    [G.get_arrival_text(FALSE)]
    " + return "
    [G.get_arrival_time(FALSE)]
    " /obj/effect/countdown/supermatter name = "supermatter damage" diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 7ca3bd9462..4362957a76 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -5,20 +5,26 @@ icon_state = "rune1" gender = NEUTER var/do_icon_rotate = TRUE + var/rotation = 0 + var/paint_colour = "#FFFFFF" -/obj/effect/decal/cleanable/crayon/Initialize(mapload, main = "#FFFFFF", var/type = "rune1", var/e_name = "rune", var/rotation = 0, var/alt_icon = null) +/obj/effect/decal/cleanable/crayon/Initialize(mapload, main, type, e_name, graf_rot, alt_icon = null) . = ..() - name = e_name + if(e_name) + name = e_name desc = "A [name] vandalizing the station." if(alt_icon) icon = alt_icon - icon_state = type - + if(type) + icon_state = type + if(graf_rot) + rotation = graf_rot if(rotation && do_icon_rotate) var/matrix/M = matrix() M.Turn(rotation) src.transform = M - - add_atom_colour(main, FIXED_COLOUR_PRIORITY) + if(main) + paint_colour = main + add_atom_colour(paint_colour, FIXED_COLOUR_PRIORITY) diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index 3ded6ea8fc..f4235de240 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -20,6 +20,7 @@ /obj/effect/turf_decal icon = 'icons/turf/decals.dmi' icon_state = "warningline" + layer = TURF_DECAL_LAYER /obj/effect/turf_decal/Initialize() ..() diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index 1f3a5a7b02..3de8432ee9 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -288,7 +288,7 @@ var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast) var/more = "" if(M) - more = "(?) (FLW) " + more = "(?) (FLW) " message_admins("Smoke: ([whereLink])[contained]. Key: [carry.my_atom.fingerprintslast][more].", 0, 1) log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].") else diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index c08ad793ab..0b1432e61c 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -198,7 +198,7 @@ S.directive = directive if(player_spiders) S.playable_spider = TRUE - notify_ghosts("Spider [S.name] can be controlled", null, enter_link="(Click to play)", source=S, action=NOTIFY_ATTACK) + notify_ghosts("Spider [S.name] can be controlled", null, enter_link="(Click to play)", source=S, action=NOTIFY_ATTACK) qdel(src) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index cd0b296392..3e6d17d4da 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -93,6 +93,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/flags_cover = 0 //for flags such as GLASSESCOVERSEYES var/heat = 0 var/sharpness = IS_BLUNT + + var/tool_behaviour = TOOL_NONE var/toolspeed = 1 var/block_chance = 0 diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 8dcbc5d933..51a81c46aa 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -173,11 +173,11 @@ ARCD if(use_one_access) - t1 += "Restriction Type: At least one access required
    " + t1 += "Restriction Type: At least one access required
    " else - t1 += "Restriction Type: All accesses required
    " + t1 += "Restriction Type: All accesses required
    " - t1 += "Remove All
    " + t1 += "Remove All
    " var/accesses = "" accesses += "
    Access
    " @@ -190,15 +190,15 @@ ARCD accesses += "" for(var/A in get_region_accesses(i)) if(A in conf_access) - accesses += "[replacetext(get_access_desc(A), " ", " ")] " + accesses += "[replacetext(get_access_desc(A), " ", " ")] " else - accesses += "[replacetext(get_access_desc(A), " ", " ")] " + accesses += "[replacetext(get_access_desc(A), " ", " ")] " accesses += "
    " accesses += "" accesses += "" t1 += "[accesses]" - t1 += text("

    Close

    \n", src) + t1 += "

    Close

    \n" var/datum/browser/popup = new(usr, "airlock_electronics", "Access Control", 900, 500) popup.set_content(t1) diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index e1f10b81d2..b7d2330dc0 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -35,7 +35,7 @@ RPD /datum/pipe_info/proc/Render(dispenser,label) /datum/pipe_info/pipe/Render(dispenser,label,dir=NORTH) - return "
  • [label]
  • " + return "
  • [label]
  • " /datum/pipe_info/meter categoryId = CATEGORY_ATMOS @@ -46,7 +46,7 @@ RPD return /datum/pipe_info/meter/Render(dispenser,label) - return "
  • [label]
  • " //hardcoding is no + return "
  • [label]
  • " //hardcoding is no GLOBAL_LIST_INIT(disposalpipeID2State, list( "pipe-s", @@ -74,7 +74,7 @@ GLOBAL_LIST_INIT(disposalpipeID2State, list( icon_state = "con[icon_state]" /datum/pipe_info/disposal/Render(dispenser,label) - return "
  • [label]
  • " //avoid hardcoding. + return "
  • [label]
  • " //avoid hardcoding. //find these defines in code\game\machinery\pipe\consruction.dm GLOBAL_LIST_INIT(RPD_recipes, list( @@ -177,7 +177,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list( var/selected=" class=\"imglink\"" if(_dir == p_dir) selected=" class=\"imglink selected\"" - return "" + return "" /obj/item/pipe_dispenser/proc/show_menu(mob/user) if(!user || !src) @@ -186,27 +186,27 @@ GLOBAL_LIST_INIT(RPD_recipes, list( Utilities:
      "} if(p_class != EATING_MODE) - dat += "
    • Eat Pipes
    • " + dat += "
    • Eat Pipes
    • " else dat += "
    • Eat Pipes
    • " if(p_class != PAINT_MODE) - dat += "
    • Paint Pipes
    • " + dat += "
    • Paint Pipes
    • " else dat += "
    • Paint Pipes
    • " dat += "
    " dat += "Category:
      " if(screen == CATEGORY_ATMOS) - dat += "Atmospherics Disposals
      " + dat += "Atmospherics Disposals
      " else if(screen == CATEGORY_DISPOSALS) - dat += "Atmospherics Disposals
      " + dat += "Atmospherics Disposals
      " var/generated_layer_list = "" var/layers_total = PIPING_LAYER_MAX - PIPING_LAYER_MIN + 1 for(var/iter = PIPING_LAYER_MIN, iter <= layers_total, iter++) if(iter == piping_layer) - generated_layer_list += "[iter]" + generated_layer_list += "[iter]" else - generated_layer_list += "[iter]" + generated_layer_list += "[iter]" dat += "Atmospherics Piping Layer: [generated_layer_list]
      " dat += "
    " @@ -254,7 +254,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list( var/selected="" if(color_name==paint_color) selected = " selected" - color_picker += {""} + color_picker += {""} var/dirsel="

    Direction

    " switch(p_conntype) @@ -276,8 +276,8 @@ GLOBAL_LIST_INIT(RPD_recipes, list( else dirsel+={"

    - - + +

    "} @@ -303,14 +303,14 @@ GLOBAL_LIST_INIT(RPD_recipes, list( else dirsel+={"

    - - + +
    - - + +
    - - + +

    "} if(PIPE_TRINARY) // Manifold @@ -330,11 +330,11 @@ GLOBAL_LIST_INIT(RPD_recipes, list( else dirsel+={"

    - - + +
    - - + +

    "} if(PIPE_TRIN_M) // Mirrored ones @@ -364,17 +364,17 @@ GLOBAL_LIST_INIT(RPD_recipes, list( else dirsel+={"

    - - + +
    - - + +
    - - + +
    - - + +

    "} if(PIPE_UNARY) // Stuff with four directions - includes pumps etc. @@ -393,10 +393,10 @@ GLOBAL_LIST_INIT(RPD_recipes, list( else dirsel+={"

    - - - - + + + +

    "} if(PIPE_QUAD) // Single icon_state (eg 4-way manifolds) @@ -409,7 +409,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list( else dirsel+={"

    - +

    "} @@ -546,13 +546,8 @@ GLOBAL_LIST_INIT(RPD_recipes, list( A = get_turf(user) //make sure what we're clicking is valid for the current mode - var/is_paintable = (p_class == PAINT_MODE && istype(A, /obj/machinery/atmospherics/pipe)) - var/is_consumable = (p_class == EATING_MODE && (istype(A, /obj/item/pipe) || istype(A, /obj/item/pipe_meter) || istype(A, /obj/structure/disposalconstruct))) var/can_make_pipe = ((atmos_piping_mode || p_class == DISPOSALS_MODE) && (isturf(A)) || istype(A, /obj/structure/lattice) || istype(A, /obj/structure/girder)) - if(!is_paintable && !is_consumable && !can_make_pipe) - return ..() - //So that changing the menu settings doesn't affect the pipes already being built. var/queued_p_type = p_type var/queued_p_dir = p_dir @@ -561,6 +556,8 @@ GLOBAL_LIST_INIT(RPD_recipes, list( . = FALSE switch(p_class) //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.paint(paint_colors[paint_color]) @@ -568,6 +565,8 @@ GLOBAL_LIST_INIT(RPD_recipes, list( 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)) @@ -575,14 +574,22 @@ GLOBAL_LIST_INIT(RPD_recipes, list( qdel(A) if(ATMOS_MODE) //Making pipes + if(!can_make_pipe) + return ..() to_chat(user, "You start building a pipe...") playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) if(do_after(user, 2, target = A)) activate() - var/obj/item/pipe/P = new(get_turf(A), queued_p_type, queued_p_dir) + + var/obj/machinery/atmospherics/path = queued_p_type + var/pipe_item_type = initial(path.construction_type) || /obj/item/pipe + + var/obj/item/pipe/P = new pipe_item_type(A, queued_p_type, queued_p_dir) + if(queued_p_flipped) var/obj/item/pipe/trinary/flippable/F = P F.flipped = queued_p_flipped + P.update() P.add_fingerprint(usr) if(!isnull(temp_piping_layer)) @@ -591,6 +598,8 @@ GLOBAL_LIST_INIT(RPD_recipes, list( P.setPipingLayer(piping_layer) if(METER_MODE) //Making pipe meters + if(!can_make_pipe) + return ..() to_chat(user, "You start building a meter...") playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) if(do_after(user, 2, target = A)) @@ -602,6 +611,8 @@ GLOBAL_LIST_INIT(RPD_recipes, list( PM.setAttachLayer(piping_layer) if(DISPOSALS_MODE) //Making disposals pipes + if(!can_make_pipe) + return ..() if(isclosedturf(A)) to_chat(user, "\the [src]'s error light flickers; there's something in the way!") return diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index cd63cb0951..239f59f8b7 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -28,7 +28,7 @@ switch(get_area_type()) if(AREA_SPACE) text += "

    According to the [src.name], you are now in an unclaimed territory.

    \ -

    Mark this place as new area.

    " +

    Mark this place as new area.

    " if(AREA_SPECIAL) text += "

    This place is not noted on the [src.name].

    " return text @@ -69,20 +69,20 @@ var/area/A = get_area() if(get_area_type() == AREA_STATION) . += "

    According to \the [src], you are now in \"[html_encode(A.name)]\".

    " - . += "

    You may make an amendment to the drawing.

    " - . += "

    View wire colour legend

    " + . += "

    You may make an amendment to the drawing.

    " + . += "

    View wire colour legend

    " if(!viewing) - . += "

    View structural data

    " + . += "

    View structural data

    " else - . += "

    Refresh structural data

    " - . += "

    Hide structural data

    " + . += "

    Refresh structural data

    " + . += "

    Hide structural data

    " else if(legend == TRUE) - . += "<< Back" + . += "<< Back" . += view_wire_devices(user); else //legend is a wireset - . += "<< Back" + . += "<< Back" . += view_wire_set(user, legend) var/datum/browser/popup = new(user, "blueprints", "[src]", 700, 500) popup.set_content(.) @@ -169,7 +169,7 @@ /obj/item/areaeditor/blueprints/proc/view_wire_devices(mob/user) var/message = "
    You examine the wire legend.
    " for(var/wireset in GLOB.wire_color_directory) - message += "
    [GLOB.wire_name_directory[wireset]]" + message += "
    [GLOB.wire_name_directory[wireset]]" message += "

    " return message diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm index 04ae5d9508..2527b573d3 100644 --- a/code/game/objects/items/charter.dm +++ b/code/game/objects/items/charter.dm @@ -59,7 +59,7 @@ to_chat(user, "Your name has been sent to your employers for approval.") // Autoapproves after a certain time response_timer_id = addtimer(CALLBACK(src, .proc/rename_station, new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE) - to_chat(GLOB.admins, "CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]") + to_chat(GLOB.admins, "CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]") /obj/item/station_charter/proc/reject_proposed(user) if(!user) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 68e1826719..7b2d730daf 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -144,10 +144,11 @@ ui.open() /obj/item/toy/crayon/spraycan/AltClick(mob/user) - if(has_cap) - is_capped = !is_capped - to_chat(user, "The cap on [src] is now [is_capped ? "on" : "off"].") - update_icon() + if(user.canUseTopic(src, be_close=TRUE)) + if(has_cap) + is_capped = !is_capped + to_chat(user, "The cap on [src] is now [is_capped ? "on" : "off"].") + update_icon() /obj/item/toy/crayon/ui_data() var/list/data = list() diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 578bf16982..244e82ee77 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -167,18 +167,18 @@ GLOBAL_LIST_EMPTY(PDAs) var/dat = "Personal Data Assistant" - dat += "Refresh" + dat += "Refresh" if ((!isnull(cartridge)) && (mode == 0)) - dat += " | Eject [cartridge]" + dat += " | Eject [cartridge]" if (mode) - dat += " | Return" + dat += " | Return" if (mode == 0) dat += "
    " - dat += "
    Toggle Font" - dat += " | Change Color" - dat += " | Toggle Underline" //underline button + dat += "
    Toggle Font" + dat += " | Change Color" + dat += " | Toggle Underline" //underline button dat += "
    " @@ -186,14 +186,14 @@ GLOBAL_LIST_EMPTY(PDAs) if (!owner) dat += "Warning: No owner information entered. Please swipe card.

    " - dat += "Retry" + dat += "Retry" else switch (mode) if (0) dat += "

    PERSONAL DATA ASSISTANT v.1.2

    " dat += "Owner: [owner], [ownjob]
    " - dat += text("ID: [id ? "[id.registered_name], [id.assignment]" : "----------"]") - dat += text("
    [id ? "Update PDA Info" : ""]

    ") + dat += text("ID: [id ? "[id.registered_name], [id.assignment]" : "----------"]") + dat += text("
    [id ? "Update PDA Info" : ""]

    ") dat += "[worldtime2text()]
    " //:[world.time / 100 % 6][world.time / 100 % 10]" dat += "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer+540]" @@ -202,38 +202,38 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "

    General Functions

    " dat += "" if (cartridge.access & CART_ENGINE) dat += "

    Engineering Functions

    " dat += "" if (cartridge.access & CART_MEDICAL) dat += "

    Medical Functions

    " dat += "" if (cartridge.access & CART_SECURITY) dat += "

    Security Functions

    " dat += "" if(cartridge.access & CART_QUARTERMASTER) dat += "

    Quartermaster Functions:

    " dat += "" dat += "" @@ -241,47 +241,47 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "" if (1) dat += "

    Notekeeper V2.2

    " - dat += "Edit
    " + dat += "Edit
    " if(notescanned) dat += "(This is a scanned image, editing it may cause some text formatting to change.)
    " dat += "
    [(!notehtml ? note : notehtml)]" if (2) dat += "

    SpaceMessenger V3.9.6

    " - dat += "Ringer: [silent == 1 ? "Off" : "On"] | " - dat += "Send / Receive: [toff == 1 ? "Off" : "On"] | " - dat += "Set Ringtone | " - dat += "Messages
    " + dat += "Ringer: [silent == 1 ? "Off" : "On"] | " + dat += "Send / Receive: [toff == 1 ? "Off" : "On"] | " + dat += "Set Ringtone | " + dat += "Messages
    " if(cartridge) dat += cartridge.message_header() @@ -295,7 +295,7 @@ GLOBAL_LIST_EMPTY(PDAs) for (var/obj/item/device/pda/P in sortNames(get_viewable_pdas())) if (P == src) continue - dat += "
  • [P]" + dat += "
  • [P]" if(cartridge) dat += cartridge.message_special(P) dat += "
  • " @@ -304,11 +304,11 @@ GLOBAL_LIST_EMPTY(PDAs) if (count == 0) dat += "None detected.
    " else if(cartridge && cartridge.spam_enabled) - dat += "Send To All" + dat += "Send To All" if(21) dat += "

    SpaceMessenger V3.9.6

    " - dat += "Clear Messages" + dat += "Clear Messages" dat += "

    Messages

    " @@ -633,7 +633,7 @@ GLOBAL_LIST_EMPTY(PDAs) tnote += "→ To [multiple ? "Everyone" : msg.recipient]:
    [msg.message][msg.get_photo_ref()]
    " /obj/item/device/pda/proc/show_recieved_message(datum/data_pda_msg/msg,obj/item/device/pda/source) - tnote += "← From [source.owner] ([source.ownjob]):
    [msg.message][msg.get_photo_ref()]
    " + tnote += "← From [source.owner] ([source.ownjob]):
    [msg.message][msg.get_photo_ref()]
    " if (!silent) playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) @@ -651,10 +651,10 @@ GLOBAL_LIST_EMPTY(PDAs) var/hrefstart var/hrefend if (isAI(L)) - hrefstart = "" + hrefstart = "" hrefend = "" - to_chat(L, "[icon2html(src)] Message from [hrefstart][source.owner] ([source.ownjob])[hrefend], \"[msg.message]\"[msg.get_photo_ref()] (Reply)") + to_chat(L, "[icon2html(src)] Message from [hrefstart][source.owner] ([source.ownjob])[hrefend], \"[msg.message]\"[msg.get_photo_ref()] (Reply)") update_icon() add_overlay(icon_alert) diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index 92acb36982..d2156beec6 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -229,20 +229,20 @@ menu = "

    Remote Signaling System

    " menu += {" -Send Signal
    +Send Signal
    Frequency: -- -- +- +- [format_frequency(S.frequency)] -+ -+
    ++ ++

    Code: -- -- +- +- [S.code] -+ -+
    "} ++ ++
    "} if (41) //crew manifest menu = "

    Crew Manifest

    " @@ -256,15 +256,15 @@ Code: if (42) //status displays menu = "

    Station Status Display Interlink

    " - menu += "\[ Clear \]
    " - menu += "\[ Shuttle ETA \]
    " - menu += "\[ Message \]" - menu += "
    " - menu += "\[ Alert: None |" - menu += " Red Alert |" - menu += " Lockdown |" - menu += " Biohazard \]
    " + menu += "\[ Clear \]
    " + menu += "\[ Shuttle ETA \]
    " + menu += "\[ Message \]" + menu += "
    " + menu += "\[ Alert: None |" + menu += " Red Alert |" + menu += " Lockdown |" + menu += " Biohazard \]
    " if (43) menu = "

    Power Monitors - Please select one


    " @@ -288,7 +288,7 @@ Code: var/count = 0 for(var/obj/machinery/computer/monitor/pMon in powermonitors) count++ - menu += "[pMon]
    " + menu += "[pMon]
    " menu += "
    " @@ -323,7 +323,7 @@ Code: menu = "

    Medical Record List

    " if(GLOB.data_core.general) for(var/datum/data/record/R in sortRecord(GLOB.data_core.general)) - menu += "[R.fields["id"]]: [R.fields["name"]]
    " + menu += "
    [R.fields["id"]]: [R.fields["name"]]
    " menu += "
    " if(441) menu = "

    Medical Record

    " @@ -366,7 +366,7 @@ Code: menu = "

    Security Record List

    " if(GLOB.data_core.general) for (var/datum/data/record/R in sortRecord(GLOB.data_core.general)) - menu += "
    [R.fields["id"]]: [R.fields["name"]]
    " + menu += "
    [R.fields["id"]]: [R.fields["name"]]
    " menu += "
    " if(451) @@ -521,11 +521,11 @@ Code: else menu += "ERROR: Unable to determine current location." - menu += "

    Refresh GPS Locator" + menu += "

    Refresh GPS Locator" if (53) // Newscaster menu = "

    Newscaster Access

    " - menu += "
    Current Newsfeed: [current_channel ? current_channel : "None"]
    " + menu += "
    Current Newsfeed: [current_channel ? current_channel : "None"]
    " var/datum/newscaster/feed_channel/current for(var/datum/newscaster/feed_channel/chan in GLOB.news_network.network_channels) if (chan.channel_name == current_channel) @@ -543,7 +543,7 @@ Code: i++ for(var/datum/newscaster/feed_comment/comment in msg.comments) menu +="[comment.body]
    [comment.author] [comment.time_stamp]
    " - menu += "
    Post Message" + menu += "
    Post Message" if (54) // Beepsky, Medibot, Floorbot, and Cleanbot access menu = "

    Bots Interlink

    " @@ -673,7 +673,7 @@ Code: // menu = "Interlink Error - Please reinsert cartridge." // return if(active_bot) - menu += "[active_bot]
    Status: (refresh)
    " + menu += "[active_bot]
    Status: (refresh)
    " menu += "Model: [active_bot.model]
    " menu += "Location: [get_area(active_bot)]
    " menu += "Mode: [active_bot.get_mode()]" @@ -682,7 +682,7 @@ Code: if(active_bot.paicard && active_bot.paicard.pai) menu += "[active_bot.paicard.pai.name]" if(active_bot.bot_core.allowed(usr)) - menu += " (eject)" + menu += " (eject)" else menu += "none" @@ -690,35 +690,35 @@ Code: if(active_bot.bot_type == MULE_BOT) var/mob/living/simple_animal/bot/mulebot/MULE = active_bot var/atom/Load = MULE.load - menu += "
    Current Load: [ !Load ? "none" : "[Load.name] (unload)" ]
    " - menu += "Destination: [MULE.destination ? MULE.destination : "None"] (set)
    " - menu += "Set ID: [MULE.suffix] Modify
    " + menu += "
    Current Load: [ !Load ? "none" : "[Load.name] (unload)" ]
    " + menu += "Destination: [MULE.destination ? MULE.destination : "None"] (set)
    " + menu += "Set ID: [MULE.suffix] Modify
    " menu += "Power: [MULE.cell ? MULE.cell.percent() : 0]%
    " menu += "Home: [!MULE.home_destination ? "none" : MULE.home_destination ]
    " - menu += "Delivery Reporting: [MULE.report_delivery ? "(On)": "(Off)"]
    " - menu += "Auto Return Home: [MULE.auto_return ? "(On)": "(Off)"]
    " - menu += "Auto Pickup Crate: [MULE.auto_pickup ? "(On)": "(Off)"]

    " //Hue. + menu += "Delivery Reporting: [MULE.report_delivery ? "(On)": "(Off)"]
    " + menu += "Auto Return Home: [MULE.auto_return ? "(On)": "(Off)"]
    " + menu += "Auto Pickup Crate: [MULE.auto_pickup ? "(On)": "(Off)"]

    " //Hue. - menu += "\[Stop\] " - menu += "\[Proceed\] " - menu += "\[Return Home\]
    " + menu += "\[Stop\] " + menu += "\[Proceed\] " + menu += "\[Return Home\]
    " else - menu += "
    \[Stop Patrol\] " //patrolon - menu += "\[Start Patrol\] " //patroloff - menu += "\[Summon Bot\]
    " //summon + menu += "
    \[Stop Patrol\] " //patrolon + menu += "\[Start Patrol\] " //patroloff + menu += "\[Summon Bot\]
    " //summon menu += "Keep an ID inserted to upload access codes upon summoning." - menu += "
    Return to bot list" + menu += "
    Return to bot list" else - menu += "
    Scan for active bots

    " + menu += "
    Scan for active bots

    " var/turf/current_turf = get_turf(src) var/zlevel = current_turf.z var/botcount = 0 for(Bot in GLOB.living_mob_list) //Git da botz if(!Bot.on || Bot.z != zlevel || Bot.remote_disabled || !(bot_access_flags & Bot.bot_type)) //Only non-emagged bots on the same Z-level are detected! continue //Also, the PDA must have access to the bot type. - menu += "[Bot.name] ([Bot.get_mode()])
    " + menu += "
    [Bot.name] ([Bot.get_mode()])
    " botcount++ if(!botcount) //No bots at all? Lame. menu += "No bots found.
    " diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm index a514270618..ce7f85b825 100644 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -11,7 +11,7 @@ /obj/item/cartridge/virus/message_special(obj/item/device/pda/target) if (!istype(loc, /obj/item/device/pda)) return "" //Sanity check, this shouldn't be possible. - return " (
    *Send Virus*)" + return " (*Send Virus*)" /obj/item/cartridge/virus/special(mob/living/user, list/params) var/obj/item/device/pda/P = locate(params["target"])//Leaving it alone in case it may do something useful, I guess. diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 62b8c9ae4e..c84a3fada5 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -1,297 +1,296 @@ - -#define BUGMODE_LIST 0 -#define BUGMODE_MONITOR 1 -#define BUGMODE_TRACK 2 - - - -/obj/item/device/camera_bug - name = "camera bug" - desc = "For illicit snooping through the camera network." - icon = 'icons/obj/device.dmi' - icon_state = "camera_bug" - w_class = WEIGHT_CLASS_TINY - item_state = "camera_bug" - throw_speed = 4 - throw_range = 20 - origin_tech = "syndicate=1;engineering=3" - flags_1 = NOBLUDGEON_1 - - var/obj/machinery/camera/current = null - - var/last_net_update = 0 - var/list/bugged_cameras = list() - - var/track_mode = BUGMODE_LIST - var/last_tracked = 0 - var/refresh_interval = 50 - - var/tracked_name = null - var/atom/tracking = null - - var/last_found = null - var/last_seen = null - -/obj/item/device/camera_bug/New() - ..() - START_PROCESSING(SSobj, src) - -/obj/item/device/camera_bug/Destroy() - get_cameras() - for(var/cam_tag in bugged_cameras) - var/obj/machinery/camera/camera = bugged_cameras[cam_tag] - if(camera.bug == src) - camera.bug = null - bugged_cameras = list() - if(tracking) - tracking = null - return ..() - - -/obj/item/device/camera_bug/interact(mob/user = usr) - var/datum/browser/popup = new(user, "camerabug","Camera Bug",nref=src) - popup.set_content(menu(get_cameras())) - popup.open() - -/obj/item/device/camera_bug/attack_self(mob/user) - user.set_machine(src) - interact(user) - -/obj/item/device/camera_bug/check_eye(mob/user) - if ( loc != user || user.incapacitated() || user.eye_blind || !current ) - user.unset_machine() - return 0 - var/turf/T = get_turf(user.loc) - if(T.z != current.z || !current.can_use()) - to_chat(user, "[src] has lost the signal.") - current = null - user.unset_machine() - return 0 - return 1 -/obj/item/device/camera_bug/on_unset_machine(mob/user) - user.reset_perspective(null) - -/obj/item/device/camera_bug/proc/get_cameras() - if( world.time > (last_net_update + 100)) - bugged_cameras = list() - for(var/obj/machinery/camera/camera in GLOB.cameranet.cameras) - if(camera.stat || !camera.can_use()) - continue - if(length(list("SS13","MINE")&camera.network)) - bugged_cameras[camera.c_tag] = camera - sortList(bugged_cameras) - return bugged_cameras - - -/obj/item/device/camera_bug/proc/menu(list/cameras) - if(!cameras || !cameras.len) - return "No bugged cameras found." - - var/html - switch(track_mode) - if(BUGMODE_LIST) - html = "

    Select a camera:

    \[Cancel camera view\]
    " - for(var/entry in cameras) - var/obj/machinery/camera/C = cameras[entry] - var/functions = "" - if(C.bug == src) - functions = " - \[Monitor\]\[Disable\]" - else - functions = " - \[Monitor\]" - html += "" - - if(BUGMODE_MONITOR) - if(current) - html = "Analyzing Camera '[current.c_tag]' \[Select Camera\]
    " - html += camera_report() - else - track_mode = BUGMODE_LIST - return .(cameras) - if(BUGMODE_TRACK) - if(tracking) - html = "Tracking '[tracked_name]' \[Cancel Tracking\]\[Cancel camera view\]
    " - if(last_found) - var/time_diff = round((world.time - last_seen) / 150) - var/obj/machinery/camera/C = bugged_cameras[last_found] - var/outstring - if(C) - outstring = "[last_found]" - else - outstring = last_found - if(!time_diff) - html += "Last seen near [outstring] (now)
    " - else - // 15 second intervals ~ 1/4 minute - var/m = round(time_diff/4) - var/s = (time_diff - 4*m) * 15 - if(!s) - s = "00" - html += "Last seen near [outstring] ([m]:[s] minute\s ago)
    " - if( C && (C.bug == src)) //Checks to see if the camera has a bug - html += "\[Disable\]" - - else - html += "Not yet seen." - else - track_mode = BUGMODE_LIST - return .(cameras) - return html - -/obj/item/device/camera_bug/proc/get_seens() - if(current && current.can_use()) - var/list/seen = current.can_see() - return seen - -/obj/item/device/camera_bug/proc/camera_report() - // this should only be called if current exists - var/dat = "" - var/list/seen = get_seens() - if(seen && seen.len >= 1) - var/list/names = list() - for(var/obj/singularity/S in seen) // god help you if you see more than one - if(S.name in names) - names[S.name]++ - dat += "[S.name] ([names[S.name]])" - else - names[S.name] = 1 - dat += "[S.name]" - var/stage = round(S.current_size / 2)+1 - dat += " (Stage [stage])" - dat += " \[Track\]
    " - - for(var/obj/mecha/M in seen) - if(M.name in names) - names[M.name]++ - dat += "[M.name] ([names[M.name]])" - else - names[M.name] = 1 - dat += "[M.name]" - dat += " \[Track\]
    " - - - for(var/mob/living/M in seen) - if(M.name in names) - names[M.name]++ - dat += "[M.name] ([names[M.name]])" - else - names[M.name] = 1 - dat += "[M.name]" - if(M.buckled && !M.lying) - dat += " (Sitting)" - if(M.lying) - dat += " (Laying down)" - dat += " \[Track\]
    " - if(length(dat) == 0) - dat += "No motion detected." - return dat - else - return "Camera Offline
    " - -/obj/item/device/camera_bug/Topic(href,list/href_list) - if(usr != loc) - usr.unset_machine() - usr << browse(null, "window=camerabug") - return - usr.set_machine(src) - if("mode" in href_list) - track_mode = text2num(href_list["mode"]) - if("monitor" in href_list) - //You can't locate on a list with keys - var/list/cameras = flatten_list(bugged_cameras) - var/obj/machinery/camera/C = locate(href_list["monitor"]) in cameras - if(C && istype(C)) - track_mode = BUGMODE_MONITOR - current = C - usr.reset_perspective(null) - interact() - if("track" in href_list) - var/list/seen = get_seens() - if(seen && seen.len >= 1) - var/atom/A = locate(href_list["track"]) in seen - if(A && istype(A)) - tracking = A - tracked_name = A.name - last_found = current.c_tag - last_seen = world.time - track_mode = BUGMODE_TRACK - if("emp" in href_list) - //You can't locate on a list with keys - var/list/cameras = flatten_list(bugged_cameras) - var/obj/machinery/camera/C = locate(href_list["emp"]) in cameras - if(C && istype(C) && C.bug == src) - C.emp_act(EMP_HEAVY) - C.bug = null - bugged_cameras -= C.c_tag - interact() - return - if("close" in href_list) - usr.unset_machine() - current = null - return - if("view" in href_list) - //You can't locate on a list with keys - var/list/cameras = flatten_list(bugged_cameras) - var/obj/machinery/camera/C = locate(href_list["view"]) in cameras - if(C && istype(C)) - if(!C.can_use()) - to_chat(usr, "Something's wrong with that camera! You can't get a feed.") - return - var/turf/T = get_turf(loc) - if(!T || C.z != T.z) - to_chat(usr, "You can't get a signal!") - return - current = C - spawn(6) - if(src.check_eye(usr)) - usr.reset_perspective(C) - interact() - else - usr.unset_machine() - usr << browse(null, "window=camerabug") - return - else - usr.unset_machine() - - interact() - -/obj/item/device/camera_bug/process() - if(track_mode == BUGMODE_LIST || (world.time < (last_tracked + refresh_interval))) - return - last_tracked = world.time - if(track_mode == BUGMODE_TRACK ) // search for user - // Note that it will be tricked if your name appears to change. - // This is not optimal but it is better than tracking you relentlessly despite everything. - if(!tracking) - src.updateSelfDialog() - return - - if(tracking.name != tracked_name) // Hiding their identity, tricksy - var/mob/M = tracking - if(istype(M)) - if(!(tracked_name == "Unknown" && findtext(tracking.name,"Unknown"))) // we saw then disguised before - if(!(tracked_name == M.real_name && findtext(tracking.name,M.real_name))) // or they're still ID'd - src.updateSelfDialog()//But if it's neither of those cases - return // you won't find em on the cameras - else - src.updateSelfDialog() - return - - var/list/tracking_cams = list() - var/list/b_cams = get_cameras() - for(var/entry in b_cams) - tracking_cams += b_cams[entry] - var/list/target_region = view(tracking) - - for(var/obj/machinery/camera/C in (target_region & tracking_cams)) - if(!can_see(C,tracking)) // target may have xray, that doesn't make them visible to cameras - continue - if(C.can_use()) - last_found = C.c_tag - last_seen = world.time - break - src.updateSelfDialog() - - -#undef BUGMODE_LIST -#undef BUGMODE_MONITOR -#undef BUGMODE_TRACK +#define BUGMODE_LIST 0 +#define BUGMODE_MONITOR 1 +#define BUGMODE_TRACK 2 + + + +/obj/item/device/camera_bug + name = "camera bug" + desc = "For illicit snooping through the camera network." + icon = 'icons/obj/device.dmi' + icon_state = "camera_bug" + w_class = WEIGHT_CLASS_TINY + item_state = "camera_bug" + throw_speed = 4 + throw_range = 20 + origin_tech = "syndicate=1;engineering=3" + flags_1 = NOBLUDGEON_1 + + var/obj/machinery/camera/current = null + + var/last_net_update = 0 + var/list/bugged_cameras = list() + + var/track_mode = BUGMODE_LIST + var/last_tracked = 0 + var/refresh_interval = 50 + + var/tracked_name = null + var/atom/tracking = null + + var/last_found = null + var/last_seen = null + +/obj/item/device/camera_bug/New() + ..() + START_PROCESSING(SSobj, src) + +/obj/item/device/camera_bug/Destroy() + get_cameras() + for(var/cam_tag in bugged_cameras) + var/obj/machinery/camera/camera = bugged_cameras[cam_tag] + if(camera.bug == src) + camera.bug = null + bugged_cameras = list() + if(tracking) + tracking = null + return ..() + + +/obj/item/device/camera_bug/interact(mob/user = usr) + var/datum/browser/popup = new(user, "camerabug","Camera Bug",nref=src) + popup.set_content(menu(get_cameras())) + popup.open() + +/obj/item/device/camera_bug/attack_self(mob/user) + user.set_machine(src) + interact(user) + +/obj/item/device/camera_bug/check_eye(mob/user) + if ( loc != user || user.incapacitated() || user.eye_blind || !current ) + user.unset_machine() + return 0 + var/turf/T = get_turf(user.loc) + if(T.z != current.z || !current.can_use()) + to_chat(user, "[src] has lost the signal.") + current = null + user.unset_machine() + return 0 + return 1 +/obj/item/device/camera_bug/on_unset_machine(mob/user) + user.reset_perspective(null) + +/obj/item/device/camera_bug/proc/get_cameras() + if( world.time > (last_net_update + 100)) + bugged_cameras = list() + for(var/obj/machinery/camera/camera in GLOB.cameranet.cameras) + if(camera.stat || !camera.can_use()) + continue + if(length(list("SS13","MINE")&camera.network)) + bugged_cameras[camera.c_tag] = camera + sortList(bugged_cameras) + return bugged_cameras + + +/obj/item/device/camera_bug/proc/menu(list/cameras) + if(!cameras || !cameras.len) + return "No bugged cameras found." + + var/html + switch(track_mode) + if(BUGMODE_LIST) + html = "

    Select a camera:

    \[Cancel camera view\]
    [entry][functions]
    " + for(var/entry in cameras) + var/obj/machinery/camera/C = cameras[entry] + var/functions = "" + if(C.bug == src) + functions = " - \[Monitor\]\[Disable\]" + else + functions = " - \[Monitor\]" + html += "" + + if(BUGMODE_MONITOR) + if(current) + html = "Analyzing Camera '[current.c_tag]' \[Select Camera\]
    " + html += camera_report() + else + track_mode = BUGMODE_LIST + return .(cameras) + if(BUGMODE_TRACK) + if(tracking) + html = "Tracking '[tracked_name]' \[Cancel Tracking\]\[Cancel camera view\]
    " + if(last_found) + var/time_diff = round((world.time - last_seen) / 150) + var/obj/machinery/camera/C = bugged_cameras[last_found] + var/outstring + if(C) + outstring = "[last_found]" + else + outstring = last_found + if(!time_diff) + html += "Last seen near [outstring] (now)
    " + else + // 15 second intervals ~ 1/4 minute + var/m = round(time_diff/4) + var/s = (time_diff - 4*m) * 15 + if(!s) + s = "00" + html += "Last seen near [outstring] ([m]:[s] minute\s ago)
    " + if( C && (C.bug == src)) //Checks to see if the camera has a bug + html += "\[Disable\]" + + else + html += "Not yet seen." + else + track_mode = BUGMODE_LIST + return .(cameras) + return html + +/obj/item/device/camera_bug/proc/get_seens() + if(current && current.can_use()) + var/list/seen = current.can_see() + return seen + +/obj/item/device/camera_bug/proc/camera_report() + // this should only be called if current exists + var/dat = "" + var/list/seen = get_seens() + if(seen && seen.len >= 1) + var/list/names = list() + for(var/obj/singularity/S in seen) // god help you if you see more than one + if(S.name in names) + names[S.name]++ + dat += "[S.name] ([names[S.name]])" + else + names[S.name] = 1 + dat += "[S.name]" + var/stage = round(S.current_size / 2)+1 + dat += " (Stage [stage])" + dat += " \[Track\]
    " + + for(var/obj/mecha/M in seen) + if(M.name in names) + names[M.name]++ + dat += "[M.name] ([names[M.name]])" + else + names[M.name] = 1 + dat += "[M.name]" + dat += " \[Track\]
    " + + + for(var/mob/living/M in seen) + if(M.name in names) + names[M.name]++ + dat += "[M.name] ([names[M.name]])" + else + names[M.name] = 1 + dat += "[M.name]" + if(M.buckled && !M.lying) + dat += " (Sitting)" + if(M.lying) + dat += " (Laying down)" + dat += " \[Track\]
    " + if(length(dat) == 0) + dat += "No motion detected." + return dat + else + return "Camera Offline
    " + +/obj/item/device/camera_bug/Topic(href,list/href_list) + if(usr != loc) + usr.unset_machine() + usr << browse(null, "window=camerabug") + return + usr.set_machine(src) + if("mode" in href_list) + track_mode = text2num(href_list["mode"]) + if("monitor" in href_list) + //You can't locate on a list with keys + var/list/cameras = flatten_list(bugged_cameras) + var/obj/machinery/camera/C = locate(href_list["monitor"]) in cameras + if(C && istype(C)) + track_mode = BUGMODE_MONITOR + current = C + usr.reset_perspective(null) + interact() + if("track" in href_list) + var/list/seen = get_seens() + if(seen && seen.len >= 1) + var/atom/A = locate(href_list["track"]) in seen + if(A && istype(A)) + tracking = A + tracked_name = A.name + last_found = current.c_tag + last_seen = world.time + track_mode = BUGMODE_TRACK + if("emp" in href_list) + //You can't locate on a list with keys + var/list/cameras = flatten_list(bugged_cameras) + var/obj/machinery/camera/C = locate(href_list["emp"]) in cameras + if(C && istype(C) && C.bug == src) + C.emp_act(EMP_HEAVY) + C.bug = null + bugged_cameras -= C.c_tag + interact() + return + if("close" in href_list) + usr.unset_machine() + current = null + return + if("view" in href_list) + //You can't locate on a list with keys + var/list/cameras = flatten_list(bugged_cameras) + var/obj/machinery/camera/C = locate(href_list["view"]) in cameras + if(C && istype(C)) + if(!C.can_use()) + to_chat(usr, "Something's wrong with that camera! You can't get a feed.") + return + var/turf/T = get_turf(loc) + if(!T || C.z != T.z) + to_chat(usr, "You can't get a signal!") + return + current = C + spawn(6) + if(src.check_eye(usr)) + usr.reset_perspective(C) + interact() + else + usr.unset_machine() + usr << browse(null, "window=camerabug") + return + else + usr.unset_machine() + + interact() + +/obj/item/device/camera_bug/process() + if(track_mode == BUGMODE_LIST || (world.time < (last_tracked + refresh_interval))) + return + last_tracked = world.time + if(track_mode == BUGMODE_TRACK ) // search for user + // Note that it will be tricked if your name appears to change. + // This is not optimal but it is better than tracking you relentlessly despite everything. + if(!tracking) + src.updateSelfDialog() + return + + if(tracking.name != tracked_name) // Hiding their identity, tricksy + var/mob/M = tracking + if(istype(M)) + if(!(tracked_name == "Unknown" && findtext(tracking.name,"Unknown"))) // we saw then disguised before + if(!(tracked_name == M.real_name && findtext(tracking.name,M.real_name))) // or they're still ID'd + src.updateSelfDialog()//But if it's neither of those cases + return // you won't find em on the cameras + else + src.updateSelfDialog() + return + + var/list/tracking_cams = list() + var/list/b_cams = get_cameras() + for(var/entry in b_cams) + tracking_cams += b_cams[entry] + var/list/target_region = view(tracking) + + for(var/obj/machinery/camera/C in (target_region & tracking_cams)) + if(!can_see(C,tracking)) // target may have xray, that doesn't make them visible to cameras + continue + if(C.can_use()) + last_found = C.c_tag + last_seen = world.time + break + src.updateSelfDialog() + + +#undef BUGMODE_LIST +#undef BUGMODE_MONITOR +#undef BUGMODE_TRACK diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 67618787b2..095e021458 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -29,30 +29,30 @@ var/dat = "Personal AI Device
    " if(pai) if(!pai.master_dna || !pai.master) - dat += "Imprint Master DNA
    " + dat += "Imprint Master DNA
    " dat += "Installed Personality: [pai.name]
    " dat += "Prime directive:
    [pai.laws.zeroth]
    " for(var/slaws in pai.laws.supplied) dat += "Additional directives:
    [slaws]
    " - dat += "Configure Directives
    " + dat += "Configure Directives
    " dat += "
    " dat += "

    Device Settings


    " if(pai.radio) dat += "Radio Uplink
    " - dat += "Transmit: [(pai.radio.wires.is_cut(WIRE_TX)) ? "Disabled" : "Enabled"]
    " - dat += "Receive: [(pai.radio.wires.is_cut(WIRE_RX)) ? "Disabled" : "Enabled"]
    " + dat += "Transmit: [(pai.radio.wires.is_cut(WIRE_TX)) ? "Disabled" : "Enabled"]
    " + dat += "Receive: [(pai.radio.wires.is_cut(WIRE_RX)) ? "Disabled" : "Enabled"]
    " else dat += "Radio Uplink
    " dat += "Radio firmware not loaded. Please install a pAI personality to load firmware.
    " if(ishuman(user)) var/mob/living/carbon/human/H = user if(H.real_name == pai.master || H.dna.unique_enzymes == pai.master_dna) - dat += "\[[pai.canholo? "Disable" : "Enable"] holomatrix projectors\]
    " - dat += "\[Wipe current pAI personality\]
    " + dat += "\[[pai.canholo? "Disable" : "Enable"] holomatrix projectors\]
    " + dat += "\[Wipe current pAI personality\]
    " else dat += "No personality installed.
    " dat += "Searching for a personality... Press view available personalities to notify potential candidates." - dat += "\[View available personalities\]
    " + dat += "\[View available personalities\]
    " user << browse(dat, "window=paicard") onclose(user, "paicard") return diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 108c561fc1..19226e5d9a 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -1,225 +1,223 @@ -/obj/item/device/electropack - name = "electropack" - desc = "Dance my monkeys! DANCE!!!" - icon = 'icons/obj/radio.dmi' - icon_state = "electropack0" - item_state = "electropack" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = SLOT_BACK - w_class = WEIGHT_CLASS_HUGE - materials = list(MAT_METAL=10000, MAT_GLASS=2500) - var/on = TRUE - var/code = 2 - var/frequency = 1449 - var/shock_cooldown = 0 - -/obj/item/device/electropack/suicide_act(mob/user) - user.visible_message("[user] hooks [user.p_them()]self to the electropack and spams the trigger! It looks like [user.p_theyre()] trying to commit suicide!") - return (FIRELOSS) - -/obj/item/device/electropack/Initialize() - . = ..() - SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) - -/obj/item/device/electropack/Destroy() - SSradio.remove_object(src, frequency) - return ..() - -/obj/item/device/electropack/attack_hand(mob/user) - if(iscarbon(user)) - var/mob/living/carbon/C = user - if(src == C.back) - to_chat(user, "You need help taking this off!") - return - ..() - -/obj/item/device/electropack/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/clothing/head/helmet)) - var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user ) - A.icon = 'icons/obj/assemblies.dmi' - - if(!user.transferItemToLoc(W, A)) - to_chat(user, "[W] is stuck to your hand, you cannot attach it to [src]!") - return - W.master = A - A.part1 = W - - user.transferItemToLoc(src, A, TRUE) - master = A - A.part2 = src - - user.put_in_hands(A) - A.add_fingerprint(user) - if(src.flags_1 & NODROP_1) - A.flags_1 |= NODROP_1 - else - return ..() - -/obj/item/device/electropack/Topic(href, href_list) - //..() - var/mob/living/carbon/C = usr - if(usr.stat || usr.restrained() || C.back == src) - return - if((ishuman(usr) && usr.contents.Find(src)) || usr.contents.Find(master) || (in_range(src, usr) && isturf(loc))) - usr.set_machine(src) - if(href_list["freq"]) - SSradio.remove_object(src, frequency) - frequency = sanitize_frequency(frequency + text2num(href_list["freq"])) - SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) - else - if(href_list["code"]) - code += text2num(href_list["code"]) - code = round(code) - code = min(100, code) - code = max(1, code) - else - if(href_list["power"]) - on = !( on ) - icon_state = "electropack[on]" - if(!( master )) - if(ismob(loc)) - attack_self(loc) - else - for(var/mob/M in viewers(1, src)) - if(M.client) - attack_self(M) - else - if(ismob(master.loc)) - attack_self(master.loc) - else - for(var/mob/M in viewers(1, master)) - if(M.client) - attack_self(M) - else - usr << browse(null, "window=radio") - return - return - -/obj/item/device/electropack/receive_signal(datum/signal/signal) - if(!signal || signal.encryption != code) - return - - if(isliving(loc) && on) - if(shock_cooldown != 0) - return - shock_cooldown = 1 - spawn(100) - shock_cooldown = 0 - var/mob/living/L = loc - step(L, pick(GLOB.cardinals)) - - to_chat(L, "You feel a sharp shock!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, L) - s.start() - - L.Knockdown(100) - - if(master) - master.receive_signal() - return - -/obj/item/device/electropack/attack_self(mob/user) - - if(!ishuman(user)) - return - user.set_machine(src) - var/dat = {"Turned [on ? "On" : "Off"] - -Toggle
    -Frequency/Code for electropack:
    -Frequency: -- -- [format_frequency(frequency)] -+ -+
    - -Code: -- -- [code] -+ -+
    -
    "} - user << browse(dat, "window=radio") - onclose(user, "radio") - return - -/obj/item/device/electropack/shockcollar - name = "shock collar" - desc = "A reinforced metal collar. It seems to have some form of wiring near the front. Strange.." - icon = 'icons/obj/clothing/neck.dmi' - icon_state = "shockcollar" - item_state = "shockcollar" - body_parts_covered = NECK - slot_flags = SLOT_NECK - w_class = WEIGHT_CLASS_SMALL - strip_delay = 60 - equip_delay_other = 60 - materials = list(MAT_METAL=5000, MAT_GLASS=2000) - var/tagname = null - -/obj/item/device/electropack/shockcollar/attack_hand(mob/user) - if(loc == user) - if(slot_flags == SLOT_NECK) - if(user.get_item_by_slot(slot_neck)) - to_chat(user, "The collar is fastened tight! You'll need help taking this off!") - return - ..() - -/obj/item/device/electropack/shockcollar/receive_signal(datum/signal/signal) - if(!signal || signal.encryption != code) - return - - if(isliving(loc) && on) - if(shock_cooldown != 0) - return - shock_cooldown = 1 - spawn(100) - shock_cooldown = 0 - var/mob/living/L = loc - step(L, pick(GLOB.cardinals)) - - to_chat(L, "You feel a sharp shock from the collar!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, L) - s.start() - - L.Knockdown(100) - - if(master) - master.receive_signal() - return - -/obj/item/device/electropack/shockcollar/attack_self(mob/user) //Turns out can't fully source this from the parent item, spritepath gets confused if power toggled. Will come back to this when I know how to code better and readd powertoggle.. - var/option = "Change Name" - option = input(user, "What do you want to do?", "[src]", option) as null|anything in list("Change Name", "Change Frequency") - switch(option) - if("Change Name") - var/t = input(user, "Would you like to change the name on the tag?", "Name your new pet", tagname ? tagname : "Spot") as null|text - if(t) - tagname = copytext(sanitize(t), 1, MAX_NAME_LEN) - name = "[initial(name)] - [tagname]" - if("Change Frequency") - if(!ishuman(user)) - return - user.set_machine(src) - var/dat = {"
    - Frequency/Code for shock collar:
    - Frequency: - - - - [format_frequency(frequency)] - + - +
    - - Code: - - - - [code] - + - +
    -
    "} - - user << browse(dat, "window=radio") - onclose(user, "radio") - return - +/obj/item/device/electropack + name = "electropack" + desc = "Dance my monkeys! DANCE!!!" + icon = 'icons/obj/radio.dmi' + icon_state = "electropack0" + item_state = "electropack" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + flags_1 = CONDUCT_1 + slot_flags = SLOT_BACK + w_class = WEIGHT_CLASS_HUGE + materials = list(MAT_METAL=10000, MAT_GLASS=2500) + var/on = TRUE + var/code = 2 + var/frequency = 1449 + var/shock_cooldown = 0 + +/obj/item/device/electropack/suicide_act(mob/user) + user.visible_message("[user] hooks [user.p_them()]self to the electropack and spams the trigger! It looks like [user.p_theyre()] trying to commit suicide!") + return (FIRELOSS) + +/obj/item/device/electropack/Initialize() + . = ..() + SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) + +/obj/item/device/electropack/Destroy() + SSradio.remove_object(src, frequency) + return ..() + +/obj/item/device/electropack/attack_hand(mob/user) + if(iscarbon(user)) + var/mob/living/carbon/C = user + if(src == C.back) + to_chat(user, "You need help taking this off!") + return + ..() + +/obj/item/device/electropack/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/clothing/head/helmet)) + var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user ) + A.icon = 'icons/obj/assemblies.dmi' + + if(!user.transferItemToLoc(W, A)) + to_chat(user, "[W] is stuck to your hand, you cannot attach it to [src]!") + return + W.master = A + A.part1 = W + + user.transferItemToLoc(src, A, TRUE) + master = A + A.part2 = src + + user.put_in_hands(A) + A.add_fingerprint(user) + if(src.flags_1 & NODROP_1) + A.flags_1 |= NODROP_1 + else + return ..() + +/obj/item/device/electropack/Topic(href, href_list) + //..() + var/mob/living/carbon/C = usr + if(usr.stat || usr.restrained() || C.back == src) + return + if((ishuman(usr) && usr.contents.Find(src)) || usr.contents.Find(master) || (in_range(src, usr) && isturf(loc))) + usr.set_machine(src) + if(href_list["freq"]) + SSradio.remove_object(src, frequency) + frequency = sanitize_frequency(frequency + text2num(href_list["freq"])) + SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) + else + if(href_list["code"]) + code += text2num(href_list["code"]) + code = round(code) + code = min(100, code) + code = max(1, code) + else + if(href_list["power"]) + on = !( on ) + icon_state = "electropack[on]" + if(!( master )) + if(ismob(loc)) + attack_self(loc) + else + for(var/mob/M in viewers(1, src)) + if(M.client) + attack_self(M) + else + if(ismob(master.loc)) + attack_self(master.loc) + else + for(var/mob/M in viewers(1, master)) + if(M.client) + attack_self(M) + else + usr << browse(null, "window=radio") + return + return + +/obj/item/device/electropack/receive_signal(datum/signal/signal) + if(!signal || signal.encryption != code) + return + + if(isliving(loc) && on) + if(shock_cooldown != 0) + return + shock_cooldown = 1 + spawn(100) + shock_cooldown = 0 + var/mob/living/L = loc + step(L, pick(GLOB.cardinals)) + + to_chat(L, "You feel a sharp shock!") + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(3, 1, L) + s.start() + + L.Knockdown(100) + + if(master) + master.receive_signal() + return + +/obj/item/device/electropack/attack_self(mob/user) + + if(!ishuman(user)) + return + user.set_machine(src) + var/dat = {"Turned [on ? "On" : "Off"] - +Toggle
    +Frequency/Code for electropack:
    +Frequency: +- +- [format_frequency(frequency)] ++ ++
    + +Code: +- +- [code] ++ ++
    +
    "} + user << browse(dat, "window=radio") + onclose(user, "radio") + return + +/obj/item/device/electropack/shockcollar + name = "shock collar" + desc = "A reinforced metal collar. It seems to have some form of wiring near the front. Strange.." + icon = 'icons/obj/clothing/neck.dmi' + icon_state = "shockcollar" + item_state = "shockcollar" + body_parts_covered = NECK + slot_flags = SLOT_NECK + w_class = WEIGHT_CLASS_SMALL + strip_delay = 60 + equip_delay_other = 60 + materials = list(MAT_METAL=5000, MAT_GLASS=2000) + var/tagname = null + +/obj/item/device/electropack/shockcollar/attack_hand(mob/user) + if(loc == user) + if(slot_flags == SLOT_NECK) + if(user.get_item_by_slot(slot_neck)) + to_chat(user, "The collar is fastened tight! You'll need help taking this off!") + return + ..() + +/obj/item/device/electropack/shockcollar/receive_signal(datum/signal/signal) + if(!signal || signal.encryption != code) + return + + if(isliving(loc) && on) + if(shock_cooldown != 0) + return + shock_cooldown = 1 + spawn(100) + shock_cooldown = 0 + var/mob/living/L = loc + step(L, pick(GLOB.cardinals)) + + to_chat(L, "You feel a sharp shock from the collar!") + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(3, 1, L) + s.start() + + L.Knockdown(100) + + if(master) + master.receive_signal() + return + +/obj/item/device/electropack/shockcollar/attack_self(mob/user) //Turns out can't fully source this from the parent item, spritepath gets confused if power toggled. Will come back to this when I know how to code better and readd powertoggle.. + var/option = "Change Name" + option = input(user, "What do you want to do?", "[src]", option) as null|anything in list("Change Name", "Change Frequency") + switch(option) + if("Change Name") + var/t = input(user, "Would you like to change the name on the tag?", "Name your new pet", tagname ? tagname : "Spot") as null|text + if(t) + tagname = copytext(sanitize(t), 1, MAX_NAME_LEN) + name = "[initial(name)] - [tagname]" + if("Change Frequency") + if(!ishuman(user)) + return + user.set_machine(src) + var/dat = {"
    + Frequency/Code for shock collar:
    + Frequency: + - + - [format_frequency(frequency)] + + + +
    + Code: + - + - [code] + + + +
    +
    "} + + user << browse(dat, "window=radio") + onclose(user, "radio") + return diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 9a60d19e1f..9865f0bfb3 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -280,18 +280,17 @@ MASS SPECTROMETER to_chat(user, "[cyberimp_detect]") /proc/chemscan(mob/living/user, mob/living/M) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.reagents) - if(H.reagents.reagent_list.len) + if(istype(M)) + if(M.reagents) + if(M.reagents.reagent_list.len) to_chat(user, "Subject contains the following reagents:") - for(var/datum/reagent/R in H.reagents.reagent_list) + for(var/datum/reagent/R in M.reagents.reagent_list) to_chat(user, "[R.volume] units of [R.name][R.overdosed == 1 ? " - OVERDOSING" : "."]") else to_chat(user, "Subject contains no reagents.") - if(H.reagents.addiction_list.len) + if(M.reagents.addiction_list.len) to_chat(user, "Subject is addicted to the following reagents:") - for(var/datum/reagent/R in H.reagents.addiction_list) + for(var/datum/reagent/R in M.reagents.addiction_list) to_chat(user, "[R.name]") else to_chat(user, "Subject is not addicted to any reagents.") diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index c97ad1271c..7ca4da4f65 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -111,9 +111,9 @@ effective or pretty fucking useless. /obj/item/device/healthanalyzer/rad_laser/interact(mob/user) user.set_machine(src) - var/dat = "Irradiation: [irradiate ? "On" : "Off"]
    " - dat += "Stealth Mode (NOTE: Deactivates automatically while Irradiation is off): [stealth ? "On" : "Off"]
    " - dat += "Scan Mode: " + var/dat = "Irradiation: [irradiate ? "On" : "Off"]
    " + dat += "Stealth Mode (NOTE: Deactivates automatically while Irradiation is off): [stealth ? "On" : "Off"]
    " + dat += "Scan Mode: " if(!scanmode) dat += "Scan Health" else if(scanmode == 1) @@ -124,14 +124,14 @@ effective or pretty fucking useless. dat += {" Radiation Intensity: - -- + -- [intensity] - ++
    + ++
    Radiation Wavelength: - -- + -- [(wavelength+(intensity*4))] - ++
    + ++
    Laser Cooldown: [DisplayTimeText(GetCooldown())]
    "} diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index fe310db994..53f36719e4 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -64,10 +64,10 @@ /obj/item/device/transfer_valve/attack_self(mob/user) user.set_machine(src) var/dat = {" Valve properties: -
    Attachment one: [tank_one] [tank_one ? "Remove" : ""] -
    Attachment two: [tank_two] [tank_two ? "Remove" : ""] -
    Valve attachment: [attached_device ? "[attached_device]" : "None"] [attached_device ? "Remove" : ""] -
    Valve status: [ valve_open ? "Closed Open" : "Closed Open"]"} +
    Attachment one: [tank_one] [tank_one ? "Remove" : ""] +
    Attachment two: [tank_two] [tank_two ? "Remove" : ""] +
    Valve attachment: [attached_device ? "[attached_device]" : "None"] [attached_device ? "Remove" : ""] +
    Valve status: [ valve_open ? "Closed Open" : "Closed Open"]"} var/datum/browser/popup = new(user, "trans_valve", name) popup.set_content(dat) diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm index 15c6bcd4b1..8b26e33842 100644 --- a/code/game/objects/items/eightball.dm +++ b/code/game/objects/items/eightball.dm @@ -125,7 +125,7 @@ // notify ghosts that someone's shaking a haunted eightball // and inform them of the message, (hopefully a yes/no question) selected_message = last_message - notify_ghosts("[user] is shaking [src], hoping to get an answer to \"[selected_message]\"", source=src, enter_link="(Click to help)", action=NOTIFY_ATTACK) + notify_ghosts("[user] is shaking [src], hoping to get an answer to \"[selected_message]\"", source=src, enter_link="(Click to help)", action=NOTIFY_ATTACK) /obj/item/toy/eightball/haunted/Topic(href, href_list) if(href_list["interact"]) diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index 4502d2bb48..b2676c3c4e 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -140,6 +140,7 @@ user.put_in_hands(ptank) ptank = null to_chat(user, "You remove the plasma tank from [src]!") + update_icon() /obj/item/flamethrower/examine(mob/user) ..() diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 35ffebfe6b..b778bcb179 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -292,7 +292,7 @@ var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) var/turf/T = get_turf(src) var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) (FLW) and last touched by [key_name_admin(last)](?) (FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") + message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) (FLW) and last touched by [key_name_admin(last)](?) (FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") else addtimer(CALLBACK(src, .proc/prime), det_time) diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index d1d7f4d289..f2fd53403a 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -87,11 +87,98 @@ name = "ratvar plushie" desc = "An adorable plushie of the clockwork justiciar himself with new and improved spring arm action." icon_state = "plushvar" + var/obj/item/toy/plush/narplush/clash_target + +/obj/item/toy/plush/plushvar/Moved() + . = ..() + if(clash_target) + return + var/obj/item/toy/plush/narplush/P = locate() in range(1, src) + if(P && istype(P.loc, /turf/open) && !P.clashing) + clash_of_the_plushies(P) + +/obj/item/toy/plush/plushvar/proc/clash_of_the_plushies(obj/item/toy/plush/narplush/P) + clash_target = P + P.clashing = TRUE + say("YOU.") + P.say("Ratvar?!") + var/obj/item/toy/plush/a_winnar_is + var/victory_chance = 10 + for(var/i in 1 to 10) //We only fight ten times max + if(QDELETED(src)) + P.clashing = FALSE + return + if(QDELETED(P)) + clash_target = null + return + if(!Adjacent(P)) + visible_message("The two plushies angrily flail at each other before giving up.") + clash_target = null + P.clashing = FALSE + return + playsound(src, 'sound/magic/clockwork/ratvar_attack.ogg', 50, TRUE, frequency = 2) + sleep(2.4) + if(QDELETED(src)) + P.clashing = FALSE + return + if(QDELETED(P)) + clash_target = null + return + if(prob(victory_chance)) + a_winnar_is = src + break + P.SpinAnimation(5, 0) + sleep(5) + if(QDELETED(src)) + P.clashing = FALSE + return + if(QDELETED(P)) + clash_target = null + return + playsound(P, 'sound/magic/clockwork/narsie_attack.ogg', 50, TRUE, frequency = 2) + sleep(3.3) + if(QDELETED(src)) + P.clashing = FALSE + return + if(QDELETED(P)) + clash_target = null + return + if(prob(victory_chance)) + a_winnar_is = P + break + SpinAnimation(5, 0) + victory_chance += 10 + sleep(5) + if(!a_winnar_is) + a_winnar_is = pick(src, P) + if(a_winnar_is == src) + say(pick("DIE.", "ROT.")) + P.say(pick("Nooooo...", "Not die. To y-", "Die. Ratv-", "Sas tyen re-")) + playsound(src, 'sound/magic/clockwork/anima_fragment_attack.ogg', 50, TRUE, frequency = 2) + playsound(P, 'sound/magic/demon_dies.ogg', 50, TRUE, frequency = 2) + explosion(P, 0, 0, 1) + qdel(P) + clash_target = null + else + say("NO! I will not be banished again...") + P.say(pick("Ha.", "Ra'sha fonn dest.", "You fool. To come here.")) + playsound(src, 'sound/magic/clockwork/anima_fragment_death.ogg', 50, TRUE, frequency = 2) + playsound(P, 'sound/magic/demon_attack1.ogg', 50, TRUE, frequency = 2) + explosion(src, 0, 0, 1) + qdel(src) + P.clashing = FALSE /obj/item/toy/plush/narplush name = "nar'sie plushie" desc = "A small stuffed doll of the elder god nar'sie. Who thought this was a good children's toy?" icon_state = "narplush" + var/clashing + +/obj/item/toy/plush/narplush/Moved() + . = ..() + var/obj/item/toy/plush/plushvar/P = locate() in range(1, src) + if(P && istype(P.loc, /turf/open) && !P.clash_target && !clashing) + P.clash_of_the_plushies(src) /obj/item/toy/plush/lizardplushie name = "lizard plushie" diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index c4d86b0800..e4485266b5 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -546,9 +546,11 @@ to_chat(user, "[src] is still recycling its projectors!") return cycle_delay = world.time + PKBORG_DAMPEN_CYCLE_DELAY - active = !active - if(active) - activate_field(user) + if(!active) + if(!user.has_buckled_mobs()) + activate_field() + else + to_chat(user, "[src]'s safety cutoff prevents you from activating it due to living beings being ontop of you!") else deactivate_field() update_icon() @@ -561,16 +563,17 @@ if(istype(dampening_field)) QDEL_NULL(dampening_field) dampening_field = make_field(/datum/proximity_monitor/advanced/peaceborg_dampener, list("current_range" = field_radius, "host" = src, "projector" = src)) - var/mob/living/silicon/robot/owner = get_host() if(owner) owner.module.allow_riding = FALSE + active = TRUE /obj/item/borg/projectile_dampen/proc/deactivate_field() QDEL_NULL(dampening_field) visible_message("\The [src] shuts off!") for(var/P in tracked) restore_projectile(P) + active = FALSE var/mob/living/silicon/robot/owner = get_host() if(owner) diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index f47c5d30eb..9c0199e70f 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -289,13 +289,13 @@ return ..() /obj/item/robot_suit/proc/Interact(mob/user) - var/t1 = text("Designation: [(created_name ? "[created_name]" : "Default Cyborg")]
    \n",src) - t1 += text("Master AI: [(forced_ai ? "[forced_ai.name]" : "Automatic")]

    \n",src) + var/t1 = "Designation: [(created_name ? "[created_name]" : "Default Cyborg")]
    \n" + t1 += "Master AI: [(forced_ai ? "[forced_ai.name]" : "Automatic")]

    \n" - t1 += text("LawSync Port: [(lawsync ? "Open" : "Closed")]
    \n",src) - t1 += text("AI Connection Port: [(aisync ? "Open" : "Closed")]
    \n",src) - t1 += text("Servo Motor Functions: [(locomotion ? "Unlocked" : "Locked")]
    \n",src) - t1 += text("Panel Lock: [(panel_locked ? "Engaged" : "Disengaged")]
    \n",src) + t1 += "LawSync Port: [(lawsync ? "Open" : "Closed")]
    \n" + t1 += "AI Connection Port: [(aisync ? "Open" : "Closed")]
    \n" + t1 += "Servo Motor Functions: [(locomotion ? "Unlocked" : "Locked")]
    \n" + t1 += "Panel Lock: [(panel_locked ? "Engaged" : "Disengaged")]
    \n" var/datum/browser/popup = new(user, "robotdebug", "Cyborg Boot Debug", 310, 220) popup.set_content(t1) popup.open() diff --git a/code/game/objects/items/scrolls.dm b/code/game/objects/items/scrolls.dm index edddd27cf3..2fc8e8559c 100644 --- a/code/game/objects/items/scrolls.dm +++ b/code/game/objects/items/scrolls.dm @@ -1,74 +1,74 @@ -/obj/item/teleportation_scroll - name = "scroll of teleportation" - desc = "A scroll for moving around." - icon = 'icons/obj/wizard.dmi' - icon_state = "scroll" - var/uses = 4 - w_class = WEIGHT_CLASS_SMALL - item_state = "paper" - throw_speed = 3 - throw_range = 7 - origin_tech = "bluespace=6" - resistance_flags = FLAMMABLE - -/obj/item/teleportation_scroll/apprentice - name = "lesser scroll of teleportation" - uses = 1 - origin_tech = "bluespace=5" - - - -/obj/item/teleportation_scroll/attack_self(mob/user) - user.set_machine(src) - var/dat = "Teleportation Scroll:
    " - dat += "Number of uses: [src.uses]
    " - dat += "
    " - dat += "Four uses, use them wisely:
    " - dat += "Teleport
    " - dat += "Kind regards,
    Wizards Federation

    P.S. Don't forget to bring your gear, you'll need it to cast most spells.
    " - user << browse(dat, "window=scroll") - onclose(user, "scroll") - return - -/obj/item/teleportation_scroll/Topic(href, href_list) - ..() - if (usr.stat || usr.restrained() || src.loc != usr) - return - if (!ishuman(usr)) - return 1 - var/mob/living/carbon/human/H = usr - if(H.is_holding(src)) - H.set_machine(src) - if (href_list["spell_teleport"]) - if(uses) - teleportscroll(H) - if(H) - attack_self(H) - return - -/obj/item/teleportation_scroll/proc/teleportscroll(mob/user) - - var/A - - A = input(user, "Area to jump to", "BOOYEA", A) as null|anything in GLOB.teleportlocs - if(!src || QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !A || !uses) - return - var/area/thearea = GLOB.teleportlocs[A] - - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(2, user.loc) - smoke.attach(user) - smoke.start() - var/list/L = list() - for(var/turf/T in get_area_turfs(thearea.type)) - if(!is_blocked_turf(T)) - L += T - - if(!L.len) - to_chat(user, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.") - return - - user.forceMove(pick(L)) - - smoke.start() - uses-- +/obj/item/teleportation_scroll + name = "scroll of teleportation" + desc = "A scroll for moving around." + icon = 'icons/obj/wizard.dmi' + icon_state = "scroll" + var/uses = 4 + w_class = WEIGHT_CLASS_SMALL + item_state = "paper" + throw_speed = 3 + throw_range = 7 + origin_tech = "bluespace=6" + resistance_flags = FLAMMABLE + +/obj/item/teleportation_scroll/apprentice + name = "lesser scroll of teleportation" + uses = 1 + origin_tech = "bluespace=5" + + + +/obj/item/teleportation_scroll/attack_self(mob/user) + user.set_machine(src) + var/dat = "Teleportation Scroll:
    " + dat += "Number of uses: [src.uses]
    " + dat += "
    " + dat += "Four uses, use them wisely:
    " + dat += "Teleport
    " + dat += "Kind regards,
    Wizards Federation

    P.S. Don't forget to bring your gear, you'll need it to cast most spells.
    " + user << browse(dat, "window=scroll") + onclose(user, "scroll") + return + +/obj/item/teleportation_scroll/Topic(href, href_list) + ..() + if (usr.stat || usr.restrained() || src.loc != usr) + return + if (!ishuman(usr)) + return 1 + var/mob/living/carbon/human/H = usr + if(H.is_holding(src)) + H.set_machine(src) + if (href_list["spell_teleport"]) + if(uses) + teleportscroll(H) + if(H) + attack_self(H) + return + +/obj/item/teleportation_scroll/proc/teleportscroll(mob/user) + + var/A + + A = input(user, "Area to jump to", "BOOYEA", A) as null|anything in GLOB.teleportlocs + if(!src || QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !A || !uses) + return + var/area/thearea = GLOB.teleportlocs[A] + + var/datum/effect_system/smoke_spread/smoke = new + smoke.set_up(2, user.loc) + smoke.attach(user) + smoke.start() + var/list/L = list() + for(var/turf/T in get_area_turfs(thearea.type)) + if(!is_blocked_turf(T)) + L += T + + if(!L.len) + to_chat(user, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.") + return + + user.forceMove(pick(L)) + + smoke.start() + uses-- diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 2bb5d110fc..8c36a5965f 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -274,6 +274,9 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \ recipes = GLOB.titanium_recipes . = ..() +/obj/item/stack/sheet/mineral/titanium/fifty + amount = 50 + /* * Plastitanium diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 89fdc6d694..b1cb00acab 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -113,7 +113,7 @@ title+= "[R.title]" title+= " ([R.req_amount] [singular_name]\s)" if (can_build) - t1 += text("[] ", src, i, title) + t1 += text("[] ", i, title) else t1 += text("[]", title) continue @@ -123,9 +123,9 @@ var/list/multipliers = list(5,10,25) for (var/n in multipliers) if (max_multiplier>=n) - t1 += " [n*R.res_amount]x" + t1 += " [n*R.res_amount]x" if (!(max_multiplier in multipliers)) - t1 += " [max_multiplier*R.res_amount]x" + t1 += " [max_multiplier*R.res_amount]x" t1 += "
    " user << browse(t1, "window=stack") diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 02a212ee43..ceefd79338 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -93,7 +93,7 @@ /obj/item/stack/tile/basalt name = "basalt tile" singular_name = "basalt floor tile" - desc = "Artificially made ashy soil themed on a hostile enviroment." + desc = "Artificially made ashy soil themed on a hostile environment." icon_state = "tile_basalt" origin_tech = "materials=1" turf_type = /turf/open/floor/grass/fakebasalt diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 2e11600d65..2fdd800d6d 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -542,7 +542,7 @@ /obj/item/storage/backpack/duffelbag/syndie/firestarter/PopulateContents() new /obj/item/clothing/under/syndicate/soviet(src) - new /obj/item/watertank/operator(src) + new /obj/item/watertank/op(src) new /obj/item/clothing/suit/space/hardsuit/syndi/elite(src) new /obj/item/gun/ballistic/automatic/pistol/APS(src) new /obj/item/ammo_box/magazine/pistolm9mm(src) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index c0c861f4c4..0712fec228 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -43,7 +43,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", var/icon/bibleicon = icon('icons/obj/storage.dmi', GLOB.biblestates[i]) var/nicename = GLOB.biblenames[i] H << browse_rsc(bibleicon, nicename) - dat += {""} + dat += {""} dat += "
    [entry][functions]
    [nicename]
    [nicename]
    " H << browse(dat, "window=editicon;can_close=0;can_minimize=0;size=250x650") diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index 50898e72e1..195d5b25f5 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -128,11 +128,12 @@ if(!locked) to_chat(user, "Alt-click to [open ? "close":"open"] it.") -/obj/item/storage/lockbox/medal/AltClick() - if(!locked) - open = (open ? FALSE : TRUE) - update_icon() - ..() +/obj/item/storage/lockbox/medal/AltClick(mob/user) + if(user.canUseTopic(src, be_close=TRUE)) + if(!locked) + open = (open ? FALSE : TRUE) + update_icon() + ..() /obj/item/storage/lockbox/medal/PopulateContents() new /obj/item/clothing/accessory/medal/gold/captain(src) diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index 4d56b6a8e8..0f7bdd616c 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -78,7 +78,7 @@ message = text("[]", src.code) if (!src.locked) message = "*****" - dat += text("
    \n>[]
    \n1-2-3
    \n4-5-6
    \n7-8-9
    \nR-0-E
    \n", message, src, src, src, src, src, src, src, src, src, src, src, src) + dat += text("
    \n>[]
    \n1-2-3
    \n4-5-6
    \n7-8-9
    \nR-0-E
    \n", message) user << browse(dat, "window=caselock;size=300x280") /obj/item/storage/secure/Topic(href, href_list) diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index 513bdd2474..3d1c091a2b 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -233,6 +233,8 @@ return 0 var/pressure = air_contents.return_pressure() + var/temperature = air_contents.return_pressure() + if(pressure > TANK_FRAGMENT_PRESSURE) if(!istype(src.loc, /obj/item/device/transfer_valve)) message_admins("Explosive tank rupture! Last key to touch the tank was [src.fingerprintslast].") @@ -252,7 +254,7 @@ else qdel(src) - else if(pressure > TANK_RUPTURE_PRESSURE) + else if(pressure > TANK_RUPTURE_PRESSURE || temperature > TANK_MELT_TEMPERATURE) if(integrity <= 0) var/turf/T = get_turf(src) if(!T) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 38a9555f83..5fedac37a8 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -439,7 +439,7 @@ user.update_inv_back() //for overlays update //Operator backpack spray -/obj/item/watertank/operator +/obj/item/watertank/op name = "backpack water tank" desc = "A New Russian backpack spray for systematic cleansing of carbon lifeforms." icon_state = "waterbackpackjani" @@ -448,7 +448,7 @@ volume = 2000 slowdown = 0 -/obj/item/watertank/operator/New() +/obj/item/watertank/op/New() ..() reagents.add_reagent("mutagen",350) reagents.add_reagent("napalm",125) @@ -458,8 +458,7 @@ reagents.add_reagent("plasma",250) reagents.add_reagent("condensedcapsaicin",500) -/obj/item/reagent_containers/spray/mister/operator - name = "janitor spray nozzle" +/obj/item/reagent_containers/spray/mister/op desc = "A mister nozzle attached to several extended water tanks. It suspiciously has a compressor in the system and is labelled entirely in New Cyrillic." icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "misterjani" @@ -470,5 +469,5 @@ amount_per_transfer_from_this = 100 possible_transfer_amounts = list(75,100,150) -/obj/item/watertank/operator/make_noz() - return new /obj/item/reagent_containers/spray/mister/operator(src) +/obj/item/watertank/op/make_noz() + return new /obj/item/reagent_containers/spray/mister/op(src) diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index ffdb271cfb..9266074e1a 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -33,17 +33,17 @@ user.set_machine(src) var/dat if (src.temp) - dat = "[src.temp]

    Clear" + dat = "[src.temp]

    Clear" else dat = {" Persistent Signal Locator
    Frequency: -- -- [format_frequency(src.frequency)] -+ -+
    +- +- [format_frequency(src.frequency)] ++ ++
    -Refresh"} +Refresh"} user << browse(dat, "window=radio") onclose(user, "radio") return @@ -105,7 +105,7 @@ Frequency: direct = "weak" src.temp += "[W.imp_in.name]-[dir2text(get_dir(sr, tr))]-[direct]
    " - src.temp += "You are at \[[sr.x],[sr.y],[sr.z]\] in orbital coordinates.

    Refresh
    " + src.temp += "You are at \[[sr.x],[sr.y],[sr.z]\] in orbital coordinates.

    Refresh
    " else src.temp += "Processing Error: Unable to locate orbital position.
    " else @@ -151,11 +151,20 @@ Frequency: active_portal_pairs = list() /obj/item/hand_tele/pre_attackby(atom/target, mob/user, params) + if(try_dispel_portal(target, user)) + return FALSE + return ..() + +/obj/item/hand_tele/proc/try_dispel_portal(atom/target, mob/user) if(is_parent_of_portal(target)) qdel(target) to_chat(user, "You dispel [target] with \the [src]!") - return FALSE - return ..() + return TRUE + return FALSE + +/obj/item/hand_tele/afterattack(atom/target, mob/user) + try_dispel_portal(target, user) + . = ..() /obj/item/hand_tele/attack_self(mob/user) var/turf/current_location = get_turf(user)//What turf is the user on? diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm new file mode 100644 index 0000000000..a248dff0db --- /dev/null +++ b/code/game/objects/items/tools/crowbar.dm @@ -0,0 +1,88 @@ +/obj/item/crowbar + name = "pocket crowbar" + desc = "A small crowbar. This handy tool is useful for lots of things, such as prying floor tiles or opening unpowered doors." + icon = 'icons/obj/tools.dmi' + icon_state = "crowbar" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + usesound = 'sound/items/crowbar.ogg' + flags_1 = CONDUCT_1 + slot_flags = SLOT_BELT + force = 5 + throwforce = 7 + w_class = WEIGHT_CLASS_SMALL + materials = list(MAT_METAL=50) + origin_tech = "engineering=1;combat=1" + attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked") + tool_behaviour = TOOL_CROWBAR + toolspeed = 1 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) + +/obj/item/crowbar/suicide_act(mob/user) + user.visible_message("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + playsound(loc, 'sound/weapons/genhit.ogg', 50, 1, -1) + return (BRUTELOSS) + +/obj/item/crowbar/red + icon_state = "crowbar_red" + force = 8 + +/obj/item/crowbar/brass + name = "brass crowbar" + desc = "A brass crowbar. It feels faintly warm to the touch." + resistance_flags = FIRE_PROOF | ACID_PROOF + icon_state = "crowbar_brass" + toolspeed = 0.5 + +/obj/item/crowbar/abductor + name = "alien crowbar" + desc = "A hard-light crowbar. It appears to pry by itself, without any effort required." + icon = 'icons/obj/abductor.dmi' + usesound = 'sound/weapons/sonic_jackhammer.ogg' + icon_state = "crowbar" + toolspeed = 0.1 + origin_tech = "combat=4;engineering=4;abductor=3" + +/obj/item/crowbar/large + name = "crowbar" + desc = "It's a big crowbar. It doesn't fit in your pockets, because it's big." + force = 12 + w_class = WEIGHT_CLASS_NORMAL + throw_speed = 3 + throw_range = 3 + materials = list(MAT_METAL=70) + icon_state = "crowbar_large" + item_state = "crowbar" + toolspeed = 0.5 + +/obj/item/crowbar/cyborg + name = "hydraulic crowbar" + desc = "A hydraulic prying tool, compact but powerful. Designed to replace crowbar in construction cyborgs." + usesound = 'sound/items/jaws_pry.ogg' + force = 10 + toolspeed = 0.5 + +/obj/item/crowbar/power + name = "jaws of life" + desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a prying head." + icon_state = "jaws_pry" + item_state = "jawsoflife" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) + origin_tech = "materials=2;engineering=2" + usesound = 'sound/items/jaws_pry.ogg' + force = 15 + toolspeed = 0.25 + +/obj/item/crowbar/power/suicide_act(mob/user) + user.visible_message("[user] is putting [user.p_their()] head in [src], it looks like [user.p_theyre()] trying to commit suicide!") + playsound(loc, 'sound/items/jaws_pry.ogg', 50, 1, -1) + return (BRUTELOSS) + +/obj/item/crowbar/power/attack_self(mob/user) + playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1) + var/obj/item/wirecutters/power/cutjaws = new /obj/item/wirecutters/power + to_chat(user, "You attach the cutting jaws to [src].") + qdel(src) + user.put_in_active_hand(cutjaws) \ No newline at end of file diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm new file mode 100644 index 0000000000..278ac4385d --- /dev/null +++ b/code/game/objects/items/tools/screwdriver.dm @@ -0,0 +1,136 @@ +/obj/item/screwdriver + name = "screwdriver" + desc = "You can be totally screwy with this." + icon = 'icons/obj/tools.dmi' + icon_state = "screwdriver_map" + item_state = "screwdriver" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + flags_1 = CONDUCT_1 + slot_flags = SLOT_BELT + force = 5 + w_class = WEIGHT_CLASS_TINY + throwforce = 5 + throw_speed = 3 + throw_range = 5 + materials = list(MAT_METAL=75) + attack_verb = list("stabbed") + hitsound = 'sound/weapons/bladeslice.ogg' + usesound = 'sound/items/screwdriver.ogg' + tool_behaviour = TOOL_SCREWDRIVER + toolspeed = 1 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) + var/random_color = TRUE //if the screwdriver uses random coloring + var/static/list/screwdriver_colors = list( + "blue" = rgb(24, 97, 213), + "red" = rgb(149, 23, 16), + "pink" = rgb(213, 24, 141), + "brown" = rgb(160, 82, 18), + "green" = rgb(14, 127, 27), + "cyan" = rgb(24, 162, 213), + "yellow" = rgb(213, 140, 24) + ) + +/obj/item/screwdriver/suicide_act(mob/user) + user.visible_message("[user] is stabbing [src] into [user.p_their()] [pick("temple", "heart")]! It looks like [user.p_theyre()] trying to commit suicide!") + return(BRUTELOSS) + +/obj/item/screwdriver/Initialize() + . = ..() + if(random_color) //random colors! + icon_state = "screwdriver" + var/our_color = pick(screwdriver_colors) + add_atom_colour(screwdriver_colors[our_color], FIXED_COLOUR_PRIORITY) + update_icon() + if(prob(75)) + pixel_y = rand(0, 16) + +/obj/item/screwdriver/update_icon() + if(!random_color) //icon override + return + cut_overlays() + var/mutable_appearance/base_overlay = mutable_appearance(icon, "screwdriver_screwybits") + base_overlay.appearance_flags = RESET_COLOR + add_overlay(base_overlay) + +/obj/item/screwdriver/worn_overlays(isinhands = FALSE, icon_file) + . = list() + if(isinhands && random_color) + var/mutable_appearance/M = mutable_appearance(icon_file, "screwdriver_head") + M.appearance_flags = RESET_COLOR + . += M + +/obj/item/screwdriver/get_belt_overlay() + if(random_color) + var/mutable_appearance/body = mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "screwdriver") + var/mutable_appearance/head = mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "screwdriver_head") + body.color = color + head.add_overlay(body) + return head + else + return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', icon_state) + +/obj/item/screwdriver/attack(mob/living/carbon/M, mob/living/carbon/user) + if(!istype(M)) + return ..() + if(user.zone_selected != "eyes" && user.zone_selected != "head") + return ..() + if(user.disabilities & CLUMSY && prob(50)) + M = user + return eyestab(M,user) + +/obj/item/screwdriver/brass + name = "brass screwdriver" + desc = "A screwdriver made of brass. The handle feels freezing cold." + resistance_flags = FIRE_PROOF | ACID_PROOF + icon_state = "screwdriver_brass" + item_state = "screwdriver_brass" + toolspeed = 0.5 + random_color = FALSE + +/obj/item/screwdriver/abductor + name = "alien screwdriver" + desc = "An ultrasonic screwdriver." + icon = 'icons/obj/abductor.dmi' + icon_state = "screwdriver_a" + item_state = "screwdriver_nuke" + usesound = 'sound/items/pshoom.ogg' + toolspeed = 0.1 + random_color = FALSE + +/obj/item/screwdriver/power + name = "hand drill" + desc = "A simple powered hand drill. It's fitted with a screw bit." + icon_state = "drill_screw" + item_state = "drill" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) + origin_tech = "materials=2;engineering=2" //done for balance reasons, making them high value for research, but harder to get + force = 8 //might or might not be too high, subject to change + w_class = WEIGHT_CLASS_SMALL + throwforce = 8 + throw_speed = 2 + throw_range = 3//it's heavier than a screw driver/wrench, so it does more damage, but can't be thrown as far + attack_verb = list("drilled", "screwed", "jabbed","whacked") + hitsound = 'sound/items/drill_hit.ogg' + usesound = 'sound/items/drill_use.ogg' + toolspeed = 0.25 + random_color = FALSE + +/obj/item/screwdriver/power/suicide_act(mob/user) + user.visible_message("[user] is putting [src] to [user.p_their()] temple. It looks like [user.p_theyre()] trying to commit suicide!") + return(BRUTELOSS) + +/obj/item/screwdriver/power/attack_self(mob/user) + playsound(get_turf(user),'sound/items/change_drill.ogg',50,1) + var/obj/item/wrench/power/b_drill = new /obj/item/wrench/power + to_chat(user, "You attach the bolt driver bit to [src].") + qdel(src) + user.put_in_active_hand(b_drill) + +/obj/item/screwdriver/cyborg + name = "powered screwdriver" + desc = "An electrical screwdriver, designed to be both precise and quick." + usesound = 'sound/items/drill_use.ogg' + toolspeed = 0.5 \ No newline at end of file diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm new file mode 100644 index 0000000000..94fbb0a9a0 --- /dev/null +++ b/code/game/objects/items/tools/weldingtool.dm @@ -0,0 +1,345 @@ +#define WELDER_FUEL_BURN_INTERVAL 13 +/obj/item/weldingtool + name = "welding tool" + desc = "A standard edition welder provided by Nanotrasen." + icon = 'icons/obj/tools.dmi' + icon_state = "welder" + item_state = "welder" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + flags_1 = CONDUCT_1 + slot_flags = SLOT_BELT + force = 3 + throwforce = 5 + hitsound = "swing_hit" + usesound = 'sound/items/welder.ogg' + var/acti_sound = 'sound/items/welderactivate.ogg' + var/deac_sound = 'sound/items/welderdeactivate.ogg' + throw_speed = 3 + throw_range = 5 + w_class = WEIGHT_CLASS_SMALL + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 30) + resistance_flags = FIRE_PROOF + + materials = list(MAT_METAL=70, MAT_GLASS=30) + origin_tech = "engineering=1;plasmatech=1" + var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2) + var/status = TRUE //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower) + var/max_fuel = 20 //The max amount of fuel the welder can hold + var/change_icons = 1 + var/can_off_process = 0 + var/light_intensity = 2 //how powerful the emitted light is when used. + var/burned_fuel_for = 0 //when fuel was last removed + heat = 3800 + toolspeed = 1 + +/obj/item/weldingtool/Initialize() + . = ..() + create_reagents(max_fuel) + reagents.add_reagent("welding_fuel", max_fuel) + update_icon() + + +/obj/item/weldingtool/proc/update_torch() + if(welding) + add_overlay("[initial(icon_state)]-on") + item_state = "[initial(item_state)]1" + else + item_state = "[initial(item_state)]" + + +/obj/item/weldingtool/update_icon() + cut_overlays() + if(change_icons) + var/ratio = get_fuel() / max_fuel + ratio = Ceiling(ratio*4) * 25 + add_overlay("[initial(icon_state)][ratio]") + update_torch() + return + + +/obj/item/weldingtool/process() + switch(welding) + if(0) + force = 3 + damtype = "brute" + update_icon() + if(!can_off_process) + STOP_PROCESSING(SSobj, src) + return + //Welders left on now use up fuel, but lets not have them run out quite that fast + if(1) + force = 15 + damtype = "fire" + ++burned_fuel_for + if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL) + remove_fuel(1) + update_icon() + + //This is to start fires. process() is only called if the welder is on. + open_flame() + + +/obj/item/weldingtool/suicide_act(mob/user) + user.visible_message("[user] welds [user.p_their()] every orifice closed! It looks like [user.p_theyre()] trying to commit suicide!") + return (FIRELOSS) + + +/obj/item/weldingtool/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/screwdriver)) + flamethrower_screwdriver(I, user) + else if(istype(I, /obj/item/stack/rods)) + flamethrower_rods(I, user) + else if(istype(I, /obj/item/reagent_containers) && I.is_open_container()) + var/amountNeeded = max_fuel - get_fuel() + var/obj/item/reagent_containers/container = I + if(length(container.reagents.reagent_list) > 1) + to_chat(user, "[container] has too many chemicals mixed into it. You wouldn't want to put the wrong chemicals into [src].") + return ..() + if(amountNeeded > 0 && container.reagents.has_reagent("welding_fuel")) + container.reagents.trans_id_to(src, "welding_fuel", amountNeeded) + to_chat(user, "You transfer some fuel from [container] to [src].") + else + return ..() + + +/obj/item/weldingtool/attack(mob/living/carbon/human/H, mob/user) + if(!istype(H)) + return ..() + + var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected)) + + if(affecting && affecting.status == BODYPART_ROBOTIC && user.a_intent != INTENT_HARM) + if(src.remove_fuel(1)) + playsound(loc, usesound, 50, 1) + if(user == H) + user.visible_message("[user] starts to fix some of the dents on [H]'s [affecting.name].", "You start fixing some of the dents on [H]'s [affecting.name].") + if(!do_mob(user, H, 50)) + return + item_heal_robotic(H, user, 15, 0) + else + return ..() + + +/obj/item/weldingtool/afterattack(atom/O, mob/user, proximity) + if(!proximity) + return + + if(welding) + remove_fuel(1) + var/turf/location = get_turf(user) + location.hotspot_expose(700, 50, 1) + if(get_fuel() <= 0) + set_light(0) + + if(isliving(O)) + var/mob/living/L = O + if(L.IgniteMob()) + message_admins("[key_name_admin(user)] set [key_name_admin(L)] on fire") + log_game("[key_name(user)] set [key_name(L)] on fire") + + +/obj/item/weldingtool/attack_self(mob/user) + switched_on(user) + if(welding) + set_light(light_intensity) + + update_icon() + + +//Returns the amount of fuel in the welder +/obj/item/weldingtool/proc/get_fuel() + return reagents.get_reagent_amount("welding_fuel") + + +//Removes fuel from the welding tool. If a mob is passed, it will try to flash the mob's eyes. This should probably be renamed to use() +/obj/item/weldingtool/proc/remove_fuel(amount = 1, mob/living/M = null) + if(!welding || !check_fuel()) + return 0 + if(amount) + burned_fuel_for = 0 + if(get_fuel() >= amount) + reagents.remove_reagent("welding_fuel", amount) + check_fuel() + if(M) + M.flash_act(light_intensity) + return TRUE + else + if(M) + to_chat(M, "You need more welding fuel to complete this task!") + return FALSE + + +//Turns off the welder if there is no more fuel (does this really need to be its own proc?) +/obj/item/weldingtool/proc/check_fuel(mob/user) + if(get_fuel() <= 0 && welding) + switched_on(user) + update_icon() + //mob icon update + if(ismob(loc)) + var/mob/M = loc + M.update_inv_hands(0) + + return 0 + return 1 + +//Switches the welder on +/obj/item/weldingtool/proc/switched_on(mob/user) + if(!status) + to_chat(user, "[src] can't be turned on while unsecured!") + return + welding = !welding + if(welding) + if(get_fuel() >= 1) + to_chat(user, "You switch [src] on.") + playsound(loc, acti_sound, 50, 1) + force = 15 + damtype = "fire" + hitsound = 'sound/items/welder.ogg' + update_icon() + START_PROCESSING(SSobj, src) + else + to_chat(user, "You need more fuel!") + switched_off(user) + else + to_chat(user, "You switch [src] off.") + playsound(loc, deac_sound, 50, 1) + switched_off(user) + +//Switches the welder off +/obj/item/weldingtool/proc/switched_off(mob/user) + welding = 0 + set_light(0) + + force = 3 + damtype = "brute" + hitsound = "swing_hit" + update_icon() + + +/obj/item/weldingtool/examine(mob/user) + ..() + to_chat(user, "It contains [get_fuel()] unit\s of fuel out of [max_fuel].") + +/obj/item/weldingtool/is_hot() + return welding * heat + +//Returns whether or not the welding tool is currently on. +/obj/item/weldingtool/proc/isOn() + return welding + + +/obj/item/weldingtool/proc/flamethrower_screwdriver(obj/item/I, mob/user) + if(welding) + to_chat(user, "Turn it off first!") + return + status = !status + if(status) + to_chat(user, "You resecure [src].") + else + to_chat(user, "[src] can now be attached and modified.") + add_fingerprint(user) + +/obj/item/weldingtool/proc/flamethrower_rods(obj/item/I, mob/user) + if(!status) + var/obj/item/stack/rods/R = I + if (R.use(1)) + var/obj/item/flamethrower/F = new /obj/item/flamethrower(user.loc) + if(!remove_item_from_storage(F)) + user.transferItemToLoc(src, F, TRUE) + F.weldtool = src + add_fingerprint(user) + to_chat(user, "You add a rod to a welder, starting to build a flamethrower.") + user.put_in_hands(F) + else + to_chat(user, "You need one rod to start building a flamethrower!") + +/obj/item/weldingtool/ignition_effect(atom/A, mob/user) + if(welding && remove_fuel(1, user)) + . = "[user] casually lights [A] with [src], what a badass." + else + . = "" + +/obj/item/weldingtool/largetank + name = "industrial welding tool" + desc = "A slightly larger welder with a larger tank." + icon_state = "indwelder" + max_fuel = 40 + materials = list(MAT_GLASS=60) + origin_tech = "engineering=2;plasmatech=2" + +/obj/item/weldingtool/largetank/cyborg + name = "integrated welding tool" + desc = "An advanced welder designed to be used in robotic systems." + toolspeed = 0.5 + +/obj/item/weldingtool/largetank/flamethrower_screwdriver() + return + + +/obj/item/weldingtool/mini + name = "emergency welding tool" + desc = "A miniature welder used during emergencies." + icon_state = "miniwelder" + max_fuel = 10 + w_class = WEIGHT_CLASS_TINY + materials = list(MAT_METAL=30, MAT_GLASS=10) + change_icons = 0 + +/obj/item/weldingtool/mini/flamethrower_screwdriver() + return + +/obj/item/weldingtool/abductor + name = "alien welding tool" + desc = "An alien welding tool. Whatever fuel it uses, it never runs out." + icon = 'icons/obj/abductor.dmi' + icon_state = "welder" + toolspeed = 0.1 + light_intensity = 0 + change_icons = 0 + origin_tech = "plasmatech=5;engineering=5;abductor=3" + +/obj/item/weldingtool/abductor/process() + if(get_fuel() <= max_fuel) + reagents.add_reagent("welding_fuel", 1) + ..() + +/obj/item/weldingtool/hugetank + name = "upgraded industrial welding tool" + desc = "An upgraded welder based of the industrial welder." + icon_state = "upindwelder" + item_state = "upindwelder" + max_fuel = 80 + materials = list(MAT_METAL=70, MAT_GLASS=120) + origin_tech = "engineering=3;plasmatech=2" + +/obj/item/weldingtool/experimental + name = "experimental welding tool" + desc = "An experimental welder capable of self-fuel generation and less harmful to the eyes." + icon_state = "exwelder" + item_state = "exwelder" + max_fuel = 40 + materials = list(MAT_METAL=70, MAT_GLASS=120) + origin_tech = "materials=4;engineering=4;bluespace=3;plasmatech=4" + var/last_gen = 0 + change_icons = 0 + can_off_process = 1 + light_intensity = 1 + toolspeed = 0.5 + var/nextrefueltick = 0 + +/obj/item/weldingtool/experimental/brass + name = "brass welding tool" + desc = "A brass welder that seems to constantly refuel itself. It is faintly warm to the touch." + resistance_flags = FIRE_PROOF | ACID_PROOF + icon_state = "brasswelder" + item_state = "brasswelder" + + +/obj/item/weldingtool/experimental/process() + ..() + if(get_fuel() < max_fuel && nextrefueltick < world.time) + nextrefueltick = world.time + 10 + reagents.add_reagent("welding_fuel", 1) + +#undef WELDER_FUEL_BURN_INTERVAL \ No newline at end of file diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm new file mode 100644 index 0000000000..da0bbd677c --- /dev/null +++ b/code/game/objects/items/tools/wirecutters.dm @@ -0,0 +1,98 @@ +/obj/item/wirecutters + name = "wirecutters" + desc = "This cuts wires." + icon = 'icons/obj/tools.dmi' + icon_state = "cutters" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + flags_1 = CONDUCT_1 + slot_flags = SLOT_BELT + force = 6 + throw_speed = 3 + throw_range = 7 + w_class = WEIGHT_CLASS_SMALL + materials = list(MAT_METAL=80) + attack_verb = list("pinched", "nipped") + hitsound = 'sound/items/wirecutter.ogg' + usesound = 'sound/items/wirecutter.ogg' + origin_tech = "materials=1;engineering=1" + tool_behaviour = TOOL_WIRECUTTER + toolspeed = 1 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) + var/random_color = TRUE + + +/obj/item/wirecutters/New(loc, var/param_color = null) + ..() + if(random_color) + if(!param_color) + param_color = pick("yellow","red") + icon_state = "cutters_[param_color]" + +/obj/item/wirecutters/attack(mob/living/carbon/C, mob/user) + if(istype(C) && C.handcuffed && istype(C.handcuffed, /obj/item/restraints/handcuffs/cable)) + user.visible_message("[user] cuts [C]'s restraints with [src]!") + qdel(C.handcuffed) + C.handcuffed = null + if(C.buckled && C.buckled.buckle_requires_restraints) + C.buckled.unbuckle_mob(C) + C.update_handcuffed() + return + else + ..() + +/obj/item/wirecutters/suicide_act(mob/user) + user.visible_message("[user] is cutting at [user.p_their()] arteries with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + playsound(loc, usesound, 50, 1, -1) + return (BRUTELOSS) + +/obj/item/wirecutters/brass + name = "brass wirecutters" + desc = "A pair of wirecutters made of brass. The handle feels freezing cold to the touch." + resistance_flags = FIRE_PROOF | ACID_PROOF + icon_state = "cutters_brass" + random_color = FALSE + toolspeed = 0.5 + +/obj/item/wirecutters/abductor + name = "alien wirecutters" + desc = "Extremely sharp wirecutters, made out of a silvery-green metal." + icon = 'icons/obj/abductor.dmi' + icon_state = "cutters" + toolspeed = 0.1 + origin_tech = "materials=5;engineering=4;abductor=3" + random_color = FALSE + +/obj/item/wirecutters/cyborg + name = "wirecutters" + desc = "This cuts wires." + toolspeed = 0.5 + +/obj/item/wirecutters/power + name = "jaws of life" + desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a cutting head." + icon_state = "jaws_cutter" + item_state = "jawsoflife" + origin_tech = "materials=2;engineering=2" + materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) + usesound = 'sound/items/jaws_cut.ogg' + toolspeed = 0.25 + random_color = FALSE + +/obj/item/wirecutters/power/suicide_act(mob/user) + user.visible_message("[user] is wrapping \the [src] around [user.p_their()] neck. It looks like [user.p_theyre()] trying to rip [user.p_their()] head off!") + playsound(loc, 'sound/items/jaws_cut.ogg', 50, 1, -1) + if(iscarbon(user)) + var/mob/living/carbon/C = user + var/obj/item/bodypart/BP = C.get_bodypart("head") + if(BP) + BP.drop_limb() + playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1) + return (BRUTELOSS) + +/obj/item/wirecutters/power/attack_self(mob/user) + playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1) + var/obj/item/crowbar/power/pryjaws = new /obj/item/crowbar/power + to_chat(user, "You attach the pry jaws to [src].") + qdel(src) + user.put_in_active_hand(pryjaws) \ No newline at end of file diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm new file mode 100644 index 0000000000..8fb6bd4211 --- /dev/null +++ b/code/game/objects/items/tools/wrench.dm @@ -0,0 +1,110 @@ +/obj/item/wrench + name = "wrench" + desc = "A wrench with common uses. Can be found in your hand." + icon = 'icons/obj/tools.dmi' + icon_state = "wrench" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + flags_1 = CONDUCT_1 + slot_flags = SLOT_BELT + force = 5 + throwforce = 7 + w_class = WEIGHT_CLASS_SMALL + usesound = 'sound/items/ratchet.ogg' + materials = list(MAT_METAL=150) + origin_tech = "materials=1;engineering=1" + attack_verb = list("bashed", "battered", "bludgeoned", "whacked") + tool_behaviour = TOOL_WRENCH + toolspeed = 1 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) + +/obj/item/wrench/suicide_act(mob/user) + user.visible_message("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + playsound(loc, 'sound/weapons/genhit.ogg', 50, 1, -1) + return (BRUTELOSS) + +/obj/item/wrench/cyborg + name = "automatic wrench" + desc = "An advanced robotic wrench. Can be found in construction cyborgs." + toolspeed = 0.5 + +/obj/item/wrench/brass + name = "brass wrench" + desc = "A brass wrench. It's faintly warm to the touch." + resistance_flags = FIRE_PROOF | ACID_PROOF + icon_state = "wrench_brass" + toolspeed = 0.5 + +/obj/item/wrench/abductor + name = "alien wrench" + desc = "A polarized wrench. It causes anything placed between the jaws to turn." + icon = 'icons/obj/abductor.dmi' + icon_state = "wrench" + usesound = 'sound/effects/empulse.ogg' + toolspeed = 0.1 + origin_tech = "materials=5;engineering=5;abductor=3" + +/obj/item/wrench/power + name = "hand drill" + desc = "A simple powered hand drill. It's fitted with a bolt bit." + icon_state = "drill_bolt" + item_state = "drill" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + usesound = 'sound/items/drill_use.ogg' + materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) + origin_tech = "materials=2;engineering=2" //done for balance reasons, making them high value for research, but harder to get + force = 8 //might or might not be too high, subject to change + w_class = WEIGHT_CLASS_SMALL + throwforce = 8 + attack_verb = list("drilled", "screwed", "jabbed") + toolspeed = 0.25 + +/obj/item/wrench/power/attack_self(mob/user) + playsound(get_turf(user),'sound/items/change_drill.ogg',50,1) + var/obj/item/wirecutters/power/s_drill = new /obj/item/screwdriver/power + to_chat(user, "You attach the screw driver bit to [src].") + qdel(src) + user.put_in_active_hand(s_drill) + +/obj/item/wrench/power/suicide_act(mob/user) + user.visible_message("[user] is pressing [src] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!") + return (BRUTELOSS) + +/obj/item/wrench/medical + name = "medical wrench" + desc = "A medical wrench with common(medical?) uses. Can be found in your hand." + icon_state = "wrench_medical" + force = 2 //MEDICAL + throwforce = 4 + origin_tech = "materials=1;engineering=1;biotech=3" + attack_verb = list("wrenched", "medicaled", "tapped", "jabbed", "whacked") + +/obj/item/wrench/medical/suicide_act(mob/living/user) + user.visible_message("[user] is praying to the medical wrench to take [user.p_their()] soul. It looks like [user.p_theyre()] trying to commit suicide!") + // TODO Make them glow with the power of the M E D I C A L W R E N C H + // during their ascension + + // Stun stops them from wandering off + user.Stun(100, ignore_canstun = TRUE) + playsound(loc, 'sound/effects/pray.ogg', 50, 1, -1) + + // Let the sound effect finish playing + sleep(20) + + if(!user) + return + + for(var/obj/item/W in user) + user.dropItemToGround(W) + + var/obj/item/wrench/medical/W = new /obj/item/wrench/medical(loc) + W.add_fingerprint(user) + W.desc += " For some reason, it reminds you of [user.name]." + + if(!user) + return + + user.dust() + + return OXYLOSS \ No newline at end of file diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 8d56fccad6..25c67b2713 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -750,7 +750,7 @@ /obj/item/toy/cards/cardhand/interact(mob/user) var/dat = "You have:
    " for(var/t in currenthand) - dat += "A [t].
    " + dat += "A [t].
    " dat += "Which card will you remove next?" var/datum/browser/popup = new(user, "cardhand", "Hand of Cards", 400, 240) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 048184578a..bc48d65f93 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -457,15 +457,15 @@ explosive.prime() qdel(src) -/obj/item/twohanded/spear/AltClick() - ..() - if(!explosive) - return - if(ismob(loc)) - var/mob/M = loc - var/input = stripped_input(M,"What do you want your war cry to be? You will shout it when you hit someone in melee.", ,"", 50) - if(input) - src.war_cry = input +/obj/item/twohanded/spear/AltClick(mob/user) + if(user.canUseTopic(src, be_close=TRUE)) + ..() + if(!explosive) + return + if(istype(user) && loc == user) + var/input = stripped_input(user,"What do you want your war cry to be? You will shout it when you hit someone in melee.", ,"", 50) + if(input) + src.war_cry = input /obj/item/twohanded/spear/CheckParts(list/parts_list) var/obj/item/twohanded/spear/S = locate() in parts_list @@ -567,7 +567,7 @@ ..() if(!proximity) return - user.faction |= "greytide(\ref[user])" + user.faction |= "greytide([REF(user)])" if(isliving(AM)) var/mob/living/L = AM if(istype (L, /mob/living/simple_animal/hostile/illusion)) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index e95a81822c..6e865ff3bd 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -200,7 +200,7 @@ /obj/vv_get_dropdown() . = ..() - .["Delete all of type"] = "?_src_=vars;[HrefToken()];delall=\ref[src]" + .["Delete all of type"] = "?_src_=vars;[HrefToken()];delall=[REF(src)]" /obj/examine(mob/user) ..() diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index 1bf7daf2e2..1676ac9df8 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -15,18 +15,20 @@ delivery_icon = "deliverybox" anchorable = FALSE var/move_speed_multiplier = 1 - var/move_delay = 0 + var/move_delay = FALSE var/egged = 0 /obj/structure/closet/cardboard/relaymove(mob/user, direction) if(opened || move_delay || user.stat || user.IsStun() || user.IsKnockdown() || user.IsUnconscious() || !isturf(loc) || !has_gravity(loc)) return - move_delay = 1 + move_delay = TRUE if(step(src, direction)) - spawn(CONFIG_GET(number/walk_delay) * move_speed_multiplier) - move_delay = 0 + addtimer(CALLBACK(src, .proc/ResetMoveDelay), CONFIG_GET(number/walk_delay) * move_speed_multiplier) else - move_delay = 0 + ResetMoveDelay() + +/obj/structure/closet/cardboard/proc/ResetMoveDelay() + move_delay = FALSE /obj/structure/closet/cardboard/open() if(opened || !can_open()) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 389e851404..d0a00b060e 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -31,58 +31,8 @@ /obj/structure/girder/attackby(obj/item/W, mob/user, params) add_fingerprint(user) - if(istype(W, /obj/item/screwdriver)) - if(state == GIRDER_DISPLACED) - playsound(src.loc, W.usesound, 100, 1) - user.visible_message("[user] disassembles the girder.", \ - "You start to disassemble the girder...", "You hear clanking and banging noises.") - if(do_after(user, 40*W.toolspeed, target = src)) - if(state != GIRDER_DISPLACED) - return - state = GIRDER_DISASSEMBLED - to_chat(user, "You disassemble the girder.") - var/obj/item/stack/sheet/metal/M = new (loc, 2) - M.add_fingerprint(user) - qdel(src) - else if(state == GIRDER_REINF) - playsound(src.loc, W.usesound, 100, 1) - to_chat(user, "You start unsecuring support struts...") - if(do_after(user, 40*W.toolspeed, target = src)) - if(state != GIRDER_REINF) - return - to_chat(user, "You unsecure the support struts.") - state = GIRDER_REINF_STRUTS - else if(state == GIRDER_REINF_STRUTS) - playsound(src.loc, W.usesound, 100, 1) - to_chat(user, "You start securing support struts...") - if(do_after(user, 40*W.toolspeed, target = src)) - if(state != GIRDER_REINF_STRUTS) - return - to_chat(user, "You secure the support struts.") - state = GIRDER_REINF - else if(istype(W, /obj/item/wrench)) - if(state == GIRDER_DISPLACED) - if(!isfloorturf(loc)) - to_chat(user, "A floor must be present to secure the girder!") - return - playsound(src.loc, W.usesound, 100, 1) - to_chat(user, "You start securing the girder...") - if(do_after(user, 40*W.toolspeed, target = src)) - to_chat(user, "You secure the girder.") - var/obj/structure/girder/G = new (loc) - transfer_fingerprints_to(G) - qdel(src) - else if(state == GIRDER_NORMAL && can_displace) - playsound(src.loc, W.usesound, 100, 1) - to_chat(user, "You start unsecuring the girder...") - if(do_after(user, 40*W.toolspeed, target = src)) - to_chat(user, "You unsecure the girder.") - var/obj/structure/girder/displaced/D = new (loc) - transfer_fingerprints_to(D) - qdel(src) - - else if(istype(W, /obj/item/gun/energy/plasmacutter)) + if(istype(W, /obj/item/gun/energy/plasmacutter)) to_chat(user, "You start slicing apart the girder...") playsound(src, 'sound/items/welder.ogg', 100, 1) if(do_after(user, 40*W.toolspeed, target = src)) @@ -98,15 +48,6 @@ D.playDigSound() qdel(src) - else if(istype(W, /obj/item/wirecutters) && state == GIRDER_REINF_STRUTS) - playsound(src.loc, W.usesound, 100, 1) - to_chat(user, "You start removing the inner grille...") - if(do_after(user, 40*W.toolspeed, target = src)) - to_chat(user, "You remove the inner grille.") - new /obj/item/stack/sheet/plasteel(get_turf(src)) - var/obj/structure/girder/G = new (loc) - transfer_fingerprints_to(G) - qdel(src) else if(istype(W, /obj/item/stack)) if(iswallturf(loc)) @@ -269,6 +210,82 @@ else return ..() +// Screwdriver behavior for girders +/obj/structure/girder/screwdriver_act(mob/user, obj/item/tool) + . = FALSE + if(state == GIRDER_DISPLACED) + playsound(src, tool.usesound, 100, 1) + user.visible_message("[user] disassembles the girder.", + "You start to disassemble the girder...", + "You hear clanking and banging noises.") + if(do_after(user, 40 * tool.toolspeed, target = src)) + if(state != GIRDER_DISPLACED) + return + state = GIRDER_DISASSEMBLED + to_chat(user, "You disassemble the girder.") + var/obj/item/stack/sheet/metal/M = new (loc, 2) + M.add_fingerprint(user) + qdel(src) + return TRUE + + else if(state == GIRDER_REINF) + playsound(src, tool.usesound, 100, 1) + to_chat(user, "You start unsecuring support struts...") + if(do_after(user, 40 * tool.toolspeed, target = src)) + if(state != GIRDER_REINF) + return + to_chat(user, "You unsecure the support struts.") + state = GIRDER_REINF_STRUTS + return TRUE + + else if(state == GIRDER_REINF_STRUTS) + playsound(src, tool.usesound, 100, 1) + to_chat(user, "You start securing support struts...") + if(do_after(user, 40 * tool.toolspeed, target = src)) + if(state != GIRDER_REINF_STRUTS) + return + to_chat(user, "You secure the support struts.") + state = GIRDER_REINF + return TRUE + +// Wirecutter behavior for girders +/obj/structure/girder/wirecutter_act(mob/user, obj/item/tool) + . = FALSE + if(state == GIRDER_REINF_STRUTS) + playsound(src.loc, tool.usesound, 100, 1) + to_chat(user, "You start removing the inner grille...") + if(do_after(user, 40 * tool.toolspeed, target = src)) + to_chat(user, "You remove the inner grille.") + new /obj/item/stack/sheet/plasteel(get_turf(src)) + var/obj/structure/girder/G = new (loc) + transfer_fingerprints_to(G) + qdel(src) + return TRUE + +/obj/structure/girder/wrench_act(mob/user, obj/item/tool) + . = FALSE + if(state == GIRDER_DISPLACED) + if(!isfloorturf(loc)) + to_chat(user, "A floor must be present to secure the girder!") + return + playsound(src, tool.usesound, 100, 1) + to_chat(user, "You start securing the girder...") + if(do_after(user, 40 * tool.toolspeed, target = src)) + to_chat(user, "You secure the girder.") + var/obj/structure/girder/G = new (loc) + transfer_fingerprints_to(G) + qdel(src) + return TRUE + else if(state == GIRDER_NORMAL && can_displace) + playsound(src, tool.usesound, 100, 1) + to_chat(user, "You start unsecuring the girder...") + if(do_after(user, 40 * tool.toolspeed, target = src)) + to_chat(user, "You unsecure the girder.") + var/obj/structure/girder/displaced/D = new (loc) + transfer_fingerprints_to(D) + qdel(src) + return TRUE + /obj/structure/girder/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGRILLE)) return prob(girderpasschance) diff --git a/code/game/objects/structures/guncase.dm b/code/game/objects/structures/guncase.dm index ac6a69ed93..25073853ad 100644 --- a/code/game/objects/structures/guncase.dm +++ b/code/game/objects/structures/guncase.dm @@ -69,7 +69,7 @@ if(LAZYLEN(contents)) for(var/i in 1 to contents.len) var/obj/item/I = contents[i] - dat += "[I.name]
    " + dat += "[I.name]
    " dat += "
    " var/datum/browser/popup = new(user, "gunlocker", "
    [name]
    ", 350, 300) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 747e0b3317..b6332492dd 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -93,15 +93,15 @@ user.set_machine(src) var/dat if(mybag) - dat += "[mybag.name]
    " + dat += "[mybag.name]
    " if(mymop) - dat += "[mymop.name]
    " + dat += "[mymop.name]
    " if(myspray) - dat += "[myspray.name]
    " + dat += "[myspray.name]
    " if(myreplacer) - dat += "[myreplacer.name]
    " + dat += "[myreplacer.name]
    " if(signs) - dat += "[signs] sign\s
    " + dat += "[signs] sign\s
    " var/datum/browser/popup = new(user, "janicart", name, 240, 160) popup.set_content(dat) popup.open() diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index d253cbcf44..8d62168f7c 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -144,31 +144,31 @@ if(lines.len > 0) dat += "

    Playback

    " if(!playing) - dat += "Play Stop

    " + dat += "Play Stop

    " dat += "Repeat Song: " - dat += repeat > 0 ? "--" : "--" + dat += repeat > 0 ? "--" : "--" dat += " [repeat] times " - dat += repeat < max_repeats ? "++" : "++" + dat += repeat < max_repeats ? "++" : "++" dat += "
    " else - dat += "Play Stop
    " + dat += "Play Stop
    " dat += "Repeats left: [repeat]
    " if(!edit) - dat += "
    Show Editor
    " + dat += "
    Show Editor
    " else dat += "

    Editing

    " - dat += "Hide Editor" - dat += " Start a New Song" - dat += " Import a Song

    " + dat += "Hide Editor" + dat += " Start a New Song" + dat += " Import a Song

    " var/bpm = round(600 / tempo) - dat += "Tempo: - [bpm] BPM +

    " + dat += "Tempo: - [bpm] BPM +

    " var/linecount = 0 for(var/line in lines) linecount += 1 - dat += "Line [linecount]: Edit X [line]
    " - dat += "Add Line

    " + dat += "Line [linecount]: Edit X [line]
    " + dat += "Add Line

    " if(help) - dat += "Hide Help
    " + dat += "Hide Help
    " dat += {" Lines are a series of chords, separated by commas (,), each with notes separated by hyphens (-).
    Every note in a chord will play together, with chord timed by the tempo.
    @@ -187,7 +187,7 @@ A song may only contain up to [MUSIC_MAXLINES] lines.
    "} else - dat += "Show Help
    " + dat += "Show Help
    " var/datum/browser/popup = new(user, "instrument", instrumentObj.name, 700, 500) popup.set_content(dat) diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index 85c1694cb0..aeca1453e3 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -44,9 +44,9 @@ var/dat = "[name]
    " for(var/obj/item/P in src) if(istype(P, /obj/item/paper)) - dat += "[P.name] [auth ? "Write Remove" : ""]
    " + dat += "[P.name] [auth ? "Write Remove" : ""]
    " else - dat += "[P.name] [auth ? "Remove" : ""]
    " + dat += "[P.name] [auth ? "Remove" : ""]
    " user << browse("Notices[dat]","window=noticeboard") onclose(user, "noticeboard") diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index de8d913f4f..733dcf646d 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -83,12 +83,12 @@ FLOOR SAFES /obj/structure/safe/attack_hand(mob/user) user.set_machine(src) var/dat = "
    " - dat += "[open ? "Close" : "Open"] [src] | - [dial * 5] +" + dat += "[open ? "Close" : "Open"] [src] | - [dial * 5] +" if(open) dat += "" for(var/i = contents.len, i>=1, i--) var/obj/item/P = contents[i] - dat += "" + dat += "" dat += "
    [P.name]
    [P.name]
    " user << browse("[name][dat]", "window=safe;size=350x300") diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 9f52c3e035..322a337117 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -36,7 +36,7 @@ /turf/closed/indestructible/splashscreen name = "Space Station 13" - icon = 'config/title_screens/images/title1.dmi' + icon = 'icons/blank_title.png' icon_state = "" layer = FLY_LAYER diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index d227710b32..ae6aa0cb2d 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -355,3 +355,11 @@ if(wet_overlay) cut_overlay(wet_overlay) + +/turf/open/rad_act(pulse_strength) + if (air.gases[/datum/gas/carbon_dioxide] && air.gases[/datum/gas/oxygen]) + air.gases[/datum/gas/carbon_dioxide][MOLES]=max(air.gases[/datum/gas/carbon_dioxide][MOLES]-(pulse_strength/1000),0) + air.gases[/datum/gas/oxygen][MOLES]=max(air.gases[/datum/gas/oxygen][MOLES]-(pulse_strength/2000),0) + ASSERT_GAS(/datum/gas/pluoxium,air) + air.gases[/datum/gas/pluoxium][MOLES]+=(pulse_strength/4000) + air.garbage_collect() \ No newline at end of file diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm index 0578861074..ad85568267 100644 --- a/code/game/turfs/simulated/wall/mineral_walls.dm +++ b/code/game/turfs/simulated/wall/mineral_walls.dm @@ -222,13 +222,13 @@ icon = 'icons/turf/walls/survival_pod_walls.dmi' icon_state = "smooth" smooth = SMOOTH_MORE|SMOOTH_DIAGONAL - canSmoothWith = list(/turf/closed/wall/mineral/titanium/survival, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/shuttle/survival_pod, /obj/structure/shuttle/engine) + canSmoothWith = list(/turf/closed/wall/mineral/titanium/survival, /obj/machinery/door/airlock, /obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/shuttle, /obj/structure/shuttle/engine) /turf/closed/wall/mineral/titanium/survival/nodiagonal smooth = SMOOTH_MORE /turf/closed/wall/mineral/titanium/survival/pod - canSmoothWith = list(/turf/closed/wall/mineral/titanium/survival, /obj/machinery/door/airlock, /obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/shuttle, /obj/structure/shuttle/engine) + canSmoothWith = list(/turf/closed/wall/mineral/titanium/survival, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/shuttle/survival_pod) /////////////////////Plastitanium walls///////////////////// diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 4cefe2fbcf..6d8db55ad8 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -29,12 +29,12 @@ var/static/list/dent_decal_list = list( WALL_DENT_HIT = list( - mutable_appearance('icons/effects/effects.dmi', "impact1", TURF_DECAL_LAYER), - mutable_appearance('icons/effects/effects.dmi', "impact2", TURF_DECAL_LAYER), - mutable_appearance('icons/effects/effects.dmi', "impact3", TURF_DECAL_LAYER) + mutable_appearance('icons/effects/effects.dmi', "impact1", BULLET_HOLE_LAYER), + mutable_appearance('icons/effects/effects.dmi', "impact2", BULLET_HOLE_LAYER), + mutable_appearance('icons/effects/effects.dmi', "impact3", BULLET_HOLE_LAYER) ), WALL_DENT_SHOT = list( - mutable_appearance('icons/effects/effects.dmi', "bullet_hole", TURF_DECAL_LAYER) + mutable_appearance('icons/effects/effects.dmi', "bullet_hole", BULLET_HOLE_LAYER) ) ) diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index 6bd01183ad..5139ea8480 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -356,8 +356,8 @@ output += "" - output += "Add custom ban: (ONLY use this if you can't ban through any other method)" - output += "" + output += "Add custom ban: (ONLY use this if you can't ban through any other method)" + output += "" output += HrefTokenFormField() output += "" output += "" output += "
    Ban type:
    " - output += "Search: " - output += "" + output += "Search: " + output += "" output += HrefTokenFormField() output += "Ckey: " output += "Admin ckey: " @@ -469,25 +469,25 @@ if("PERMABAN") typedesc = "PERMABAN" if("TEMPBAN") - typedesc = "TEMPBAN
    ([duration] minutes [(unbanned) ? "" : "(Edit))"]
    Expires [expiration]
    " + typedesc = "TEMPBAN
    ([duration] minutes [(unbanned) ? "" : "(Edit))"]
    Expires [expiration]
    " if("JOB_PERMABAN") typedesc = "JOBBAN
    ([job])" if("JOB_TEMPBAN") - typedesc = "TEMP JOBBAN
    ([job])
    ([duration] minutes [(unbanned) ? "" : "(Edit))"]
    Expires [expiration]" + typedesc = "TEMP JOBBAN
    ([job])
    ([duration] minutes [(unbanned) ? "" : "(Edit))"]
    Expires [expiration]" if("ADMIN_PERMABAN") typedesc = "ADMIN PERMABAN" if("ADMIN_TEMPBAN") - typedesc = "ADMIN TEMPBAN
    ([duration] minutes [(unbanned) ? "" : "(Edit))"]
    Expires [expiration]
    " + typedesc = "ADMIN TEMPBAN
    ([duration] minutes [(unbanned) ? "" : "(Edit))"]
    Expires [expiration]
    " output += "" output += "[typedesc]" output += "[ckey]" output += "[bantime] (Round ID: [round_id])" output += "[ackey]" - output += "[(unbanned) ? "" : "Unban"]" + output += "[(unbanned) ? "" : "Unban"]" output += "" output += "" - output += "Reason: [(unbanned) ? "" : "(Edit)"] \"[reason]\"" + output += "Reason: [(unbanned) ? "" : "(Edit)"] \"[reason]\"" output += "" if(edits) output += "" diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index 9c1acca6eb..f43803631b 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -162,8 +162,8 @@ world.SetConfig("ban", bannedckey, null) - log_game("Stickyban on [bannedckey] detected as rogue, reverting to it's roundstart state") - message_admins("Stickyban on [bannedckey] detected as rogue, reverting to it's roundstart state") + log_game("Stickyban on [bannedckey] detected as rogue, reverting to its roundstart state") + message_admins("Stickyban on [bannedckey] detected as rogue, reverting to its roundstart state") //do not convert to timer. spawn (5) world.SetConfig("ban", bannedckey, null) diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index add7254934..bd32533a7f 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -180,7 +180,7 @@ GLOBAL_PROTECT(Banlist) for (var/A in GLOB.Banlist.dir) count++ GLOB.Banlist.cd = "/base/[A]" - var/ref = "\ref[src]" + var/ref = "[REF(src)]" var/key = GLOB.Banlist["key"] var/id = GLOB.Banlist["id"] var/ip = GLOB.Banlist["ip"] diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index a64cd8f40e..1111e7e09e 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -32,47 +32,47 @@ body += " played by [M.client] " body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\]" if(CONFIG_GET(flag/use_exp_tracking)) - body += "\[" + M.client.get_exp_living() + "\]" + body += "\[" + M.client.get_exp_living() + "\]" if(isnewplayer(M)) body += " Hasn't Entered Game " else - body += " \[Heal\] " + body += " \[Heal\] " if(M.client) body += "
    \[First Seen: [M.client.player_join_date]\]\[Byond account registered on: [M.client.account_join_date]\]" body += "

    Show related accounts by: " - body += "\[ CID | " - body += "IP \]" + body += "\[ CID | " + body += "IP \]" body += "

    \[ " - body += "VV - " - body += "TP - " + body += "VV - " + body += "TP - " body += "PM - " - body += "SM - " - body += "FLW - " - body += "LOGS\]
    " + body += "SM - " + body += "FLW - " + body += "LOGS\]
    " body += "Mob type = [M.type]

    " - body += "Kick | " - body += "Ban | " - body += "Jobban | " - body += "Identity Ban | " + body += "Kick | " + body += "Ban | " + body += "Jobban | " + body += "Identity Ban | " if(jobban_isbanned(M, "OOC")) - body+= "OOCBan | " + body+= "OOCBan | " else - body+= "OOCBan | " + body+= "OOCBan | " if(jobban_isbanned(M, "emote")) - body+= "EmoteBan | " + body+= "EmoteBan | " else - body+= "Emoteban | " + body+= "Emoteban | " body += "Notes | Messages | Watchlist | " if(M.client) - body += "| Prison | " - body += "\ Send back to Lobby | " + body += "| Prison | " + body += "\ Send back to Lobby | " var/muted = M.client.prefs.muted body += "
    Mute: " body += "\[IC | " @@ -83,15 +83,15 @@ body += "(toggle all)" body += "

    " - body += "Jump to | " - body += "Get | " - body += "Send To" + body += "Jump to | " + body += "Get | " + body += "Send To" body += "

    " - body += "Traitor panel | " - body += "Narrate to | " - body += "Subtle message | " - body += "Language Menu" + body += "Traitor panel | " + body += "Narrate to | " + body += "Subtle message | " + body += "Language Menu" if (M.client) if(!isnewplayer(M)) @@ -103,76 +103,76 @@ if(ishuman(M)) body += "Human | " else - body += "Humanize | " + body += "Humanize | " //Monkey if(ismonkey(M)) body += "Monkeyized | " else - body += "Monkeyize | " + body += "Monkeyize | " //Corgi if(iscorgi(M)) body += "Corgized | " else - body += "Corgize | " + body += "Corgize | " //AI / Cyborg if(isAI(M)) body += "Is an AI " else if(ishuman(M)) - body += "Make AI | " - body += "Make Robot | " - body += "Make Alien | " - body += "Make Slime | " - body += "Make Blob | " + body += "Make AI | " + body += "Make Robot | " + body += "Make Alien | " + body += "Make Slime | " + body += "Make Blob | " //Simple Animals if(isanimal(M)) - body += "Re-Animalize | " + body += "Re-Animalize | " else - body += "Animalize | " + body += "Animalize | " body += "

    " body += "Rudimentary transformation:
    These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.

    " - body += "Observer | " - body += "\[ Alien: Drone, " - body += "Hunter, " - body += "Sentinel, " - body += "Praetorian, " - body += "Queen, " - body += "Larva \] " - body += "Human " - body += "\[ slime: Baby, " - body += "Adult \] " - body += "Monkey | " - body += "Cyborg | " - body += "Cat | " - body += "Runtime | " - body += "Corgi | " - body += "Ian | " - body += "Crab | " - body += "Coffee | " - body += "\[ Construct: Juggernaut , " - body += "Artificer , " - body += "Wraith \] " - body += "Shade" + body += "Observer | " + body += "\[ Alien: Drone, " + body += "Hunter, " + body += "Sentinel, " + body += "Praetorian, " + body += "Queen, " + body += "Larva \] " + body += "Human " + body += "\[ slime: Baby, " + body += "Adult \] " + body += "Monkey | " + body += "Cyborg | " + body += "Cat | " + body += "Runtime | " + body += "Corgi | " + body += "Ian | " + body += "Crab | " + body += "Coffee | " + body += "\[ Construct: Juggernaut , " + body += "Artificer , " + body += "Wraith \] " + body += "Shade" body += "
    " if (M.client) body += "

    " body += "Other actions:" body += "
    " - body += "Forcesay | " - body += "Thunderdome 1 | " - body += "Thunderdome 2 | " - body += "Thunderdome Admin | " - body += "Thunderdome Observer | " + body += "Forcesay | " + body += "Thunderdome 1 | " + body += "Thunderdome 2 | " + body += "Thunderdome Admin | " + body += "Thunderdome Observer | " body += "
    " body += "" - usr << browse(body, "window=adminplayeropts-\ref[M];size=550x515") + usr << browse(body, "window=adminplayeropts-[REF(M)];size=550x515") SSblackbox.add_details("admin_verb","Player Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -195,19 +195,19 @@ dat += "
    Feed channels and stories entered through here will be uneditable and handled as official news by the rest of the units." dat += "
    Note that this panel allows full freedom over the news network, there are no constrictions except the few basic ones. Don't break things!
    " if(GLOB.news_network.wanted_issue.active) - dat+= "
    Read Wanted Issue" - dat+= "

    Create Feed Channel" - dat+= "
    View Feed Channels" - dat+= "
    Submit new Feed story" - dat+= "

    Exit" + dat+= "
    Read Wanted Issue" + dat+= "

    Create Feed Channel" + dat+= "
    View Feed Channels" + dat+= "
    Submit new Feed story" + dat+= "

    Exit" var/wanted_already = 0 if(GLOB.news_network.wanted_issue.active) wanted_already = 1 dat+="
    Feed Security functions:
    " - dat+="
    [(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue" - dat+="
    Censor Feed Stories" - dat+="
    Mark Feed Channel with Nanotrasen D-Notice (disables and locks the channel)." - dat+="

    The newscaster recognises you as:
    [src.admin_signature]
    " + dat+="
    [(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue" + dat+="
    Censor Feed Stories" + dat+="
    Mark Feed Channel with Nanotrasen D-Notice (disables and locks the channel)." + dat+="

    The newscaster recognises you as:
    [src.admin_signature]
    " if(1) dat+= "Station Feed Channels
    " if( isemptylist(GLOB.news_network.network_channels) ) @@ -215,36 +215,36 @@ else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) if(CHANNEL.is_admin_channel) - dat+="[CHANNEL.channel_name]
    " + dat+="[CHANNEL.channel_name]
    " else - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " - dat+="

    Refresh" - dat+="
    Back" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " + dat+="

    Refresh" + dat+="
    Back" if(2) dat+="Creating new Feed Channel..." - dat+="
    Channel Name: [src.admincaster_feed_channel.channel_name]
    " - dat+="Channel Author: [src.admin_signature]
    " - dat+="Will Accept Public Feeds: [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]

    " - dat+="
    Submit

    Cancel
    " + dat+="
    Channel Name: [src.admincaster_feed_channel.channel_name]
    " + dat+="Channel Author: [src.admin_signature]
    " + dat+="Will Accept Public Feeds: [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]

    " + dat+="
    Submit

    Cancel
    " if(3) dat+="Creating new Feed Message..." - dat+="
    Receiving Channel: [src.admincaster_feed_channel.channel_name]
    " //MARK + dat+="
    Receiving Channel: [src.admincaster_feed_channel.channel_name]
    " //MARK dat+="Message Author: [src.admin_signature]
    " - dat+="Message Body: [src.admincaster_feed_message.returnBody(-1)]
    " - dat+="
    Submit

    Cancel
    " + dat+="Message Body: [src.admincaster_feed_message.returnBody(-1)]
    " + dat+="
    Submit

    Cancel
    " if(4) dat+="Feed story successfully submitted to [src.admincaster_feed_channel.channel_name].

    " - dat+="
    Return
    " + dat+="
    Return
    " if(5) dat+="Feed Channel [src.admincaster_feed_channel.channel_name] created successfully.

    " - dat+="
    Return
    " + dat+="
    Return
    " if(6) dat+="ERROR: Could not submit Feed story to Network.

    " if(src.admincaster_feed_channel.channel_name=="") dat+="•Invalid receiving channel name.
    " if(src.admincaster_feed_message.returnBody(-1) == "" || src.admincaster_feed_message.returnBody(-1) == "\[REDACTED\]") dat+="•Invalid message body.
    " - dat+="
    Return
    " + dat+="
    Return
    " if(7) dat+="ERROR: Could not submit Feed Channel to Network.

    " if(src.admincaster_feed_channel.channel_name =="" || src.admincaster_feed_channel.channel_name == "\[REDACTED\]") @@ -256,7 +256,7 @@ break if(check) dat+="•Channel name already in use.
    " - dat+="
    Return
    " + dat+="
    Return
    " if(9) dat+="[admincaster_feed_channel.channel_name]: \[created by: [admincaster_feed_channel.returnAuthor(-1)]\]
    " if(src.admincaster_feed_channel.censored) @@ -278,8 +278,8 @@ for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments) dat+="[comment.body]
    [comment.author] [comment.time_stamp]
    " dat+="
    " - dat+="

    Refresh" - dat+="
    Back" + dat+="

    Refresh" + dat+="
    Back" if(10) dat+="Nanotrasen Feed Censorship Tool
    " dat+="NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.
    " @@ -289,8 +289,8 @@ dat+="No feed channels found active...
    " else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " - dat+="
    Cancel" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " + dat+="
    Cancel" if(11) dat+="Nanotrasen D-Notice Handler
    " dat+="A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's" @@ -300,26 +300,26 @@ dat+="No feed channels found active...
    " else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " - dat+="
    Back" + dat+="
    Back" if(12) dat+="[src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.returnAuthor(-1)] \]
    " - dat+="[(src.admincaster_feed_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]
    " + dat+="[(src.admincaster_feed_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]
    " if( isemptylist(src.admincaster_feed_channel.messages) ) dat+="No feed messages found in channel...
    " else for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages) dat+="-[MESSAGE.returnBody(-1)]
    \[Story by [MESSAGE.returnAuthor(-1)]\]
    " - dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
    " - dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: [MESSAGE.locked ? "Unlock" : "Lock"]
    " + dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
    " + dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: [MESSAGE.locked ? "Unlock" : "Lock"]
    " for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments) - dat+="[comment.body] X
    [comment.author] [comment.time_stamp]
    " - dat+="
    Back" + dat+="[comment.body] X
    [comment.author] [comment.time_stamp]
    " + dat+="
    Back" if(13) dat+="[src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.returnAuthor(-1)] \]
    " - dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
    " + dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
    " if(src.admincaster_feed_channel.censored) dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
    " dat+="No further feed story additions are allowed while the D-Notice is in effect.


    " @@ -329,7 +329,7 @@ else for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages) dat+="-[MESSAGE.returnBody(-1)]
    \[Story by [MESSAGE.returnAuthor(-1)]\]
    " - dat+="
    Back" + dat+="
    Back" if(14) dat+="Wanted Issue Handler:" var/wanted_already = 0 @@ -340,29 +340,29 @@ if(wanted_already) dat+="
    A wanted issue is already in Feed Circulation. You can edit or cancel it below.
    " dat+="
    " - dat+="Criminal Name: [src.admincaster_wanted_message.criminal]
    " - dat+="Description: [src.admincaster_wanted_message.body]
    " + dat+="Criminal Name: [src.admincaster_wanted_message.criminal]
    " + dat+="Description: [src.admincaster_wanted_message.body]
    " if(wanted_already) dat+="Wanted Issue created by:[GLOB.news_network.wanted_issue.scannedUser]
    " else dat+="Wanted Issue will be created under prosecutor:[src.admin_signature]
    " - dat+="
    [(wanted_already) ? ("Edit Issue") : ("Submit")]" + dat+="
    [(wanted_already) ? ("Edit Issue") : ("Submit")]" if(wanted_already) - dat+="
    Take down Issue" - dat+="
    Cancel" + dat+="
    Take down Issue" + dat+="
    Cancel" if(15) dat+="Wanted issue for [src.admincaster_wanted_message.criminal] is now in Network Circulation.

    " - dat+="
    Return
    " + dat+="
    Return
    " if(16) dat+="ERROR: Wanted Issue rejected by Network.

    " if(src.admincaster_wanted_message.criminal =="" || src.admincaster_wanted_message.criminal == "\[REDACTED\]") dat+="•Invalid name for person wanted.
    " if(src.admincaster_wanted_message.body == "" || src.admincaster_wanted_message.body == "\[REDACTED\]") dat+="•Invalid description.
    " - dat+="
    Return
    " + dat+="
    Return
    " if(17) dat+="Wanted Issue successfully deleted from Circulation
    " - dat+="
    Return
    " + dat+="
    Return
    " if(18) dat+="-- STATIONWIDE WANTED ISSUE --
    \[Submitted by: [GLOB.news_network.wanted_issue.scannedUser]\]
    " dat+="Criminal: [GLOB.news_network.wanted_issue.criminal]
    " @@ -373,10 +373,10 @@ dat+="
    " else dat+="None" - dat+="
    Back
    " + dat+="
    Back
    " if(19) dat+="Wanted issue for [src.admincaster_wanted_message.criminal] successfully edited.

    " - dat+="
    Return
    " + dat+="
    Return
    " else dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" @@ -390,21 +390,21 @@ var/dat = {"
    Game Panel

    \n - Change Game Mode
    + Change Game Mode
    "} if(GLOB.master_mode == "secret") - dat += "(Force Secret Mode)
    " + dat += "(Force Secret Mode)
    " dat += {"
    - Create Object
    - Quick Create Object
    - Create Turf
    - Create Mob
    + Create Object
    + Quick Create Object
    + Create Turf
    + Create Mob
    "} if(marked_datum && istype(marked_datum, /atom)) - dat += "Duplicate Marked Datum
    " + dat += "Duplicate Marked Datum
    " usr << browse(dat, "window=admin2;size=210x200") return @@ -757,14 +757,14 @@ dat += " (Cannot Late Join)
    " continue if(job.total_positions >= 0) - dat += " Add | " + dat += " Add | " if(job.total_positions > job.current_positions) - dat += "Remove | " + dat += "Remove | " else dat += "Remove | " - dat += "Unlimit" + dat += "Unlimit" else - dat += " Limit" + dat += " Limit" dat += "
    " dat += "" diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index 2ca0593e8d..a5e9119b5d 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -2,7 +2,7 @@ if(!message || !subject) return var/F = file("[GLOB.log_directory]/[subject].html") - F << "[time_stamp()] \ref[src] ([x],[y],[z]) || [src] [message]
    " + WRITE_FILE(F, "[time_stamp()] [REF(src)] ([x],[y],[z]) || [src] [message]
    ") /client/proc/investigate_show(subject in list("hrefs","notes, memos, watchlist", INVESTIGATE_PORTAL, INVESTIGATE_SINGULO, INVESTIGATE_WIRES, INVESTIGATE_TELESCI, INVESTIGATE_GRAVITY, INVESTIGATE_RECORDS, INVESTIGATE_CARGO, INVESTIGATE_SUPERMATTER, INVESTIGATE_ATMOS, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_BOTANY, INVESTIGATE_HALLUCINATIONS) ) diff --git a/code/modules/admin/chat_commands.dm b/code/modules/admin/chat_commands.dm index bf319fd278..ec79aaca07 100644 --- a/code/modules/admin/chat_commands.dm +++ b/code/modules/admin/chat_commands.dm @@ -73,11 +73,4 @@ GLOBAL_LIST(round_end_notifiees) return "[sender], the round has already ended!" LAZYINITLIST(GLOB.round_end_notifiees) GLOB.round_end_notifiees[sender] = TRUE - return "I will notify [sender] when the round ends." - -/datum/server_tools_command/round - name = "round" - help_text = "Displays the current round ID" - -/datum/server_tools_command/round/Run(sender, params) - return GLOB.round_id ? "[GLOB.round_id]" : "No round ID set!" + return "I will notify [sender] when the round ends." \ No newline at end of file diff --git a/code/modules/admin/create_object.dm b/code/modules/admin/create_object.dm index 73bb998231..4117acbf53 100644 --- a/code/modules/admin/create_object.dm +++ b/code/modules/admin/create_object.dm @@ -1,5 +1,5 @@ /datum/admins/proc/create_panel_helper(template) - var/final_html = replacetext(template, "/* ref src */", "\ref[src];[HrefToken()]") + var/final_html = replacetext(template, "/* ref src */", "[REF(src)];[HrefToken()]") final_html = replacetext(final_html,"/* hreftokenfield */","[HrefTokenFormField()]") return final_html diff --git a/code/modules/admin/permissionverbs/permissionedit.dm b/code/modules/admin/permissionverbs/permissionedit.dm index 24a53eff2b..26d2c87b48 100644 --- a/code/modules/admin/permissionverbs/permissionedit.dm +++ b/code/modules/admin/permissionverbs/permissionedit.dm @@ -20,7 +20,7 @@
    - + @@ -36,10 +36,10 @@ if(!rights) rights = "*none*" output += "" - output += "" - output += "" - output += "" - output += "" + output += "" + output += "" + output += "" + output += "" output += "" output += {" diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index e83446f3e3..18d12f8ae1 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -282,7 +282,7 @@ " + dat += "" dat += "" - dat += "" + dat += "" else - dat += "" + dat += "" dat += "" dat += "
    CKEY \[+\]CKEY \[+\] RANK PERMISSIONS VERB-OVERRIDES
    [adm_ckey] \[-\][D.rank.name][rights][rights2text(0," ",D.rank.adds,D.rank.subs)][adm_ckey] \[-\][D.rank.name][rights][rights2text(0," ",D.rank.adds,D.rank.subs)]
    [M_name] - [M_rname] - [M_key] ([M_job]) @@ -338,7 +338,7 @@ dat += "Time limit: [CONFIG_GET(number/midround_antag_time_check)] minutes into round
    " dat += "Living crew limit: [CONFIG_GET(number/midround_antag_life_check) * 100]% of crew alive
    " dat += "If limits past: [SSticker.mode.round_ends_with_antag_death ? "End The Round" : "Continue As Extended"]
    " - dat += "End Round Now
    " + dat += "End Round Now
    " dat += "[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]" var/connected_players = GLOB.clients.len var/lobby_players = 0 @@ -389,11 +389,11 @@ for(var/datum/mind/N in SSticker.mode.syndicates) var/mob/M = N.current if(M) - dat += "
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLW
    FLW
    [N.name]([N.key]) Nuclear Operative Body destroyed!
    [N.name]([N.key]) Nuclear Operative Body destroyed!PM

    " for(var/obj/item/disk/nuclear/N in GLOB.poi_list) @@ -402,7 +402,7 @@ while(!isturf(disk_loc)) if(ismob(disk_loc)) var/mob/M = disk_loc - dat += "carried by [M.real_name] " + dat += "carried by [M.real_name] " if(isobj(disk_loc)) var/obj/O = disk_loc dat += "in \a [O.name] " @@ -416,29 +416,29 @@ for(var/datum/mind/N in get_antagonists(/datum/antagonist/rev/head)) var/mob/M = N.current if(!M) - dat += "" + dat += "" dat += "" else - dat += "" + dat += "" dat += "" - dat += "" + dat += "" for(var/datum/mind/N in get_antagonists(/datum/antagonist/rev,TRUE)) var/mob/M = N.current if(M) - dat += "" + dat += "" dat += "" - dat += "" + dat += "" dat += "
    Nuclear Disk(s)
    [N.name]([N.key])Head Revolutionary body destroyed!
    [N.name]([N.key])Head Revolutionary body destroyed!PM
    [M.real_name] (Leader)[M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]
    [M.real_name] (Leader)[M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLW
    FLW
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLW
    FLW
    " for(var/datum/mind/N in SSjob.get_living_heads()) var/mob/M = N.current if(M) - dat += "" + dat += "" dat += "" - dat += "" + dat += "" var/turf/mob_loc = get_turf(M) dat += "" else - dat += "" + dat += "" dat += "" dat += "
    Target(s)Location
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLWFLW[mob_loc.loc]
    [N.name]([N.key])Head body destroyed!
    [N.name]([N.key])Head body destroyed!PM
    " @@ -450,12 +450,12 @@ var/datum/antagonist/changeling/lingantag = changeling.has_antag_datum(/datum/antagonist/changeling) var/mob/M = changeling.current if(M) - dat += "[lingantag.changelingID]([lingantag.name]) as [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.mind.changeling.changelingID] as [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" - dat += "Show Objective" + dat += "FLW" + dat += "Show Objective" else - dat += "[changeling.name]([changeling.key])Changeling body destroyed!" + dat += "[changeling.name]([changeling.key])Changeling body destroyed!" dat += "PM" dat += "" @@ -464,12 +464,12 @@ for(var/datum/mind/wizard in SSticker.mode.wizards) var/mob/M = wizard.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" - dat += "Show Objective" + dat += "FLW" + dat += "Show Objective" else - dat += "[wizard.name]([wizard.key])Wizard body destroyed!" + dat += "[wizard.name]([wizard.key])Wizard body destroyed!" dat += "PM" dat += "" @@ -478,12 +478,12 @@ for(var/datum/mind/apprentice in SSticker.mode.apprentices) var/mob/M = apprentice.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" - dat += "Show Objective" + dat += "FLW" + dat += "Show Objective" else - dat += "[apprentice.name]([apprentice.key])Apprentice body destroyed!!" + dat += "[apprentice.name]([apprentice.key])Apprentice body destroyed!!" dat += "PM" dat += "" @@ -492,9 +492,9 @@ for(var/datum/mind/N in SSticker.mode.cult) var/mob/M = N.current if(M) - dat += "[M.real_name][N.has_antag_datum(ANTAG_DATUM_CULT_MASTER) ? " \[Master\]" : ""][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][N.has_antag_datum(ANTAG_DATUM_CULT_MASTER) ? " \[Master\]" : ""][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" + dat += "FLW" dat += "" if(SSticker.mode.servants_of_ratvar.len) @@ -502,9 +502,9 @@ for(var/datum/mind/N in SSticker.mode.servants_of_ratvar) var/mob/M = N.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" + dat += "FLW" dat += "" if(SSticker.mode.traitors.len > 0) @@ -512,12 +512,12 @@ for(var/datum/mind/traitor in SSticker.mode.traitors) var/mob/M = traitor.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" - dat += "Show Objective" + dat += "FLW" + dat += "Show Objective" else - dat += "[traitor.name]([traitor.key])Traitor body destroyed!" + dat += "[traitor.name]([traitor.key])Traitor body destroyed!" dat += "PM" dat += "" @@ -527,12 +527,12 @@ for(var/datum/mind/brother in team.members) var/mob/M = brother.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" - dat += "Show Objective" + dat += "FLW" + dat += "Show Objective" else - dat += "[brother.name]([brother.key])Brother body destroyed!" + dat += "[brother.name]([brother.key])Brother body destroyed!" dat += "PM" dat += "" @@ -541,12 +541,12 @@ for(var/datum/mind/abductor in SSticker.mode.abductors) var/mob/M = abductor.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" - dat += "Show Objective" + dat += "FLW" + dat += "Show Objective" else - dat += "[abductor.name]([abductor.key])Abductor body destroyed!" + dat += "[abductor.name]([abductor.key])Abductor body destroyed!" dat += "PM" dat += "" dat += "
    " @@ -554,12 +554,12 @@ for(var/datum/mind/abductee in E.abductee_minds) var/mob/M = abductee.current if(M) - dat += "" + dat += "" dat += "" - dat += "" - dat += "" + dat += "" + dat += "" else - dat += "" + dat += "" dat += "" dat += "
    Abductees
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLWShow Objective
    FLWShow Objective
    [abductee.name]([abductee.key])Abductee body destroyed!
    [abductee.name]([abductee.key])Abductee body destroyed!PM
    " @@ -570,12 +570,12 @@ var/mob/M = devil.current var/datum/antagonist/devil/devilinfo = devil.has_antag_datum(ANTAG_DATUM_DEVIL) if(M) - dat += "[M.real_name] : [devilinfo.truename][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name] : [devilinfo.truename][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "Show Objective" - dat += "Show all devil info" + dat += "Show Objective" + dat += "Show all devil info" else - dat += "[devil.name] : [devilinfo.truename] ([devil.key])devil body destroyed!" + dat += "[devil.name] : [devilinfo.truename] ([devil.key])devil body destroyed!" dat += "PM" dat += "" @@ -585,11 +585,11 @@ var/datum/mind/sintouched = X var/mob/M = sintouched.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "Show Objective" + dat += "Show Objective" else - dat += "[sintouched.name]([sintouched.key])sintouched body destroyed!" + dat += "[sintouched.name]([sintouched.key])sintouched body destroyed!" dat += "PM" dat += "" @@ -601,12 +601,12 @@ for(var/datum/mind/blob in blob_minds) var/mob/camera/blob/M = blob.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" + dat += "FLW" dat += "Progress: [M.blobs_legit.len]/[M.blobwincount]" else - dat += "[blob.name]([blob.key])Blob not found!" + dat += "[blob.name]([blob.key])Blob not found!" dat += "PM" dat += "" @@ -618,11 +618,11 @@ for(var/datum/mind/eek in mode.ape_infectees) var/mob/M = eek.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" + dat += "FLW" else - dat += "[eek.name]([eek.key])Monkey not found!" + dat += "[eek.name]([eek.key])Monkey not found!" dat += "PM" dat += "" diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 5e1a8300c4..d3e4643ee6 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -7,9 +7,9 @@ dat +={" General Secrets

    - Show Job Debug
    - Admin Log
    - Show Admin List
    + Show Job Debug
    + Admin Log
    + Show Admin List

    "} @@ -17,27 +17,27 @@ dat += {" Admin Secrets

    - Cure all diseases currently in existence
    - Bombing List
    - Show current traitors and objectives
    - Show last [length(GLOB.lastsignalers)] signalers
    - Show last [length(GLOB.lawchanges)] law changes
    - Show AI Laws
    - Show Game Mode
    - Show Crew Manifest
    - List DNA (Blood)
    - List Fingerprints
    - Enable/Disable CTF

    - Reset Thunderdome to default state
    - Rename Station Name
    - Reset Station Name
    + Cure all diseases currently in existence
    + Bombing List
    + Show current traitors and objectives
    + Show last [length(GLOB.lastsignalers)] signalers
    + Show last [length(GLOB.lawchanges)] law changes
    + Show AI Laws
    + Show Game Mode
    + Show Crew Manifest
    + List DNA (Blood)
    + List Fingerprints
    + Enable/Disable CTF

    + Reset Thunderdome to default state
    + Rename Station Name
    + Reset Station Name

    Shuttles

    - Move Ferry
    - Toggle Arrivals Ferry
    - Move Mining Shuttle
    - Move Labor Shuttle
    + Move Ferry
    + Toggle Arrivals Ferry
    + Move Mining Shuttle
    + Move Labor Shuttle

    "} @@ -45,6 +45,7 @@ dat += {" Fun Secrets

    +<<<<<<< HEAD Trigger a Virus Outbreak
    Turn all humans into monkeys
    Chinese Cartoons
    @@ -65,10 +66,31 @@ Break all lights
    Fix all lights
    The floor is lava! (DANGEROUS: extremely lame)
    +======= + Trigger a Virus Outbreak
    + Turn all humans into monkeys
    + Chinese Cartoons
    + Change the species of all humans
    + Make all areas powered
    + Make all areas unpowered
    + Power all SMES
    + Triple AI mode (needs to be used in the lobby)
    + Everyone is the traitor
    + Summon Guns
    + Summon Magic
    + Summon Events (Toggle)
    + There can only be one!
    + There can only be one! (40-second delay)
    + Make all players retarded
    + Egalitarian Station Mode
    + Break all lights
    + Fix all lights
    + The floor is lava! (DANGEROUS: extremely lame)
    +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
    - Change bomb cap
    - Mass Purrbation
    - Mass Remove Purrbation
    + Change bomb cap
    + Mass Purrbation
    + Mass Remove Purrbation
    "} dat += "
    " @@ -77,9 +99,9 @@ dat += {" Security Level Elevated

    - Change all maintenance doors to engie/brig access only
    - Change all maintenance doors to brig access only
    - Remove cap on security officers
    + Change all maintenance doors to engie/brig access only
    + Change all maintenance doors to brig access only
    + Remove cap on security officers

    "} diff --git a/code/modules/admin/stickyban.dm b/code/modules/admin/stickyban.dm index 800d23090d..df6a9b89ad 100644 --- a/code/modules/admin/stickyban.dm +++ b/code/modules/admin/stickyban.dm @@ -142,8 +142,8 @@ to_chat(usr, "Error: No cached sticky ban for [ckey] found!") world.SetConfig("ban",ckey,null) - log_admin_private("[key_name(usr)] has reverted [ckey]'s sticky ban to it's state at round start.") - message_admins("[key_name_admin(usr)] has reverted [ckey]'s sticky ban to it's state at round start.") + log_admin_private("[key_name(usr)] has reverted [ckey]'s sticky ban to its state at round start.") + message_admins("[key_name_admin(usr)] has reverted [ckey]'s sticky ban to its state at round start.") //revert is mostly used when shit goes rouge, so we have to set it to null // and wait a byond tick before assigning it to ensure byond clears its shit. sleep(world.tick_lag) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 73da8d9424..5139f0bb47 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -618,15 +618,15 @@ //Regular jobs //Command (Blue) dat += "" - dat += "" + dat += "" for(var/jobPos in GLOB.command_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 6) //So things dont get squiiiiished! @@ -637,15 +637,15 @@ //Security (Red) counter = 0 dat += "
    Command Positions
    Command Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.security_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -656,15 +656,15 @@ //Engineering (Yellow) counter = 0 dat += "
    Security Positions
    Security Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.engineering_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -675,15 +675,15 @@ //Medical (White) counter = 0 dat += "
    Engineering Positions
    Engineering Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.medical_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -694,15 +694,15 @@ //Science (Purple) counter = 0 dat += "
    Medical Positions
    Medical Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.science_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -713,15 +713,15 @@ //Supply (Brown) counter = 0 dat += "
    Science Positions
    Science Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.supply_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get COPYPASTE! @@ -732,15 +732,15 @@ //Civilian (Grey) counter = 0 dat += "
    Supply Positions
    Supply Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.civilian_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -751,15 +751,15 @@ //Non-Human (Green) counter = 0 dat += "
    Civilian Positions
    Civilian Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.nonhuman_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -770,95 +770,95 @@ //Ghost Roles (light light gray) dat += "
    Non-human Positions
    Non-human Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" //pAI if(jobban_isbanned(M, "pAI")) - dat += "" + dat += "" else - dat += "" + dat += "" //Drones if(jobban_isbanned(M, "drone")) - dat += "" + dat += "" else - dat += "" + dat += "" //Positronic Brains if(jobban_isbanned(M, "posibrain")) - dat += "" + dat += "" else - dat += "" + dat += "" //Deathsquad if(jobban_isbanned(M, "deathsquad")) - dat += "" + dat += "" else - dat += "" + dat += "" //Lavaland roles if(jobban_isbanned(M, "lavaland")) - dat += "" + dat += "" else - dat += "" + dat += "" dat += "
    Ghost Roles
    Ghost Roles
    pAIpAIpAIpAIDroneDroneDroneDronePosibrainPosibrainPosibrainPosibrainDeathsquadDeathsquadDeathsquadDeathsquadLavalandLavalandLavalandLavaland
    " //Antagonist (Orange) var/isbanned_dept = jobban_isbanned(M, "Syndicate") dat += "" - dat += "" + dat += "" //Traitor if(jobban_isbanned(M, "traitor") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Changeling if(jobban_isbanned(M, "changeling") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Nuke Operative if(jobban_isbanned(M, "operative") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Revolutionary if(jobban_isbanned(M, "revolutionary") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Cultist if(jobban_isbanned(M, "cultist") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Servant of Ratvar if(jobban_isbanned(M, "servant of Ratvar") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Wizard if(jobban_isbanned(M, "wizard") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Abductor if(jobban_isbanned(M, "abductor") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Borer if(jobban_isbanned(M, "borer") || isbanned_dept) @@ -868,9 +868,9 @@ //Alien if(jobban_isbanned(M, "alien candidate") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" dat += "
    Antagonist Positions
    Antagonist Positions
    TraitorTraitorTraitorTraitorChangelingChangelingChangelingChangelingNuke OperativeNuke OperativeNuke OperativeNuke OperativeRevolutionaryRevolutionaryRevolutionaryRevolutionaryCultistCultistCultistCultistServantServantServantServantWizardWizardWizardWizardAbductorAbductorAbductorAbductorAlienAlienAlienAlien
    " usr << browse(dat, "window=jobban2;size=800x450") @@ -2283,9 +2283,9 @@ return alert(usr, "The game has already started.", null, null, null, null) var/dat = {"What mode do you wish to play?
    "} for(var/mode in config.modes) - dat += {"[config.mode_names[mode]]
    "} - dat += {"Secret
    "} - dat += {"Random
    "} + dat += {"[config.mode_names[mode]]
    "} + dat += {"Secret
    "} + dat += {"Random
    "} dat += {"Now: [GLOB.master_mode]"} usr << browse(dat, "window=c_mode") @@ -2299,7 +2299,7 @@ return alert(usr, "The game mode has to be secret!", null, null, null, null) var/dat = {"What game mode do you want to force secret to be? Use this if you want to change the game mode, but want the players to believe it's secret. This will only work if the current game mode is secret.
    "} for(var/mode in config.modes) - dat += {"[config.mode_names[mode]]
    "} - dat += {"Random (default)
    "} + dat += {"[config.mode_names[mode]]
    "} + dat += {"Random (default)
    "} dat += {"Now: [GLOB.secret_force_mode]"} usr << browse(dat, "window=f_secret") diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 0842d82553..e091001851 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -121,7 +121,7 @@ /proc/SDQL_gen_vv_href(t) var/text = "" - text += "\ref[t]" + text += "[REF(t)]" if(istype(t, /atom)) var/atom/a = t var/turf/T = a.loc diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm index 7176ac726c..8a7c030458 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm @@ -3,9 +3,11 @@ /proc/_abs(A) return abs(A) -/*/proc/_animate(atom/A, set_vars, time = 10, loop = 1, easing = LINEAR_EASING, flags_1 = null) - animate(A, set_vars, time, loop, easing, flags_1) - Borked. If anyone wants to fix this be my guest.*/ +/proc/_animate(atom/A, set_vars, time = 10, loop = 1, easing = LINEAR_EASING, flags = null) + var/mutable_appearance/MA = new() + for(var/v in set_vars) + MA.vars[v] = set_vars[v] + animate(A, appearance = MA, time, loop, easing, flags) /proc/_acrccos(A) return arccos(A) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 2f059d1829..f178eb08bd 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -83,7 +83,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) dat += "Refresh

    " for(var/I in l2b) var/datum/admin_help/AH = I - dat += "Ticket #[AH.id]: [AH.initiator_key_name]: [AH.name]
    " + dat += "Ticket #[AH.id]: [AH.initiator_key_name]: [AH.name]
    " usr << browse(dat.Join(), "window=ahelp_list[state];size=600x480") @@ -224,7 +224,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) //private /datum/admin_help/proc/FullMonty(ref_src) if(!ref_src) - ref_src = "\ref[src]" + ref_src = "[REF(src)]" . = ADMIN_FULLMONTY_NONAME(initiator.mob) if(state == AHELP_ACTIVE) . += ClosureLinks(ref_src) @@ -232,7 +232,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) //private /datum/admin_help/proc/ClosureLinks(ref_src) if(!ref_src) - ref_src = "\ref[src]" + ref_src = "[REF(src)]" . = " (REJT)" . += " (IC)" . += " (CLOSE)" @@ -242,19 +242,19 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) //private /datum/admin_help/proc/LinkedReplyName(ref_src) if(!ref_src) - ref_src = "\ref[src]" + ref_src = "[REF(src)]" return "[initiator_key_name]" //private /datum/admin_help/proc/TicketHref(msg, ref_src, action = "ticket") if(!ref_src) - ref_src = "\ref[src]" - return "[msg]" + ref_src = "[REF(src)]" + return "[msg]" //message from the initiator without a target, all admins will see this //won't bug irc /datum/admin_help/proc/MessageNoRecipient(msg) - var/ref_src = "\ref[src]" + var/ref_src = "[REF(src)]" //Message to be sent to all admins var/admin_msg = "Ticket [TicketHref("#[id]", ref_src)]: [LinkedReplyName(ref_src)] [FullMonty(ref_src)]: [keywords_lookup(msg)]" @@ -402,7 +402,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) //Show the ticket panel /datum/admin_help/proc/TicketPanel() var/list/dat = list("Ticket #[id]") - var/ref_src = "\ref[src]" + var/ref_src = "[REF(src)]" dat += "

    Admin Help Ticket #[id]: [LinkedReplyName(ref_src)]

    " dat += "State: " switch(state) @@ -701,7 +701,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(found.mind && found.mind.special_role) is_antag = 1 founds += "Name: [found.name]([found.real_name]) Ckey: [found.ckey] [is_antag ? "(Antag)" : null] " - msg += "[original_word](?|F) " + msg += "[original_word](?|F) " continue msg += "[original_word] " if(irc) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index dadbe7da5f..9371792683 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -117,7 +117,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) to_chat(usr, "Running your proc") GLOB.LastAdminCalledProc = procname if(target != GLOBAL_PROC) - GLOB.LastAdminCalledTargetRef = "\ref[target]" + GLOB.LastAdminCalledTargetRef = "[REF(target)]" GLOB.AdminProcCaller = ckey //if this runtimes, too bad for you ++GLOB.AdminProcCallCount . = world.WrapAdminProcCall(target, procname, arguments) diff --git a/code/modules/admin/verbs/individual_logging.dm b/code/modules/admin/verbs/individual_logging.dm index cd3feed5d0..50b00da9a6 100644 --- a/code/modules/admin/verbs/individual_logging.dm +++ b/code/modules/admin/verbs/individual_logging.dm @@ -1,12 +1,12 @@ /proc/show_individual_logging_panel(mob/M, type = INDIVIDUAL_ATTACK_LOG) if(!M || !ismob(M)) return - var/dat = "
    Attack log | " - dat += "Say log | " - dat += "Emote log | " - dat += "OOC log | " - dat += "Show all | " - dat += "Refresh
    " + var/dat = "
    Attack log | " + dat += "Say log | " + dat += "Emote log | " + dat += "OOC log | " + dat += "Show all | " + dat += "Refresh
    " dat += "
    " diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index 9edf84800d..3a2e13fdcc 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -299,7 +299,7 @@ GLOBAL_PROTECT(VVpixelmovement) if (!lentext(shorttype)) shorttype = "/" - .["[D]([shorttype])\ref[D]#[i]"] = D + .["[D]([shorttype])[REF(D)]#[i]"] = D /client/proc/mod_list_add_ass(atom/O) //hehe @@ -416,7 +416,7 @@ GLOBAL_PROTECT(VVpixelmovement) if (index == null) return var/assoc = 0 - var/prompt = alert(src, "Do you want to edit the key or it's assigned value?", "Associated List", "Key", "Assigned Value", "Cancel") + var/prompt = alert(src, "Do you want to edit the key or its assigned value?", "Associated List", "Key", "Assigned Value", "Cancel") if (prompt == "Cancel") return if (prompt == "Assigned Value") @@ -610,8 +610,8 @@ GLOBAL_PROTECT(VVpixelmovement) if (O.vv_edit_var(variable, var_new) == FALSE) to_chat(src, "Your edit was rejected by the object.") return - log_world("### VarEdit by [src]: [O.type] [variable]=[html_encode("[var_new]")]") - log_admin("[key_name(src)] modified [original_name]'s [variable] to [var_new]") - var/msg = "[key_name_admin(src)] modified [original_name]'s [variable] to [var_new]" + log_world("### VarEdit by [key_name(src)]: [O.type] [variable]=[var_value] => [var_new]") + log_admin("[key_name(src)] modified [original_name]'s [variable] to from [html_encode("[var_value]")] to [html_encode("[var_new]")]") + var/msg = "[key_name_admin(src)] modified [original_name]'s [variable] from [var_value] to [var_new]" message_admins(msg) admin_ticket_log(O, msg) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 4e4f44347d..8a18dc9ac5 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -11,17 +11,17 @@ /datum/admins/proc/one_click_antag() var/dat = {" - Make Traitors
    - Make Changelings
    - Make Revs
    - Make Cult
    - Make Clockwork Cult
    - Make Blob
    - Make Wizard (Requires Ghosts)
    - Make Nuke Team (Requires Ghosts)
    - Make CentCom Response Team (Requires Ghosts)
    - Make Abductor Team (Requires Ghosts)
    - Make Revenant (Requires Ghost)
    + Make Traitors
    + Make Changelings
    + Make Revs
    + Make Cult
    + Make Clockwork Cult
    + Make Blob
    + Make Wizard (Requires Ghosts)
    + Make Nuke Team (Requires Ghosts)
    + Make CentCom Response Team (Requires Ghosts)
    + Make Abductor Team (Requires Ghosts)
    + Make Revenant (Requires Ghost)
    "} var/datum/browser/popup = new(usr, "oneclickantag", "Quick-Create Antagonist", 400, 400) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 7430617806..16484cce52 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -848,8 +848,8 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/dat = {" Create Outfit - - + + [HrefTokenFormField()] @@ -1150,8 +1150,8 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits /datum/admins/proc/modify_goals() var/dat = "" for(var/datum/station_goal/S in SSticker.mode.station_goals) - dat += "[S.name] - Announce | Remove
    " - dat += "
    Add New Goal" + dat += "[S.name] - Announce | Remove
    " + dat += "
    Add New Goal" usr << browse(dat, "window=goals;size=400x400") @@ -1225,7 +1225,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/list/msg = list() msg += "Playtime ReportPlaytime:
    " src << browse(msg.Join(), "window=Player_playtime_check") @@ -1239,7 +1239,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/list/body = list() body += "Playtime for [C.key]
    Playtime:" body += C.get_exp_report() - body += "Toggle Exempt status" + body += "Toggle Exempt status" body += "" usr << browse(body.Join(), "window=playerplaytime[C.ckey];size=550x615") diff --git a/code/modules/assembly/health.dm b/code/modules/assembly/health.dm index 61eee593fa..8ff54b7a0a 100644 --- a/code/modules/assembly/health.dm +++ b/code/modules/assembly/health.dm @@ -78,7 +78,7 @@ if(!secured) user.show_message("The [name] is unsecured!") return 0 - var/dat = "Health Sensor [scanning?"On":"Off"]" + var/dat = "Health Sensor [scanning?"On":"Off"]" if(scanning && health_scan) dat += "
    Health: [health_scan]" user << browse(dat, "window=hscan") diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index c196e984a2..14286b376c 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -105,9 +105,9 @@ /obj/item/device/assembly/infra/interact(mob/user)//TODO: change this this to the wire control panel if(is_secured(user)) user.set_machine(src) - var/dat = "Infrared Laser\nStatus: [on ? "On" : "Off"]
    \nVisibility: [visible ? "Visible" : "Invisible"]
    \n
    " - dat += "

    Refresh" - dat += "

    Close" + var/dat = "Infrared Laser\nStatus: [on ? "On" : "Off"]
    \nVisibility: [visible ? "Visible" : "Invisible"]
    \n
    " + dat += "

    Refresh" + dat += "

    Close" user << browse(dat, "window=infra") onclose(user, "infra") return diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index 556979070d..c8bcb5a258 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -98,11 +98,11 @@ if(is_secured(user)) var/second = time % 60 var/minute = (time - second) / 60 - var/dat = "Proximity Sensor\n[(timing ? "Arming" : "Not Arming")] [minute]:[second]\n- - + +\n" - dat += "
    Armed":"1'>Unarmed"] (Movement sensor active when armed!)" - dat += "
    Detection range: - [sensitivity] +" - dat += "

    Refresh" - dat += "

    Close" + var/dat = "Proximity Sensor\n[(timing ? "Arming" : "Not Arming")] [minute]:[second]\n- - + +\n" + dat += "
    Armed":"1'>Unarmed"] (Movement sensor active when armed!)" + dat += "
    Detection range: - [sensitivity] +" + dat += "

    Refresh" + dat += "

    Close" user << browse(dat, "window=prox") onclose(user, "prox") return diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index ecb05c17d0..0b35304620 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -40,27 +40,27 @@ if(is_secured(user)) var/t1 = "-------" // if ((src.b_stat && !( flag1 ))) - // t1 = text("-------
    \nGreen Wire: []
    \nRed Wire: []
    \nBlue Wire: []
    \n", (src.wires & 4 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 2 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 1 ? text("Cut Wire", src) : text("Mend Wire", src))) + // t1 = text("-------
    \nGreen Wire: []
    \nRed Wire: []
    \nBlue Wire: []
    \n", (src.wires & 4 ? "Cut Wire" : "Mend Wire"), (src.wires & 2 ? "Cut Wire" : "Mend Wire"), (src.wires & 1 ? "Cut Wire" : "Mend Wire")) // else - // t1 = "-------" Speaker: [src.listening ? "Engaged" : "Disengaged"]
    + // t1 = "-------" Speaker: [src.listening ? "Engaged" : "Disengaged"]
    var/dat = {" -Send Signal
    +Send Signal
    Frequency/Code for signaler:
    Frequency: -- -- +- +- [format_frequency(src.frequency)] -+ -+
    ++ ++
    Code: -- -- +- +- [src.code] -+ -+
    ++ ++
    [t1]
    "} user << browse(dat, "window=radio") diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 9a959bc544..30a1ee71d3 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -74,10 +74,10 @@ if(is_secured(user)) var/second = time % 60 var/minute = (time - second) / 60 - var/dat = "Timing Unit\n[(timing ? "Timing" : "Not Timing")] [minute]:[second]\n- - + +\n" - dat += "

    Stop repeating" : "1'>Set to repeat")]" - dat += "

    Refresh" - dat += "

    Close" + var/dat = "Timing Unit\n[(timing ? "Timing" : "Not Timing")] [minute]:[second]\n- - + +\n" + dat += "

    Stop repeating" : "1'>Set to repeat")]" + dat += "

    Refresh" + dat += "

    Close" var/datum/browser/popup = new(user, "timer", name) popup.set_content(dat) popup.open() diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index 58edfaae94..ca234308d8 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -1,3 +1,5 @@ + + /atom/proc/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) return null @@ -94,7 +96,7 @@ AT.fire_act(temperature, volume) return - +#define INSUFFICIENT(path) (!location.air.gases[path] || location.air.gases[path][MOLES] < 0.5) /obj/effect/hotspot/process() if(just_spawned) just_spawned = FALSE @@ -111,9 +113,7 @@ if((temperature < FIRE_MINIMUM_TEMPERATURE_TO_EXIST) || (volume <= 1)) qdel(src) return - - //Nothing to burn - if(!(location.air) || !(location.air.gases[/datum/gas/plasma] || location.air.gases[/datum/gas/tritium]) || !location.air.gases[/datum/gas/oxygen]) + if(!location.air || (INSUFFICIENT(/datum/gas/plasma) && INSUFFICIENT(/datum/gas/tritium)) || INSUFFICIENT(/datum/gas/oxygen)) qdel(src) return @@ -190,3 +190,4 @@ . = ..() if(!isliving(loc)) return INITIALIZE_HINT_QDEL +#undef INSUFFICIENT \ No newline at end of file diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index bcb2f75bb4..07339807da 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -26,8 +26,9 @@ #define MAX_CATALYST_EFFICENCY 9 #define PLASMA_FUSED_COEFFICENT 0.08 #define CATALYST_COEFFICENT 0.01 -#define FUSION_PURITY_THRESHOLD 0.9 +#define FUSION_PURITY_THRESHOLD 0.95 #define FUSION_HEAT_DROPOFF 20000+T0C +#define NOBLIUM_FORMATION_ENERGY 2e9 //1 Mole of Noblium takes the planck energy to condense. /datum/controller/subsystem/air/var/list/gas_reactions //this is our singleton of all reactions /proc/init_gas_reactions() @@ -197,7 +198,7 @@ /datum/gas/tritium = MINIMUM_HEAT_CAPACITY ) -/datum/gas_reaction/fusion/react(datum/gas_mixture/air) +/datum/gas_reaction/fusion/react(datum/gas_mixture/air, turf/open/location) var/list/cached_gases = air.gases var/temperature = air.temperature @@ -210,22 +211,23 @@ var/reaction_energy = THERMAL_ENERGY(air) var/moles_impurities = air.total_moles()-(cached_gases[/datum/gas/plasma][MOLES]+cached_gases[/datum/gas/tritium][MOLES]) - var/plasma_fused = (PLASMA_FUSED_COEFFICENT*catalyst_efficency)*(temperature/PLASMA_BINDING_ENERGY)*4 - var/tritium_catalyzed = (CATALYST_COEFFICENT*catalyst_efficency)*(temperature/PLASMA_BINDING_ENERGY) + var/plasma_fused = (PLASMA_FUSED_COEFFICENT*catalyst_efficency)*(temperature/PLASMA_BINDING_ENERGY)/10 + var/tritium_catalyzed = (CATALYST_COEFFICENT*catalyst_efficency)*(temperature/PLASMA_BINDING_ENERGY)/40 var/oxygen_added = tritium_catalyzed - var/waste_added = (plasma_fused-oxygen_added)-((air.total_moles()*air.heat_capacity())/PLASMA_BINDING_ENERGY) + var/waste_added = max((plasma_fused-oxygen_added)-((air.total_moles()*air.heat_capacity())/PLASMA_BINDING_ENERGY),0) reaction_energy = max(reaction_energy+((catalyst_efficency*cached_gases[/datum/gas/plasma][MOLES])/((moles_impurities/catalyst_efficency)+2)*10)+((plasma_fused/((moles_impurities/catalyst_efficency)))*PLASMA_BINDING_ENERGY),0) - air.assert_gases(/datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/water_vapor, /datum/gas/nitrous_oxide, /datum/gas/nitryl) + air.assert_gases(/datum/gas/oxygen, /datum/gas/carbon_dioxide, /datum/gas/water_vapor, /datum/gas/nitrous_oxide, /datum/gas/nitryl) //Fusion produces an absurd amount of waste products now, requiring active filtration. cached_gases[/datum/gas/plasma][MOLES] = max(cached_gases[/datum/gas/plasma][MOLES] - plasma_fused,0) cached_gases[/datum/gas/tritium][MOLES] = max(cached_gases[/datum/gas/tritium][MOLES] - tritium_catalyzed,0) cached_gases[/datum/gas/oxygen][MOLES] += oxygen_added - cached_gases[/datum/gas/nitrogen][MOLES] += waste_added cached_gases[/datum/gas/water_vapor][MOLES] += waste_added cached_gases[/datum/gas/nitrous_oxide][MOLES] += waste_added cached_gases[/datum/gas/nitryl][MOLES] += waste_added - + cached_gases[/datum/gas/carbon_dioxide][MOLES] += waste_added + if (location) + radiation_pulse(location, reaction_energy/(PLASMA_BINDING_ENERGY*MAX_CATALYST_EFFICENCY)) if(reaction_energy > 0) var/new_heat_capacity = air.heat_capacity() if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) @@ -288,8 +290,8 @@ ASSERT_GAS(/datum/gas/bz,air) cached_gases[/datum/gas/bz][MOLES]+= reaction_efficency - cached_gases[/datum/gas/tritium][MOLES] = max(cached_gases[/datum/gas/tritium][MOLES]- 2*reaction_efficency,0) - cached_gases[/datum/gas/plasma][MOLES] = max(cached_gases[/datum/gas/plasma][MOLES] - reaction_efficency,0) + cached_gases[/datum/gas/tritium][MOLES] = max(cached_gases[/datum/gas/tritium][MOLES]- reaction_efficency,0) + cached_gases[/datum/gas/plasma][MOLES] = max(cached_gases[/datum/gas/plasma][MOLES] - (2*reaction_efficency),0) if(energy_released > 0) @@ -346,7 +348,7 @@ air.assert_gases(/datum/gas/hypernoblium,/datum/gas/bz) var/old_heat_capacity = air.heat_capacity() var/nob_formed = (cached_gases[/datum/gas/nitrogen][MOLES]*cached_gases[/datum/gas/tritium][MOLES])/100 - var/energy_taken = nob_formed*(10000000/(max(cached_gases[/datum/gas/bz][MOLES],1))) + var/energy_taken = nob_formed*(NOBLIUM_FORMATION_ENERGY/(max(cached_gases[/datum/gas/bz][MOLES],1))) cached_gases[/datum/gas/tritium][MOLES] = max(cached_gases[/datum/gas/tritium][MOLES]- 10*nob_formed,0) cached_gases[/datum/gas/nitrogen][MOLES] = max(cached_gases[/datum/gas/nitrogen][MOLES]- 20*nob_formed,0) cached_gases[/datum/gas/hypernoblium][MOLES]+= nob_formed @@ -356,6 +358,8 @@ var/new_heat_capacity = air.heat_capacity() if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) air.temperature = max(((air.temperature*old_heat_capacity - energy_taken)/new_heat_capacity),TCMB) + + #undef REACTING #undef NO_REACTION #undef OXYGEN_BURN_RATE_BASE @@ -381,4 +385,5 @@ #undef PLASMA_FUSED_COEFFICENT #undef CATALYST_COEFFICENT #undef FUSION_PURITY_THRESHOLD -#undef FUSION_HEAT_DROPOFF \ No newline at end of file +#undef FUSION_HEAT_DROPOFF +#undef NOBLIUM_FORMATION_ENERGY \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index d0cba4d581..1ba013e237 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -124,7 +124,7 @@ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) - ui = new(user, src, ui_key, "atmos_filter", name, 475, 155, master_ui, state) + ui = new(user, src, ui_key, "atmos_filter", name, 475, 180, master_ui, state) ui.open() /obj/machinery/atmospherics/components/trinary/filter/ui_data() diff --git a/code/modules/awaymissions/bluespaceartillery.dm b/code/modules/awaymissions/bluespaceartillery.dm index 3878619418..d98be456ff 100644 --- a/code/modules/awaymissions/bluespaceartillery.dm +++ b/code/modules/awaymissions/bluespaceartillery.dm @@ -30,7 +30,7 @@ var/dat = "Bluespace Artillery Control:
    " dat += "Locked on
    " dat += "Charge progress: [reload]/[reload_cooldown]:
    " - dat += "Open Fire
    " + dat += "Open Fire
    " dat += "Deployment of weapon authorized by
    Nanotrasen Naval Command

    Remember, friendly fire is grounds for termination of your contract and life.
    " user << browse(dat, "window=scroll") onclose(user, "scroll") diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 0307a6b58e..8b640676ba 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -309,7 +309,7 @@ dead_barricades.Cut() - notify_ghosts("[name] has been activated!", enter_link="(Click to join the [team] team!) or click on the controller directly!", source = src, action=NOTIFY_ATTACK) + notify_ghosts("[name] has been activated!", enter_link="(Click to join the [team] team!) or click on the controller directly!", source = src, action=NOTIFY_ATTACK) if(!arena_reset) reset_the_arena() diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index a46b32f853..15c5deb4cb 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -170,7 +170,7 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) density = TRUE icon_state = "offcenter" use_power = NO_POWER_USE - var/obj/machinery/gateway/centeraway/stationgate = null + var/obj/machinery/gateway/centerstation/stationgate = null can_link = TRUE @@ -233,6 +233,18 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) M.client.move_delay = max(world.time + 5, M.client.move_delay) +/obj/machinery/gateway/centeraway/admin + desc = "A mysterious gateway built by unknown hands, this one seems more compact." + +/obj/machinery/gateway/centeraway/admin/Initialize() + . = ..() + if(stationgate && !stationgate.awaygate) + stationgate.awaygate = src + +/obj/machinery/gateway/centeraway/admin/detect() + return TRUE + + /obj/item/paper/fluff/gateway info = "Congratulations,

    Your station has been selected to carry out the Gateway Project.

    The equipment will be shipped to you at the start of the next quarter.
    You are to prepare a secure location to house the equipment as outlined in the attached documents.

    --Nanotrasen Blue Space Research" name = "Confidential Correspondence, Pg 1" \ No newline at end of file diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index e14c48db3a..88be72a0a3 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -672,6 +672,9 @@ GLOBAL_LIST(external_rsc_urls) view = new_size apply_clickcatcher() + if (isliving(mob)) + var/mob/living/M = mob + M.update_damage_hud() /client/proc/generate_clickcatcher() if(!void) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 97812ca725..9923e19803 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -162,7 +162,7 @@ M.visible_message("[M]'s [name] starts to fall apart!", "Your [name] starts to fall apart!") /obj/item/clothing/proc/update_clothes_damaged_state(damaging = TRUE) - var/index = "\ref[initial(icon)]-[initial(icon_state)]" + var/index = "[REF(initial(icon))]-[initial(icon_state)]" var/static/list/damaged_clothes_icons = list() if(damaging) damaged_clothes = 1 diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index bbc0ada952..d540b5b963 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -86,17 +86,17 @@ ..() to_chat(user, "Alt-click to take a candy corn.") -/obj/item/clothing/head/fedora/det_hat/AltClick() - ..() - if(ismob(loc)) - var/mob/M = loc - if(candy_cooldown < world.time) - var/obj/item/reagent_containers/food/snacks/candy_corn/CC = new /obj/item/reagent_containers/food/snacks/candy_corn(src) - M.put_in_hands(CC) - to_chat(M, "You slip a candy corn from your hat.") - candy_cooldown = world.time+1200 - else - to_chat(M, "You just took a candy corn! You should wait a couple minutes, lest you burn through your stash.") +/obj/item/clothing/head/fedora/det_hat/AltClick(mob/user) + if(user.canUseTopic(src, be_close=TRUE)) + ..() + if(loc == user) + if(candy_cooldown < world.time) + var/obj/item/reagent_containers/food/snacks/candy_corn/CC = new /obj/item/reagent_containers/food/snacks/candy_corn(src) + user.put_in_hands(CC) + to_chat(user, "You slip a candy corn from your hat.") + candy_cooldown = world.time+1200 + else + to_chat(user, "You just took a candy corn! You should wait a couple minutes, lest you burn through your stash.") //Mime diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 3bdbdc05fa..38c7e2d118 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -87,39 +87,17 @@ obj/item/clothing/mask/frog flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR w_class = WEIGHT_CLASS_SMALL var/voicechange = TRUE - var/last_sound = 0 - var/delay = 15 - -/obj/item/clothing/mask/frog/proc/play_ree() - if(world.time - delay > last_sound) - playsound (src, 'sound/effects/reee.ogg', 30, 1) - last_sound = world.time - -/obj/item/clothing/mask/frog/proc/play_huu() - if(world.time - delay > last_sound) - playsound (src, 'sound/effects/huuu.ogg', 30, 1) - last_sound = world.time /obj/item/clothing/mask/frog/attack_self(mob/user) voicechange = !voicechange to_chat(user, "You turn the voice box [voicechange ? "on" : "off"]!") - if(voicechange) - play_ree() - -/obj/item/clothing/mask/frog/equipped(mob/user, slot) //when you put it on - var/mob/living/carbon/C = user - if((C.wear_mask == src) && (voicechange)) - play_ree() - return ..() /obj/item/clothing/mask/frog/speechModification(message) //whenever you speak if(voicechange) if(prob(5)) //sometimes, the angry spirit finds others words to speak. message = pick("HUUUUU!!","SMOOOOOKIN'!!","Hello my baby, hello my honey, hello my rag-time gal.", "Feels bad, man.", "GIT DIS GUY OFF ME!!" ,"SOMEBODY STOP ME!!", "NORMIES, GET OUT!!") - play_huu() else message = pick("Ree!!", "Reee!!","REEE!!","REEEEE!!") //but its usually just angry gibberish, - play_ree() return message obj/item/clothing/mask/frog/cursed @@ -271,4 +249,4 @@ obj/item/clothing/mask/frog/cursed desc = "A burlap sack with eyeholes." icon_state = "scarecrow_sack" item_state = "scarecrow_sack" - flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR \ No newline at end of file + flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm index d56f8f33e7..30afa31f60 100644 --- a/code/modules/clothing/spacesuits/flightsuit.dm +++ b/code/modules/clothing/spacesuits/flightsuit.dm @@ -76,8 +76,8 @@ //This is probably too much code just for EMP damage. var/emp_damage = 0 //One hit should make it hard to control, continuous hits will cripple it and then simply shut it off/make it crash. Direct hits count more. - var/emp_strong_damage = 2 - var/emp_weak_damage = 1.1 + var/emp_strong_damage = 4 + var/emp_weak_damage = 2.5 var/emp_heal_amount = 0.06 //How much emp damage to heal per process. var/emp_disable_threshold = 3 //3 weak ion, 2 strong ion hits. var/emp_disabled = FALSE @@ -757,7 +757,6 @@ resistance_flags = FIRE_PROOF | ACID_PROOF helmettype = /obj/item/clothing/head/helmet/space/hardsuit/flightsuit jetpack = null - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/gun, /obj/item/reagent_containers/spray/pepper, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs) actions_types = list(/datum/action/item_action/flightsuit/toggle_helmet, /datum/action/item_action/flightsuit/toggle_boots, /datum/action/item_action/flightsuit/toggle_flightpack, /datum/action/item_action/flightsuit/lock_suit) armor = list(melee = 20, bullet = 20, laser = 20, energy = 10, bomb = 30, bio = 100, rad = 75, fire = 100, acid = 100) max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT @@ -772,6 +771,10 @@ var/flight = FALSE var/maint_panel = FALSE +/obj/item/clothing/suit/space/hardsuit/flightsuit/Initialize() + . = ..() + allowed = GLOB.advanced_hardsuit_allowed + /obj/item/clothing/suit/space/hardsuit/flightsuit/full/Initialize() makepack() makeshoes() diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 75a63352e2..6cc5756658 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -499,10 +499,13 @@ name = "security hardsuit" desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor." item_state = "sec_hardsuit" - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/gun/energy, /obj/item/reagent_containers/spray/pepper, /obj/item/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs) armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50, fire = 75, acid = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security +/obj/item/clothing/suit/space/hardsuit/security/Initialize() + . = ..() + allowed = GLOB.security_hardsuit_allowed + //Head of Security hardsuit /obj/item/clothing/head/helmet/space/hardsuit/security/hos name = "head of security's hardsuit helmet" @@ -541,13 +544,16 @@ desc = "A MK.II SWAT suit with streamlined joints and armor made out of superior materials, insulated against intense heat. The most advanced tactical armor available Usually reserved for heavy hitter corporate security, this one has a regal finish in Nanotrasen company colors. Better not let the assistants get a hold of it." icon_state = "caparmor" item_state = "capspacesuit" - allowed = list(/obj/item/tank/internals, /obj/item/device/flashlight, /obj/item/gun/energy, /obj/item/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs) armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100) resistance_flags = FIRE_PROOF | ACID_PROOF heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT //this needed to be added a long fucking time ago helmettype = /obj/item/clothing/head/helmet/space/hardsuit/captain +/obj/item/clothing/suit/space/hardsuit/captain/Initialize() + . = ..() + allowed = GLOB.security_hardsuit_allowed + //Clown /obj/item/clothing/head/helmet/space/hardsuit/clown name = "cosmohonk hardsuit helmet" @@ -612,7 +618,7 @@ desc = "A hardsuit with built in energy shielding. Will rapidly recharge when not under fire." icon_state = "hardsuit-hos" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/gun, /obj/item/reagent_containers/spray/pepper, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs) + allowed = null armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50, fire = 100, acid = 100) resistance_flags = FIRE_PROOF | ACID_PROOF var/current_charges = 3 @@ -623,6 +629,11 @@ var/shield_state = "shield-old" var/shield_on = "shield-old" +/obj/item/clothing/suit/space/hardsuit/shielded/Initialize() + . = ..() + if(!allowed) + allowed = GLOB.advanced_hardsuit_allowed + /obj/item/clothing/suit/space/hardsuit/shielded/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) recharge_cooldown = world.time + recharge_delay if(current_charges > 0) diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index a3b68dc151..a56afb94ae 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -3,7 +3,7 @@ /obj/item/clothing/suit/space/eva/plasmaman name = "EVA plasma envirosuit" - desc = "A special plasma containment suit designed to be space-worthy, as well as worn over other clothing. Like it's smaller counterpart, it can automatically extinguish the wearer in a crisis, and holds twice as many charges." + desc = "A special plasma containment suit designed to be space-worthy, as well as worn over other clothing. Like its smaller counterpart, it can automatically extinguish the wearer in a crisis, and holds twice as many charges." allowed = list(/obj/item/gun, /obj/item/ammo_casing, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword, /obj/item/restraints/handcuffs, /obj/item/tank) armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0, fire = 100, acid = 75) resistance_flags = FIRE_PROOF diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 5fa3a5fa35..b1fcfb1e89 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -1,5 +1,5 @@ /obj/item/clothing/suit/armor - allowed = list(/obj/item/gun/energy, /obj/item/reagent_containers/spray/pepper, /obj/item/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/device/flashlight/seclite, /obj/item/melee/classic_baton/telescopic, /obj/item/kitchen/knife/combat, /obj/item/tank/internals/emergency_oxygen) + allowed = null body_parts_covered = CHEST cold_protection = CHEST|GROIN min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT @@ -11,6 +11,11 @@ resistance_flags = 0 armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50) +/obj/item/clothing/suit/armor/Initialize() + . = ..() + if(!allowed) + allowed = GLOB.security_vest_allowed + /obj/item/clothing/suit/armor/vest name = "armor vest" desc = "A slim Type I armored vest that provides decent protection against most types of damage." @@ -153,10 +158,12 @@ name = "detective's armor vest" desc = "An armored vest with a detective's badge on it." icon_state = "detective-armor" - allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/reagent_containers/spray/pepper, /obj/item/device/flashlight, /obj/item/gun/energy, /obj/item/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/device/detective_scanner, /obj/item/device/taperecorder, /obj/item/melee/classic_baton) resistance_flags = FLAMMABLE dog_fashion = null +/obj/item/clothing/suit/armor/vest/det_suit/Initialize() + . = ..() + allowed = GLOB.detective_vest_allowed //Reactive armor /obj/item/clothing/suit/armor/reactive diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index 71c86ca5fb..537dd86639 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -24,7 +24,7 @@ /obj/item/clothing/neck/cloak/hos name = "head of security's cloak" - desc = "Worn by Securistan, ruling the station with an iron fist. It's slightly armored." + desc = "Worn by Securistan, ruling the station with an iron fist." icon_state = "hoscloak" /obj/item/clothing/neck/cloak/qm @@ -33,17 +33,17 @@ /obj/item/clothing/neck/cloak/cmo name = "chief medical officer's cloak" - desc = "Worn by Meditopia, the valiant men and women keeping pestilence at bay. It's slightly shielded from contaminants." + desc = "Worn by Meditopia, the valiant men and women keeping pestilence at bay." icon_state = "cmocloak" /obj/item/clothing/neck/cloak/ce name = "chief engineer's cloak" - desc = "Worn by Engitopia, wielders of an unlimited power. It's slightly shielded against radiation." + desc = "Worn by Engitopia, wielders of an unlimited power." icon_state = "cecloak" /obj/item/clothing/neck/cloak/rd name = "research director's cloak" - desc = "Worn by Sciencia, thaumaturges and researchers of the universe. It's slightly shielded from contaminants." + desc = "Worn by Sciencia, thaumaturges and researchers of the universe." icon_state = "rdcloak" /obj/item/clothing/neck/cloak/cap diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 5211dd7938..7c45bb6192 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -94,11 +94,14 @@ item_state = "det_suit" blood_overlay_type = "coat" body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/reagent_containers/spray/pepper, /obj/item/device/flashlight, /obj/item/gun/energy, /obj/item/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/device/detective_scanner, /obj/item/device/taperecorder, /obj/item/melee/classic_baton) armor = list(melee = 25, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 45) cold_protection = CHEST|GROIN|LEGS|ARMS heat_protection = CHEST|GROIN|LEGS|ARMS +/obj/item/clothing/suit/det_suit/Initialize() + . = ..() + allowed = GLOB.detective_vest_allowed + /obj/item/clothing/suit/det_suit/grey name = "noir trenchcoat" desc = "A hard-boiled private investigator's grey trenchcoat." diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index e50cb8ca6b..8edf1e4ee2 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -134,9 +134,12 @@ item_state = "owl_wings" togglename = "wings" body_parts_covered = ARMS|CHEST - allowed = list(/obj/item/gun/energy, /obj/item/reagent_containers/spray/pepper, /obj/item/gun/ballistic, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/device/flashlight/seclite, /obj/item/melee/classic_baton/telescopic) actions_types = list(/datum/action/item_action/toggle_wings) +/obj/item/clothing/suit/toggle/owlwings/Initialize() + . = ..() + allowed = GLOB.security_vest_allowed + /obj/item/clothing/suit/toggle/owlwings/griffinwings name = "griffon cloak" desc = "A plush white cloak made of synthetic feathers. Soft to the touch, stylish, and a 2 meter wing span that will drive your captives mad." @@ -477,9 +480,12 @@ icon_state = "coatcaptain" item_state = "coatcaptain" armor = list(melee = 25, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50) - allowed = list(/obj/item/gun/energy, /obj/item/reagent_containers/spray/pepper, /obj/item/gun/ballistic, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/melee/classic_baton/telescopic) hoodtype = /obj/item/clothing/head/hooded/winterhood/captain +/obj/item/clothing/suit/hooded/wintercoat/captain/Initialize() + . = ..() + allowed = GLOB.security_wintercoat_allowed + /obj/item/clothing/head/hooded/winterhood/captain icon_state = "winterhood_captain" @@ -488,9 +494,12 @@ icon_state = "coatsecurity" item_state = "coatsecurity" armor = list(melee = 25, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 45) - allowed = list(/obj/item/gun/energy, /obj/item/reagent_containers/spray/pepper, /obj/item/gun/ballistic, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/device/flashlight, /obj/item/melee/classic_baton/telescopic) hoodtype = /obj/item/clothing/head/hooded/winterhood/security +/obj/item/clothing/suit/hooded/wintercoat/security/Initialize() + . = ..() + allowed = GLOB.security_wintercoat_allowed + /obj/item/clothing/head/hooded/winterhood/security icon_state = "winterhood_security" @@ -498,7 +507,7 @@ name = "medical winter coat" icon_state = "coatmedical" item_state = "coatmedical" - allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic) + allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 0, acid = 45) hoodtype = /obj/item/clothing/head/hooded/winterhood/medical @@ -509,7 +518,7 @@ name = "science winter coat" icon_state = "coatscience" item_state = "coatscience" - allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic) + allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0, fire = 0, acid = 0) hoodtype = /obj/item/clothing/head/hooded/winterhood/science @@ -521,7 +530,7 @@ icon_state = "coatengineer" item_state = "coatengineer" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20, fire = 30, acid = 45) - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/device/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser) + allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/device/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering /obj/item/clothing/head/hooded/winterhood/engineering @@ -540,7 +549,7 @@ name = "hydroponics winter coat" icon_state = "coathydro" item_state = "coathydro" - allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/device/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants) + allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/device/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) hoodtype = /obj/item/clothing/head/hooded/winterhood/hydro /obj/item/clothing/head/hooded/winterhood/hydro diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index 20bdd96e1a..13aed37142 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -64,10 +64,11 @@ /obj/item/clothing/accessory/proc/on_uniform_dropped(obj/item/clothing/under/U, user) return -/obj/item/clothing/accessory/AltClick() - if(initial(above_suit)) - above_suit = !above_suit - to_chat(usr, "\The [src] will be worn [above_suit ? "above" : "below"] your suit.") +/obj/item/clothing/accessory/AltClick(mob/user) + if(user.canUseTopic(src, be_close=TRUE)) + if(initial(above_suit)) + above_suit = !above_suit + to_chat(user, "[src] will be worn [above_suit ? "above" : "below"] your suit.") /obj/item/clothing/accessory/examine(mob/user) ..() diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index d25408efa0..7ff0bf78be 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -381,7 +381,7 @@ /datum/personal_crafting/proc/build_recipe_data(datum/crafting_recipe/R) var/list/data = list() data["name"] = R.name - data["ref"] = "\ref[R]" + data["ref"] = "[REF(R)]" var/req_text = "" var/tool_text = "" var/catalyst_text = "" diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index 2e7874347b..e94c40a0c7 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -168,7 +168,7 @@ to_chat(M, msg) log += "  [msg]" else - CRASH("[src] \ref[src] is adding a log when it was never put in scanning mode!") + CRASH("[src] [REF(src)] is adding a log when it was never put in scanning mode!") /proc/get_timestamp() return time2text(world.time + 432000, ":ss") diff --git a/code/modules/error_handler/error_viewer.dm b/code/modules/error_handler/error_viewer.dm index b19153956f..7d10488c68 100644 --- a/code/modules/error_handler/error_viewer.dm +++ b/code/modules/error_handler/error_viewer.dm @@ -66,12 +66,12 @@ GLOBAL_DATUM(error_cache, /datum/error_viewer/error_cache) linktext = name if (istype(back_to)) - back_to_param = ";viewruntime_backto=\ref[back_to]" + back_to_param = ";viewruntime_backto=[REF(back_to)]" if (linear) back_to_param += ";viewruntime_linear=1" - return "[linktext]" + return "[linktext]" /datum/error_viewer/error_cache var/list/errors = list() @@ -172,7 +172,7 @@ GLOBAL_DATUM(error_cache, /datum/error_viewer/error_cache) desc += "[html_encode(line)]
    " if (usr) - usr_ref = "\ref[usr]" + usr_ref = "[REF(usr)]" usr_loc = get_turf(usr) /datum/error_viewer/error_entry/show_to(user, datum/error_viewer/back_to, linear) @@ -186,7 +186,7 @@ GLOBAL_DATUM(error_cache, /datum/error_viewer/error_cache) html += " PP" html += " Follow" if (istype(usr_loc)) - html += "
    usr.loc: VV" + html += "
    usr.loc: VV" html += " JMP" browse_to(user, html) diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index 3f42b3dfcf..a4b2a3106c 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -60,7 +60,7 @@ triggering = TRUE if (alertadmins) - message_admins("Random Event triggering in 10 seconds: [name] ([typepath]) (CANCEL)") + message_admins("Random Event triggering in 10 seconds: [name] ([typepath]) (CANCEL)") sleep(100) var/gamemode = SSticker.mode.config_tag var/players_amt = get_active_player_count(alive_check = TRUE, afk_check = TRUE, human_check = TRUE) diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index 4cd718070b..b009e0ca59 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -44,7 +44,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 destination = end if(notify) notify_ghosts("\A [src] is inbound!", - enter_link="(Click to orbit)", + enter_link="(Click to orbit)", source=src, action=NOTIFY_ORBIT) GLOB.poi_list += src if(end && end.z==z_original) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index db7028411c..50004cda9c 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -169,7 +169,7 @@ var/datum/gas_mixture/GM = T.air if(!GM.gases[/datum/gas/oxygen]) return - GM.gases[/datum/gas/oxygen][MOLES] -= severity * holder.energy + GM.gases[/datum/gas/oxygen][MOLES] = max(GM.gases[/datum/gas/oxygen][MOLES] - severity * holder.energy, 0) GM.garbage_collect() /datum/spacevine_mutation/nitro_eater @@ -184,7 +184,7 @@ var/datum/gas_mixture/GM = T.air if(!GM.gases[/datum/gas/nitrogen]) return - GM.gases[/datum/gas/nitrogen][MOLES] -= severity * holder.energy + GM.gases[/datum/gas/nitrogen][MOLES] = max(GM.gases[/datum/gas/nitrogen][MOLES] - severity * holder.energy, 0) GM.garbage_collect() /datum/spacevine_mutation/carbondioxide_eater @@ -199,7 +199,7 @@ var/datum/gas_mixture/GM = T.air if(!GM.gases[/datum/gas/carbon_dioxide]) return - GM.gases[/datum/gas/carbon_dioxide][MOLES] -= severity * holder.energy + GM.gases[/datum/gas/carbon_dioxide][MOLES] = max(GM.gases[/datum/gas/carbon_dioxide][MOLES] - severity * holder.energy, 0) GM.garbage_collect() /datum/spacevine_mutation/plasma_eater @@ -214,7 +214,7 @@ var/datum/gas_mixture/GM = T.air if(!GM.gases[/datum/gas/plasma]) return - GM.gases[/datum/gas/plasma][MOLES] -= severity * holder.energy + GM.gases[/datum/gas/plasma][MOLES] = max(GM.gases[/datum/gas/plasma][MOLES] - severity * holder.energy, 0) GM.garbage_collect() /datum/spacevine_mutation/thorns @@ -390,7 +390,7 @@ /datum/spacevine_controller/vv_get_dropdown() . = ..() . += "---" - .["Delete Vines"] = "?_src_=\ref[src];[HrefToken()];purge_vines=1" + .["Delete Vines"] = "?_src_=[REF(src)];[HrefToken()];purge_vines=1" /datum/spacevine_controller/Topic(href, href_list) if(..() || !check_rights(R_ADMIN, FALSE) || !usr.client.holder.CheckAdminHref(href, href_list)) diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 3b12913fe6..c115ef51af 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -19,7 +19,7 @@ "capsaicin" = list("hotsauce", "hotsauce bottle", "You can almost TASTE the stomach ulcers now!"), "enzyme" = list("enzyme", "universal enzyme bottle", "Used in cooking various dishes"), "soysauce" = list("soysauce", "soy sauce bottle", "A salty soy-based flavoring"), - "frostoil" = list("coldsauce", "coldsauce bottle", "Leaves the tongue numb in it's passage"), + "frostoil" = list("coldsauce", "coldsauce bottle", "Leaves the tongue numb in its passage"), "sodiumchloride" = list("saltshakersmall", "salt shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("peppermillsmall", "pepper mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("oliveoil", "corn oil bottle", "A delicious oil used in cooking. Made from corn"), diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index a9d3d3489d..1a1b009fff 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -76,14 +76,18 @@ insert ascii eagle on american flag background here visible_message("[src] emits an acrid smell!") +/obj/machinery/deepfryer/attack_ai(mob/user) + return + /obj/machinery/deepfryer/attack_hand(mob/user) if(frying) if(frying.loc == src) to_chat(user, "You eject [frying] from [src].") - var/obj/item/reagent_containers/food/snacks/deepfryholder/S = new(get_turf(src)) + var/obj/item/reagent_containers/food/snacks/deepfryholder/S = new(drop_location()) S.fry(frying, reagents, cook_time) icon_state = "fryer_off" - user.put_in_hands(S) + if(user.Adjacent(src)) + user.put_in_hands(S) frying = null cook_time = 0 return diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm index 8b91e6838c..765b5ff891 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm @@ -37,25 +37,25 @@ var/dat dat += "
    STORED INGREDIENTS AND DRINKS
    " dat += "Remaining glasses: [glasses]
    " - dat += "Portion: [portion]
    " + dat += "Portion: [portion]
    " for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume] " - dat += "Purge" + dat += "Purge" if (glasses > 0) - dat += "Pour in a glass" - dat += "Add to the mixer
    " + dat += "Pour in a glass" + dat += "Add to the mixer
    " dat += "

    MIXER CONTENTS
    " for(var/datum/reagent/R in mixer.reagents.reagent_list) dat += "[R.name]: [R.volume] " - dat += "Transfer back" + dat += "Transfer back" if (glasses > 0) - dat += "Pour in a glass" + dat += "Pour in a glass" dat += "
    " dat += "

    STORED FOOD
    " for(var/V in stored_food) if(stored_food[V] > 0) - dat += "[V]: [stored_food[V]] Dispense
    " - dat += "

    Refresh Close" + dat += "[V]: [stored_food[V]] Dispense
    " + dat += "
    Refresh Close" var/datum/browser/popup = new(user, "foodcart","Food Cart", 500, 350, src) popup.set_content(dat) diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm index 845f10896e..1b00de1842 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -77,19 +77,19 @@ var/dat dat += "ICE CREAM
    " dat += "Dispensing: [flavour_name] icecream

    " - dat += "Vanilla ice cream: Select Make x5 [product_types[ICECREAM_VANILLA]] scoops left. (Ingredients: milk, ice)
    " - dat += "Strawberry ice cream: Select Make x5 [product_types[ICECREAM_STRAWBERRY]] dollops left. (Ingredients: milk, ice, berry juice)
    " - dat += "Chocolate ice cream: Select Make x5 [product_types[ICECREAM_CHOCOLATE]] dollops left. (Ingredients: milk, ice, coco powder)
    " - dat += "Blue ice cream: Select Make x5 [product_types[ICECREAM_BLUE]] dollops left. (Ingredients: milk, ice, singulo)
    " + dat += "Vanilla ice cream: Select Make x5 [product_types[ICECREAM_VANILLA]] scoops left. (Ingredients: milk, ice)
    " + dat += "Strawberry ice cream: Select Make x5 [product_types[ICECREAM_STRAWBERRY]] dollops left. (Ingredients: milk, ice, berry juice)
    " + dat += "Chocolate ice cream: Select Make x5 [product_types[ICECREAM_CHOCOLATE]] dollops left. (Ingredients: milk, ice, coco powder)
    " + dat += "Blue ice cream: Select Make x5 [product_types[ICECREAM_BLUE]] dollops left. (Ingredients: milk, ice, singulo)
    " dat += "
    CONES
    " - dat += "Waffle cones: Dispense Make x5 [product_types[CONE_WAFFLE]] cones left. (Ingredients: flour, sugar)
    " - dat += "Chocolate cones: Dispense Make x5 [product_types[CONE_CHOC]] cones left. (Ingredients: flour, sugar, coco powder)
    " + dat += "Waffle cones: Dispense Make x5 [product_types[CONE_WAFFLE]] cones left. (Ingredients: flour, sugar)
    " + dat += "Chocolate cones: Dispense Make x5 [product_types[CONE_CHOC]] cones left. (Ingredients: flour, sugar, coco powder)
    " dat += "
    " dat += "VAT CONTENT
    " for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
    " - dat += "Refresh Close" + dat += "Purge
    " + dat += "Refresh Close" var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 500, src) popup.set_content(dat) diff --git a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm index a24263bfa6..0e6a7e9034 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm @@ -105,9 +105,9 @@ [beaker_contents]
    "} if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN))) - dat += "Turn on!
    " + dat += "
    Turn on!
    " if (beaker) - dat += "
    Detach the container!
    " + dat += "
    Detach the container!
    " user << browse("Juicer[dat]", "window=juicer") onclose(user, "juicer") return diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index fd2471b96e..e68832e4c0 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -197,8 +197,8 @@ dat += "The microwave is empty." else dat = "

    Ingredients:

    [dat]" - dat += "
    Turn on" - dat += "Eject ingredients
    " + dat += "Turn on" + dat += "Eject ingredients
    " var/datum/browser/popup = new(user, "microwave", name, 300, 300) popup.set_content(dat) diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 0699e22547..7c2bacb6bf 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -24,8 +24,6 @@ /obj/machinery/processor/process() ..() - // The irony - // To be clear, if it's grinding, then it can't suck them up if(processing) return var/mob/living/simple_animal/slime/picked_slime @@ -43,125 +41,44 @@ return src.visible_message("[picked_slime] is sucked into [src].") - picked_slime.loc = src + picked_slime.forceMove(src) -/datum/food_processor_process - var/input - var/output - var/time = 40 -/datum/food_processor_process/proc/process_food(loc, what, obj/machinery/processor/processor) - if (src.output && loc && processor) - for(var/i = 0, i < processor.rating_amount, i++) - new src.output(loc) - if (what) - qdel(what) // Note to self: Make this safer - - /* objs */ -/datum/food_processor_process/meat - input = /obj/item/reagent_containers/food/snacks/meat/slab - output = /obj/item/reagent_containers/food/snacks/faggot - -/datum/food_processor_process/bacon - input = /obj/item/reagent_containers/food/snacks/meat/rawcutlet - output = /obj/item/reagent_containers/food/snacks/meat/rawbacon - -/datum/food_processor_process/potatowedges - input = /obj/item/reagent_containers/food/snacks/grown/potato/wedges - output = /obj/item/reagent_containers/food/snacks/fries - -/datum/food_processor_process/sweetpotato - input = /obj/item/reagent_containers/food/snacks/grown/potato/sweet - output = /obj/item/reagent_containers/food/snacks/yakiimo - -/datum/food_processor_process/potato - input = /obj/item/reagent_containers/food/snacks/grown/potato - output = /obj/item/reagent_containers/food/snacks/tatortot - -/datum/food_processor_process/carrot - input = /obj/item/reagent_containers/food/snacks/grown/carrot - output = /obj/item/reagent_containers/food/snacks/carrotfries - -/datum/food_processor_process/soybeans - input = /obj/item/reagent_containers/food/snacks/grown/soybeans - output = /obj/item/reagent_containers/food/snacks/soydope - -/datum/food_processor_process/spaghetti - input = /obj/item/reagent_containers/food/snacks/doughslice - output = /obj/item/reagent_containers/food/snacks/spaghetti - -/datum/food_processor_process/corn - input = /obj/item/reagent_containers/food/snacks/grown/corn - output = /obj/item/reagent_containers/food/snacks/tortilla - -/datum/food_processor_process/parsnip - input = /obj/item/reagent_containers/food/snacks/grown/parsnip - output = /obj/item/reagent_containers/food/snacks/roastparsnip - -/* mobs */ -/datum/food_processor_process/mob/process_food(loc, what, processor) - ..() +/obj/machinery/processor/proc/process_food(datum/food_processor_process/recipe, atom/movable/what) + if (recipe.output && loc && !QDELETED(src)) + for(var/i = 0, i < rating_amount, i++) + new recipe.output(drop_location()) + if (ismob(what)) + var/mob/themob = what + themob.gib(TRUE,TRUE,TRUE) + else + qdel(what) -/datum/food_processor_process/mob/slime/process_food(loc, what, obj/machinery/processor/processor) +/obj/machinery/processor/slime/process_food(datum/food_processor_process/recipe, atom/movable/what) var/mob/living/simple_animal/slime/S = what - var/C = S.cores - if(S.stat != DEAD) - S.loc = loc - S.visible_message("[C] crawls free of the processor!") - return - for(var/i in 1 to (C+processor.rating_amount-1)) - new S.coretype(loc) - SSblackbox.add_details("slime_core_harvested","[replacetext(S.colour," ","_")]") + if (istype(S)) + var/C = S.cores + if(S.stat != DEAD) + S.forceMove(drop_location()) + S.visible_message("[C] crawls free of the processor!") + return + for(var/i in 1 to (C+rating_amount-1)) + var/atom/movable/item = new S.coretype(drop_location()) + adjust_item_drop_location(item) + SSblackbox.add_details("slime_core_harvested","[replacetext(S.colour," ","_")]") ..() -/datum/food_processor_process/mob/slime/input = /mob/living/simple_animal/slime -/datum/food_processor_process/mob/slime/output = null - -/datum/food_processor_process/mob/monkey/process_food(loc, what, processor) - var/mob/living/carbon/monkey/O = what - if (O.client) //grief-proof - O.loc = loc - O.visible_message("Suddenly [O] jumps out from the processor!", \ - "You jump out from the processor!", \ - "You hear chimpering.") - return - var/obj/bucket = new /obj/item/reagent_containers/glass/bucket(loc) - - var/datum/reagent/blood/B = new() - B.holder = bucket - B.volume = 70 - //set reagent data - B.data["donor"] = O - - for(var/thing in O.viruses) - var/datum/disease/D = thing - if(!(D.spread_flags & VIRUS_SPREAD_SPECIAL)) - B.data["viruses"] += D.Copy() - if(O.has_dna()) - B.data["blood_DNA"] = O.dna.unique_enzymes - - if(O.resistances&&O.resistances.len) - B.data["resistances"] = O.resistances.Copy() - bucket.reagents.reagent_list += B - bucket.reagents.update_total() - bucket.on_reagent_change() - //bucket_of_blood.reagents.handle_reactions() //blood doesn't react - ..() - -/datum/food_processor_process/mob/monkey/input = /mob/living/carbon/monkey -/datum/food_processor_process/mob/monkey/output = null /obj/machinery/processor/proc/select_recipe(X) - for (var/Type in subtypesof(/datum/food_processor_process) - /datum/food_processor_process/mob) - var/datum/food_processor_process/P = new Type() - if (!istype(X, P.input)) + for (var/type in subtypesof(/datum/food_processor_process) - /datum/food_processor_process/mob) + var/datum/food_processor_process/recipe = new type() + if (!istype(X, recipe.input) || !istype(src, recipe.required_machine)) continue - return P - return 0 + return recipe /obj/machinery/processor/attackby(obj/item/O, mob/user, params) if(src.processing) - to_chat(user, "The processor is in the process of processing!") + to_chat(user, "[src] is in the process of processing!") return 1 if(default_deconstruction_screwdriver(user, "processor", "processor1", O)) return @@ -205,12 +122,12 @@ return ..() /obj/machinery/processor/attack_hand(mob/user) - if (src.stat != 0) //NOPOWER etc + if(stat & (NOPOWER|BROKEN)) return if(src.processing) - to_chat(user, "The processor is in the process of processing!") + to_chat(user, "[src] is in the process of processing!") return 1 - if(user.a_intent == INTENT_GRAB && user.pulling && (isslime(user.pulling) || ismonkey(user.pulling))) + if(user.a_intent == INTENT_GRAB && user.pulling && select_recipe(user.pulling)) if(user.grab_state < GRAB_AGGRESSIVE) to_chat(user, "You need a better grip to do that!") return @@ -220,7 +137,7 @@ user.stop_pulling() return if(src.contents.len == 0) - to_chat(user, "The processor is empty!") + to_chat(user, "[src] is empty!") return 1 processing = TRUE user.visible_message("[user] turns on [src].", \ @@ -238,12 +155,12 @@ var/offset = prob(50) ? -2 : 2 animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = (total_time / rating_speed)*5) //start shaking sleep(total_time / rating_speed) - for(var/O in src.contents) + for(var/atom/movable/O in src.contents) var/datum/food_processor_process/P = select_recipe(O) if (!P) - log_admin("DEBUG: [O] in processor havent suitable recipe. How do you put it in?") //-rastaf0 + log_admin("DEBUG: [O] in processor havent suitable recipe. How do you put it in?") continue - P.process_food(src.loc, O, src) + process_food(P, O) pixel_x = initial(pixel_x) //return to its spot after shaking processing = FALSE src.visible_message("\The [src] finishes processing.") @@ -267,10 +184,24 @@ return /obj/machinery/processor/slime - name = "Slime processor" + name = "slime processor" desc = "An industrial grinder with a sticker saying appropriated for science department. Keep hands clear of intake area while operating." /obj/machinery/processor/slime/Initialize() . = ..() var/obj/item/circuitboard/machine/B = new /obj/item/circuitboard/machine/processor/slime(null) - B.apply_default_parts(src) \ No newline at end of file + B.apply_default_parts(src) + +/obj/machinery/processor/slime/adjust_item_drop_location(atom/movable/AM) + var/static/list/slimecores = subtypesof(/obj/item/slime_extract) + var/i = 0 + if(!(i = slimecores.Find(AM.type))) // If the item is not found + return + if (i <= 16) // If in the first 12 slots + AM.pixel_x = -12 + ((i%4)*8) + AM.pixel_y = -12 + (round(i/4)*8) + return i + var/ii = i - 16 + AM.pixel_x = -8 + ((ii%3)*8) + AM.pixel_y = -8 + (round(ii/3)*8) + return i diff --git a/code/modules/food_and_drinks/recipes/processor_recipes.dm b/code/modules/food_and_drinks/recipes/processor_recipes.dm new file mode 100644 index 0000000000..1da81b99ec --- /dev/null +++ b/code/modules/food_and_drinks/recipes/processor_recipes.dm @@ -0,0 +1,50 @@ +/datum/food_processor_process + var/input + var/output + var/time = 40 + var/required_machine = /obj/machinery/processor + +/datum/food_processor_process/meat + input = /obj/item/reagent_containers/food/snacks/meat/slab + output = /obj/item/reagent_containers/food/snacks/faggot + +/datum/food_processor_process/bacon + input = /obj/item/reagent_containers/food/snacks/meat/rawcutlet + output = /obj/item/reagent_containers/food/snacks/meat/rawbacon + +/datum/food_processor_process/potatowedges + input = /obj/item/reagent_containers/food/snacks/grown/potato/wedges + output = /obj/item/reagent_containers/food/snacks/fries + +/datum/food_processor_process/sweetpotato + input = /obj/item/reagent_containers/food/snacks/grown/potato/sweet + output = /obj/item/reagent_containers/food/snacks/yakiimo + +/datum/food_processor_process/potato + input = /obj/item/reagent_containers/food/snacks/grown/potato + output = /obj/item/reagent_containers/food/snacks/tatortot + +/datum/food_processor_process/carrot + input = /obj/item/reagent_containers/food/snacks/grown/carrot + output = /obj/item/reagent_containers/food/snacks/carrotfries + +/datum/food_processor_process/soybeans + input = /obj/item/reagent_containers/food/snacks/grown/soybeans + output = /obj/item/reagent_containers/food/snacks/soydope + +/datum/food_processor_process/spaghetti + input = /obj/item/reagent_containers/food/snacks/doughslice + output = /obj/item/reagent_containers/food/snacks/spaghetti + +/datum/food_processor_process/corn + input = /obj/item/reagent_containers/food/snacks/grown/corn + output = /obj/item/reagent_containers/food/snacks/tortilla + +/datum/food_processor_process/parsnip + input = /obj/item/reagent_containers/food/snacks/grown/parsnip + output = /obj/item/reagent_containers/food/snacks/roastparsnip + +/datum/food_processor_process/mob/slime + input = /mob/living/simple_animal/slime + output = null + required_machine = /obj/machinery/processor/slime \ No newline at end of file diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index a041e1d8eb..89f6316297 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -218,9 +218,9 @@ /obj/item/hand/proc/update_conceal() if (src.concealed) - src.hi.updateContent("headbar", "You are currently concealing your hand. Reveal your hand.") + src.hi.updateContent("headbar", "You are currently concealing your hand. Reveal your hand.") else - src.hi.updateContent("headbar", "You are currently revealing your hand. Conceal your hand.") + src.hi.updateContent("headbar", "You are currently revealing your hand. Conceal your hand.") /obj/item/hand/update_icon() if (!cards.len) @@ -260,7 +260,7 @@ var/html = "" for(var/datum/playingcard/card in cards) - html = html + "" + html = html + "" src.hi.updateContent("hand", html) diff --git a/code/modules/html_interface/html_interface.dm b/code/modules/html_interface/html_interface.dm index e53d67b364..a8b48079fa 100644 --- a/code/modules/html_interface/html_interface.dm +++ b/code/modules/html_interface/html_interface.dm @@ -149,20 +149,20 @@ GLOBAL_LIST_EMPTY(html_interfaces) asset_list[type] = assetlist /datum/html_interface/proc/createWindow(datum/html_interface_client/hclient) - winclone(hclient.client, "window", "browser_\ref[src]") + winclone(hclient.client, "window", "browser_[REF(src)]") var/list/params = list( "size" = "[width]x[height]", "statusbar" = "false", - "on-close" = "byond://?src=\ref[src]&html_interface_action=onclose" + "on-close" = "byond://?src=[REF(src)]&html_interface_action=onclose" ) if (hclient.client.hi_last_pos) params["pos"] = "[hclient.client.hi_last_pos]" - winset(hclient.client, "browser_\ref[src]", list2params(params)) + winset(hclient.client, "browser_[REF(src)]", list2params(params)) - winset(hclient.client, "browser_\ref[src].browser", list2params(list("parent" = "browser_\ref[src]", "type" = "browser", "pos" = "0,0", "size" = "[width]x[height]", "anchor1" = "0,0", "anchor2" = "100,100", "use-title" = "true", "auto-format" = "false"))) + winset(hclient.client, "browser_[REF(src)].browser", list2params(list("parent" = "browser_[REF(src)]", "type" = "browser", "pos" = "0,0", "size" = "[width]x[height]", "anchor1" = "0,0", "anchor2" = "100,100", "use-title" = "true", "auto-format" = "false"))) /* * Public API */ /datum/html_interface/proc/getTitle() @@ -185,7 +185,7 @@ GLOBAL_LIST_EMPTY(html_interfaces) if (istype(hclient)) if (hclient.is_loaded) - hclient.client << output(list2params(list(jscript)), "browser_\ref[src].browser:eval") + hclient.client << output(list2params(list(jscript)), "browser_[REF(src)].browser:eval") else for (var/client in src.clients) if(src.clients[client]) @@ -200,7 +200,7 @@ GLOBAL_LIST_EMPTY(html_interfaces) if (istype(hclient)) if (hclient.is_loaded) - hclient.client << output(list2params(arguments), "browser_\ref[src].browser:[func]") + hclient.client << output(list2params(arguments), "browser_[REF(src)].browser:[func]") else for (var/client in src.clients) if (src.clients[client]) @@ -235,15 +235,15 @@ GLOBAL_LIST_EMPTY(html_interfaces) if ((type in asset_list) && islist(asset_list[type])) send_asset_list(hclient.client, asset_list[type], TRUE) - if (!winexists(hclient.client, "browser_\ref[src]")) + if (!winexists(hclient.client, "browser_[REF(src)]")) src.createWindow(hclient) //src._renderTitle(hclient, TRUE) //src._renderLayout(hclient) hclient.is_loaded = FALSE - hclient.client << output(replacetextEx(replacetextEx(file2text('html_interface.html'), "\[hsrc\]", "\ref[src]"), "", "[head]"), "browser_\ref[src].browser") + hclient.client << output(replacetextEx(replacetextEx(file2text('html_interface.html'), "\[hsrc\]", "[REF(src)]"), "", "[head]"), "browser_[REF(src)].browser") - winshow(hclient.client, "browser_\ref[src]", TRUE) + winshow(hclient.client, "browser_[REF(src)]", TRUE) while (hclient.client && hclient.active && !hclient.is_loaded) sleep(2) @@ -258,10 +258,10 @@ GLOBAL_LIST_EMPTY(html_interfaces) if (!src.clients.len) src.clients = null - hclient.client.hi_last_pos = winget(hclient.client, "browser_\ref[src]" ,"pos") + hclient.client.hi_last_pos = winget(hclient.client, "browser_[REF(src)]" ,"pos") - winshow(hclient.client, "browser_\ref[src]", FALSE) - winset(hclient.client, "browser_\ref[src]", "parent=none") + winshow(hclient.client, "browser_[REF(src)]", FALSE) + winset(hclient.client, "browser_[REF(src)]", "parent=none") if (hascall(src.ref, "hiOnHide")) call(src.ref, "hiOnHide")(hclient) @@ -344,7 +344,7 @@ GLOBAL_LIST_EMPTY(html_interfaces) src.specificRenderTitle(hclient) - hclient.client << output(list2params(list(title)), "browser_\ref[src].browser:setTitle") + hclient.client << output(list2params(list(title)), "browser_[REF(src)].browser:setTitle") /datum/html_interface/proc/_renderLayout(datum/html_interface_client/hclient, ignore_loaded = FALSE) if (hclient && (ignore_loaded || hclient.is_loaded)) @@ -354,7 +354,7 @@ GLOBAL_LIST_EMPTY(html_interfaces) if (html != hclient.layout) hclient.layout = html - hclient.client << output(list2params(list(html)), "browser_\ref[src].browser:updateLayout") + hclient.client << output(list2params(list(html)), "browser_[REF(src)].browser:updateLayout") for (var/id in src.content_elements) src._renderContent(id, hclient, ignore_loaded = ignore_loaded) @@ -367,7 +367,7 @@ GLOBAL_LIST_EMPTY(html_interfaces) if (ignore_cache || !(id in hclient.content_elements) || html != hclient.content_elements[id]) hclient.content_elements[id] = html - hclient.client << output(list2params(list(id, html)), "browser_\ref[src].browser:updateContent") + hclient.client << output(list2params(list(id, html)), "browser_[REF(src)].browser:updateContent") /datum/html_interface/Topic(href, href_list[]) var/datum/html_interface_client/hclient = getClient(usr.client) diff --git a/code/modules/html_interface/nanotrasen/nanotrasen.dm b/code/modules/html_interface/nanotrasen/nanotrasen.dm index c9758d85ce..ac7a7f242f 100644 --- a/code/modules/html_interface/nanotrasen/nanotrasen.dm +++ b/code/modules/html_interface/nanotrasen/nanotrasen.dm @@ -27,7 +27,7 @@ The client is optional and may be a /mob, /client or /html_interface_client obje /datum/html_interface/specificRenderTitle(datum/html_interface_client/hclient, ignore_cache = FALSE) // Update the title in our custom header (in addition to default functionality) - winset(hclient.client, "browser_\ref[src].uiTitle", list2params(list("text" = "[src.title]"))) + winset(hclient.client, "browser_[REF(src)].uiTitle", list2params(list("text" = "[src.title]"))) /datum/html_interface/nanotrasen/registerResources(var/list/resources = list()) resources["uiBg.png"] = 'uiBg.png' @@ -39,19 +39,19 @@ The client is optional and may be a /mob, /client or /html_interface_client obje . = ..() // we want the default window // Remove the titlebar - winset(hclient.client, "browser_\ref[src]", list2params(list( + winset(hclient.client, "browser_[REF(src)]", list2params(list( "titlebar" = "false" ))) // Reposition the browser - winset(hclient.client, "browser_\ref[src].browser", list2params(list( + winset(hclient.client, "browser_[REF(src)].browser", list2params(list( "pos" = "0,35", "size" = "[width]x[height - 35]" ))) // Add top background image - winset(hclient.client, "browser_\ref[src].topbg", list2params(list( - "parent" = "browser_\ref[src]", + winset(hclient.client, "browser_[REF(src)].topbg", list2params(list( + "parent" = "browser_[REF(src)]", "type" = "label", "pos" = "0,0", "size" = "[width]x35", @@ -63,8 +63,8 @@ The client is optional and may be a /mob, /client or /html_interface_client obje ))) // Add Nanotrasen logo - winset(hclient.client, "browser_\ref[src].uiTitleFluff", list2params(list( - "parent" = "browser_\ref[src]", + winset(hclient.client, "browser_[REF(src)].uiTitleFluff", list2params(list( + "parent" = "browser_[REF(src)]", "type" = "label", "pos" = "[width - 42 - 4 - 24 - 4 - 24 - 4],5", "size" = "42x24", @@ -76,8 +76,8 @@ The client is optional and may be a /mob, /client or /html_interface_client obje ))) // Add Eye picture - winset(hclient.client, "browser_\ref[src].uiTitleEye", list2params(list( - "parent" = "browser_\ref[src]", + winset(hclient.client, "browser_[REF(src)].uiTitleEye", list2params(list( + "parent" = "browser_[REF(src)]", "type" = "label", "pos" = "8,5", "size" = "42x24", @@ -89,8 +89,8 @@ The client is optional and may be a /mob, /client or /html_interface_client obje ))) // Add title text - winset(hclient.client, "browser_\ref[src].uiTitle", list2params(list( - "parent" = "browser_\ref[src]", + winset(hclient.client, "browser_[REF(src)].uiTitle", list2params(list( + "parent" = "browser_[REF(src)]", "type" = "label", "is-transparent" = "true", "pos" = "64,0", @@ -107,8 +107,8 @@ The client is optional and may be a /mob, /client or /html_interface_client obje // Add minimize button // TODO: Style the button (add image) - winset(hclient.client, "browser_\ref[src].uiTitleMinimize", list2params(list( - "parent" = "browser_\ref[src]", + winset(hclient.client, "browser_[REF(src)].uiTitleMinimize", list2params(list( + "parent" = "browser_[REF(src)]", "type" = "button", "is-flat" = "true", "background-color"="#383838", // should be unnecessary if image is used @@ -123,18 +123,18 @@ The client is optional and may be a /mob, /client or /html_interface_client obje "font-size" = "12", // ~ 16px - should be unnecessary if image is used // Disable resizing (disables maximizing), minimize window, bind window.on-size to catch 'restore window' button to enable resizing if restored. - "command" = ".winset \"browser_\ref[src].can-resize=false;browser_\ref[src].is-minimized=true;browser_\ref[src].on-size=\".swinset \\\"browser_\ref[src].can-resize=true;browser_\ref[src].on-size=\\\"\"\"" + "command" = ".winset \"browser_[REF(src)].can-resize=false;browser_[REF(src)].is-minimized=true;browser_[REF(src)].on-size=\".swinset \\\"browser_[REF(src)].can-resize=true;browser_[REF(src)].on-size=\\\"\"\"" ))) // Add close button // TODO: Style the button (add image) - winset(hclient.client, "browser_\ref[src].uiTitleClose", list2params(list( - "parent" = "browser_\ref[src]", + winset(hclient.client, "browser_[REF(src)].uiTitleClose", list2params(list( + "parent" = "browser_[REF(src)]", "type" = "button", "is-flat" = "true", "background-color"="#383838", // should be unnecessary if image is used "text-color" = "#FFFFFF", // should be unnecessary if image is used - "command" = "byond://?src=\ref[src];html_interface_action=onclose", + "command" = "byond://?src=[REF(src)];html_interface_action=onclose", "is-transparent" = "true", "pos" = "[width - 24 - 4],5", "size" = "24x24", @@ -173,6 +173,6 @@ The client is optional and may be a /mob, /client or /html_interface_client obje if (hclient.getExtraVar("eye_color") != color) hclient.putExtraVar("eye_color", color) - winset(hclient.client, "browser_\ref[src].uiTitleEye", list2params(list("image" = "[resource]"))) + winset(hclient.client, "browser_[REF(src)].uiTitleEye", list2params(list("image" = "[resource]"))) else WARNING("Invalid object passed to /datum/html_interface/nanotrasen/proc/setEyeColor") \ No newline at end of file diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 1535173f8d..d46875eb00 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -183,17 +183,17 @@ categories[C] += D dat += "
    Biomass: [points] units.

    " - dat += "ActivateDetach Container" + dat += "ActivateDetach Container" for(var/cat in categories) dat += "

    [cat]:

    " dat += "
    " for(var/V in categories[cat]) var/datum/design/D = V - dat += "[D.name]: Make" + dat += "[D.name]: Make" if(cat in timesFiveCategories) - dat += "x5" + dat += "x5" if(ispath(D.build_path, /obj/item/stack)) - dat += "x10" + dat += "x10" dat += "([D.materials[MAT_BIOMASS]/efficiency])
    " dat += "
    " else diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index 9235bb83d7..bd0215138a 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -171,19 +171,19 @@ dat += "[target.get_name()] gene with [disk.gene.get_name()]?
    " if("insert") dat += "[disk.gene.get_name()] gene into \the [seed]?
    " - dat += "
    Confirm " - dat += "Abort
    " + dat += "
    Confirm " + dat += "Abort
    " popup.set_content(dat) popup.open() return dat+= "
    " dat += "
    [G.get_name()]" if(can_extract) - dat += "Extract" + dat += "Extract" if(can_insert && istype(disk.gene, G.type)) - dat += "Replace" + dat += "Replace" dat += "
    " @@ -221,15 +221,15 @@ var/datum/plant_gene/G = a dat += "[G.get_name()]" if(can_extract) - dat += "Extract" - dat += "Remove" + dat += "Extract" + dat += "Remove" dat += "" dat += "" else dat += "No content-related genes detected in sample.
    " dat += "" if(can_insert && istype(disk.gene, /datum/plant_gene/reagent)) - dat += "Insert: [disk.gene.get_name()]" + dat += "Insert: [disk.gene.get_name()]" dat += "

    Trait Genes

    " if(trait_genes.len) @@ -238,14 +238,14 @@ var/datum/plant_gene/G = a dat += "[G.get_name()]" if(can_extract) - dat += "Extract" - dat += "Remove" + dat += "Extract" + dat += "Remove" dat += "" dat += "" else dat += "No trait-related genes detected in sample.
    " if(can_insert && istype(disk.gene, /datum/plant_gene/trait)) - dat += "Insert: [disk.gene.get_name()]" + dat += "Insert: [disk.gene.get_name()]" dat += "
    " else dat += "
    No sample found.
    Please, insert a plant sample to use this device." diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 54805f3141..0899a21132 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -136,7 +136,7 @@ for (var/datum/seed_pile/O in piles) dat += "[O.name][O.lifespan][O.endurance][O.maturation]" dat += "[O.production][O.yield][O.potency]" - dat += "Vend ([O.amount] left)" + dat += "Vend ([O.amount] left)" dat += "" var/datum/browser/popup = new(user, "seed_ext", name, 700, 400) popup.set_content(dat) diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 081ecdcdaa..fb55a0565b 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -39,10 +39,10 @@ switch(screenstate) if(0) dat += "

    Search Settings


    " - dat += "Filter by Title: [title]
    " - dat += "Filter by Category: [category]
    " - dat += "Filter by Author: [author]
    " - dat += "\[Start Search\]
    " + dat += "Filter by Title: [title]
    " + dat += "Filter by Category: [category]
    " + dat += "Filter by Author: [author]
    " + dat += "\[Start Search\]
    " if(1) if (!SSdbcore.Connect()) dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance.
    " @@ -62,7 +62,7 @@ var/id = query_library_list_books.item[4] dat += "[author][title][category][id]" dat += "
    " - dat += "\[Go Back\]
    " + dat += "\[Go Back\]
    " var/datum/browser/popup = new(user, "publiclibrary", name, 600, 400) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) @@ -193,7 +193,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums if (libcomp_menu.len < page) libcomp_menu.len = page libcomp_menu[page] = "" - libcomp_menu[page] += "[C.author][C.title][C.category]\[Order\]\n" + libcomp_menu[page] += "[C.author][C.title][C.category]\[Order\]\n" /obj/machinery/computer/libraryconsole/bookmanagement/Initialize() . = ..() @@ -207,15 +207,15 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums switch(screenstate) if(0) // Main Menu - dat += "1. View General Inventory
    " - dat += "2. View Checked Out Inventory
    " - dat += "3. Check out a Book
    " - dat += "4. Connect to External Archive
    " - dat += "5. Upload New Title to Archive
    " - dat += "6. Upload Scanned Title to Newscaster
    " - dat += "7. Print Corporate Materials
    " + dat += "1. View General Inventory
    " + dat += "2. View Checked Out Inventory
    " + dat += "3. Check out a Book
    " + dat += "4. Connect to External Archive
    " + dat += "5. Upload New Title to Archive
    " + dat += "6. Upload Scanned Title to Newscaster
    " + dat += "7. Print Corporate Materials
    " if(src.emagged) - dat += "8. Access the Forbidden Lore Vault
    " + dat += "8. Access the Forbidden Lore Vault
    " if(src.arcanecheckout) print_forbidden_lore(user) src.arcanecheckout = 0 @@ -223,8 +223,8 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums // Inventory dat += "

    Inventory


    " for(var/obj/item/book/b in inventory) - dat += "[b.name] (Delete)
    " - dat += "(Return to main menu)
    " + dat += "[b.name] (Delete)
    " + dat += "(Return to main menu)
    " if(2) // Checked Out dat += "

    Checked Out Books


    " @@ -241,20 +241,20 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums else timedue = round(timedue) dat += "\"[b.bookname]\", Checked out to: [b.mobname]
    --- Taken: [timetaken] minutes ago, Due: in [timedue] minutes
    " - dat += "(Check In)

    " - dat += "(Return to main menu)
    " + dat += "(Check In)

    " + dat += "(Return to main menu)
    " if(3) // Check Out a Book dat += "

    Check Out a Book


    " dat += "Book: [src.buffer_book] " - dat += "\[Edit\]
    " + dat += "\[Edit\]
    " dat += "Recipient: [src.buffer_mob] " - dat += "\[Edit\]
    " + dat += "\[Edit\]
    " dat += "Checkout Date : [world.time/600]
    " dat += "Due Date: [(world.time + checkoutperiod)/600]
    " - dat += "(Checkout Period: [checkoutperiod] minutes) (+/-)" - dat += "(Commit Entry)
    " - dat += "(Return to main menu)
    " + dat += "(Checkout Period: [checkoutperiod] minutes) (+/-)" + dat += "(Commit Entry)
    " + dat += "(Return to main menu)
    " if(4) dat += "

    External Archive

    " build_library_menu() @@ -262,13 +262,13 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums if(!GLOB.cachedbooks) dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance." else - dat += "(Order book by SS13BN)

    " + dat += "(Order book by SS13BN)

    " dat += "" dat += "" dat += libcomp_menu[Clamp(page,1,libcomp_menu.len)] - dat += "" + dat += "" dat += "
    AUTHORTITLECATEGORY
    <<<< >>>>
    <<<< >>>>
    " - dat += "
    (Return to main menu)
    " + dat += "
    (Return to main menu)
    " if(5) dat += "

    Upload a New Title

    " if(!scanner) @@ -282,10 +282,10 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += "Title: [scanner.cache.name]
    " if(!scanner.cache.author) scanner.cache.author = "Anonymous" - dat += "Author: [scanner.cache.author]
    " - dat += "Category: [upload_category]
    " - dat += "\[Upload\]
    " - dat += "(Return to main menu)
    " + dat += "Author: [scanner.cache.author]
    " + dat += "Category: [upload_category]
    " + dat += "\[Upload\]
    " + dat += "(Return to main menu)
    " if(6) dat += "

    Post Title to Newscaster

    " if(!scanner) @@ -296,19 +296,19 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += "No data found in scanner memory.
    " else dat += "Post [scanner.cache.name] to station newscasters?" - dat += "\[Post\]
    " - dat += "(Return to main menu)
    " + dat += "\[Post\]
    " + dat += "(Return to main menu)
    " if(7) dat += "

    NTGanda(tm) Universal Printing Module

    " dat += "What would you like to print?
    " - dat += "\[Bible\]
    " - dat += "\[Poster\]
    " - dat += "(Return to main menu)
    " + dat += "\[Bible\]
    " + dat += "\[Poster\]
    " + dat += "(Return to main menu)
    " if(8) dat += "

    Accessing Forbidden Lore Vault v 1.3

    " dat += "Are you absolutely sure you want to proceed? EldritchTomes Inc. takes no responsibilities for loss of sanity resulting from this action.

    " - dat += "Yes.
    " - dat += "No.
    " + dat += "Yes.
    " + dat += "No.
    " var/datum/browser/popup = new(user, "library", name, 600, 400) popup.set_content(dat) @@ -519,9 +519,9 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += "Data stored in memory.
    " else dat += "No data stored in memory.
    " - dat += "\[Scan\]" + dat += "\[Scan\]" if(cache) - dat += " \[Clear Memory\]

    \[Remove Book\]" + dat += " \[Clear Memory\]

    \[Remove Book\]" else dat += "
    " var/datum/browser/popup = new(user, "scanner", name, 600, 400) diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm index 382237e5c3..910cc6fe60 100644 --- a/code/modules/mapping/map_template.dm +++ b/code/modules/mapping/map_template.dm @@ -74,7 +74,7 @@ if(T.y+height > world.maxy) return - var/list/bounds = maploader.load_map(file(mappath), T.x, T.y, T.z, cropMap=TRUE) + var/list/bounds = maploader.load_map(file(mappath), T.x, T.y, T.z, cropMap=TRUE, no_changeturf=(SSatoms.initialized == INITIALIZATION_INSSATOMS)) if(!bounds) return diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm index fc935fb642..8cf6c56037 100644 --- a/code/modules/mining/aux_base.dm +++ b/code/modules/mining/aux_base.dm @@ -46,11 +46,11 @@ interface with the mining shuttle at the landing site if a mobile beacon is also if(!M.check_dock(S)) continue destination_found = 1 - dat += "Send to [S.name]
    " + dat += "Send to [S.name]
    " if(!destination_found && (z in GLOB.station_z_levels)) //Only available if miners are lazy and did not set an LZ using the remote. - dat += "Prepare for blind drop? (Dangerous)
    " + dat += "Prepare for blind drop? (Dangerous)
    " if(LAZYLEN(turrets)) - dat += "
    Perimeter Defense System: Enable All / Disable All
    \ + dat += "
    Perimeter Defense System: Enable All / Disable All
    \ Units connected: [LAZYLEN(turrets)]
    \ Unit | Condition | Status | Direction | Distance
    " for(var/PDT in turrets) @@ -65,10 +65,10 @@ interface with the mining shuttle at the landing site if a mobile beacon is also status = "Firing" else status = "All Clear" - dat += "[T.name] | [integrity]% | [status] | [dir2text(get_dir(src, T))] | [get_dist(src, T)]m Toggle Power
    " + dat += "[T.name] | [integrity]% | [status] | [dir2text(get_dir(src, T))] | [get_dist(src, T)]m Toggle Power
    " - dat += "Close" + dat += "Close" var/datum/browser/popup = new(user, "computer", "base management", 550, 300) //width, height popup.set_content("

    [dat]
    ") @@ -154,7 +154,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also var/area/A = get_area(T) var/obj/docking_port/stationary/landing_zone = new /obj/docking_port/stationary(T) - landing_zone.id = "colony_drop(\ref[src])" + landing_zone.id = "colony_drop([REF(src)])" landing_zone.name = "Landing Zone ([T.x], [T.y])" landing_zone.dwidth = base_dock.dwidth landing_zone.dheight = base_dock.dheight diff --git a/code/modules/mining/equipment/lazarus_injector.dm b/code/modules/mining/equipment/lazarus_injector.dm index 59b0a02788..e56e8060bf 100644 --- a/code/modules/mining/equipment/lazarus_injector.dm +++ b/code/modules/mining/equipment/lazarus_injector.dm @@ -31,7 +31,7 @@ if(ishostile(target)) var/mob/living/simple_animal/hostile/H = M if(malfunctioning) - H.faction |= list("lazarus", "\ref[user]") + H.faction |= list("lazarus", "[REF(user)]") H.robust_searching = 1 H.friends += user H.attack_same = 1 diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 4d3dc5db37..afdcc1339c 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -749,7 +749,7 @@ to_chat(user, "You call out for aid, attempting to summon spirits to your side.") notify_ghosts("[user] is raising [user.p_their()] [src], calling for your help!", - enter_link="(Click to help)", + enter_link="(Click to help)", source = user, action=NOTIFY_ORBIT) summon_cooldown = world.time + 600 diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 75c0f94ac4..276c030175 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -10,7 +10,7 @@ anchored = TRUE var/obj/machinery/mineral/processing_unit/machine = null var/machinedir = EAST - speed_process = 1 + speed_process = TRUE /obj/machinery/mineral/processing_unit_console/Initialize() . = ..() @@ -106,7 +106,7 @@ if (selected_material == mat_id) dat += " Smelting" else - dat += " Not Smelting " + dat += " Not Smelting " dat += "
    " dat += "

    " @@ -118,16 +118,16 @@ if (selected_alloy == D.id) dat += " Smelting" else - dat += " Not Smelting " + dat += " Not Smelting " dat += "
    " dat += "

    " //On or off dat += "Machine is currently " if (on) - dat += "On " + dat += "On " else - dat += "Off " + dat += "Off " return dat diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 437073a1fc..0b1a988fc2 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -11,7 +11,7 @@ input_dir = NORTH output_dir = SOUTH req_access = list(ACCESS_MINERAL_STOREROOM) - speed_process = 1 + speed_process = TRUE circuit = /obj/item/circuitboard/machine/ore_redemption var/req_access_reclaim = ACCESS_MINING_STATION var/obj/item/card/id/inserted_id diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index c2bf0849bb..3c7e736105 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -9,7 +9,7 @@ anchored = TRUE var/obj/machinery/mineral/stacking_machine/machine = null var/machinedir = SOUTHEAST - speed_process = 1 + speed_process = TRUE /obj/machinery/mineral/stacking_unit_console/Initialize() . = ..() @@ -29,7 +29,7 @@ for(var/O in machine.stack_list) s = machine.stack_list[O] if(s.amount > 0) - dat += text("[capitalize(s.name)]: [s.amount] Release
    ") + dat += text("[capitalize(s.name)]: [s.amount] Release
    ") dat += text("
    Stacking: [machine.stack_amt]

    ") diff --git a/code/modules/mining/machine_unloading.dm b/code/modules/mining/machine_unloading.dm index 8192b0fc6a..6896a1a805 100644 --- a/code/modules/mining/machine_unloading.dm +++ b/code/modules/mining/machine_unloading.dm @@ -1,32 +1,32 @@ -/**********************Unloading unit**************************/ - - -/obj/machinery/mineral/unloading_machine - name = "unloading machine" - icon = 'icons/obj/machines/mining_machines.dmi' - icon_state = "unloader" +/**********************Unloading unit**************************/ + + +/obj/machinery/mineral/unloading_machine + name = "unloading machine" + icon = 'icons/obj/machines/mining_machines.dmi' + icon_state = "unloader" density = TRUE anchored = TRUE - input_dir = WEST - output_dir = EAST - speed_process = 1 - -/obj/machinery/mineral/unloading_machine/process() - var/turf/T = get_step(src,input_dir) - if(T) - var/limit - for(var/obj/structure/ore_box/B in T) - for (var/obj/item/ore/O in B) - B.contents -= O - unload_mineral(O) - limit++ - if (limit>=10) - return - CHECK_TICK - CHECK_TICK - for(var/obj/item/I in T) - unload_mineral(I) - limit++ - if (limit>=10) - return - CHECK_TICK \ No newline at end of file + input_dir = WEST + output_dir = EAST + speed_process = TRUE + +/obj/machinery/mineral/unloading_machine/process() + var/turf/T = get_step(src,input_dir) + if(T) + var/limit + for(var/obj/structure/ore_box/B in T) + for (var/obj/item/ore/O in B) + B.contents -= O + unload_mineral(O) + limit++ + if (limit>=10) + return + CHECK_TICK + CHECK_TICK + for(var/obj/item/I in T) + unload_mineral(I) + limit++ + if (limit>=10) + return + CHECK_TICK diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 5a228973ce..cbf7dfd826 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -89,13 +89,13 @@ var/dat dat +="
    " if(istype(inserted_id)) - dat += "You have [inserted_id.mining_points] mining points collected. Eject ID.
    " + dat += "You have [inserted_id.mining_points] mining points collected. Eject ID.
    " else - dat += "No ID inserted. Insert ID.
    " + dat += "No ID inserted. Insert ID.
    " dat += "
    " dat += "
    Equipment point cost list:
    " for(var/datum/data/mining_equipment/prize in prize_list) - dat += "" + dat += "" dat += "
    [prize.equipment_name][prize.cost]Purchase
    [prize.equipment_name][prize.cost]Purchase
    " var/datum/browser/popup = new(user, "miningvendor", "Mining Equipment Vendor", 400, 350) diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 1a4e4c5ed1..fef21757d1 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -11,7 +11,7 @@ var/processing = FALSE var/chosen = MAT_METAL //which material will be used to make coins var/coinsToProduce = 10 - speed_process = 1 + speed_process = TRUE /obj/machinery/mineral/mint/Initialize() @@ -22,7 +22,7 @@ var/turf/T = get_step(src, input_dir) if(!T) return - + GET_COMPONENT(materials, /datum/component/material_container) for(var/obj/item/stack/sheet/O in T) materials.insert_stack(O, O.amount) @@ -39,20 +39,20 @@ if (chosen == mat_id) dat += "Chosen" else - dat += "Choose" + dat += "Choose" var/datum/material/M = materials.materials[chosen] dat += "

    Will produce [coinsToProduce] [lowertext(M.name)] coins if enough materials are available.
    " - dat += "-10 " - dat += "-5 " - dat += "-1 " - dat += "+1 " - dat += "+5 " - dat += "+10 " + dat += "-10 " + dat += "-5 " + dat += "-1 " + dat += "+1 " + dat += "+5 " + dat += "+10 " dat += "

    In total this machine produced [newCoins] coins." - dat += "
    Make coins" + dat += "
    Make coins" user << browse(dat, "window=mint") /obj/machinery/mineral/mint/Topic(href, href_list) diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index 832d55a6a0..4c772a7019 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -47,7 +47,7 @@ for(var/i in oretypes) var/obj/item/ore/T = locate(i) in contents dat += "[capitalize(T.name)]: [count_by_type(contents, T.type)]
    " - dat += text("

    Empty box") + dat += text("

    Empty box") user << browse(dat, "window=orebox") /obj/structure/ore_box/proc/dump_box_contents() diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 2b2c50ed17..458a54aa48 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -1,4 +1,4 @@ -#define LINKIFY_READY(string, value) "[string]" +#define LINKIFY_READY(string, value) "[string]" /mob/dead/new_player var/ready = 0 @@ -33,7 +33,7 @@ return /mob/dead/new_player/proc/new_player_panel() - var/output = "

    Setup Character

    " + var/output = "

    Setup Character

    " if(SSticker.current_state <= GAME_STATE_PREGAME) switch(ready) @@ -44,8 +44,8 @@ if(PLAYER_READY_TO_OBSERVE) output += "

    \[ [LINKIFY_READY("Ready", PLAYER_READY_TO_PLAY)] | [LINKIFY_READY("Not Ready", PLAYER_NOT_READY)] | Observe \]

    " else - output += "

    View the Crew Manifest

    " - output += "

    Join Game!

    " + output += "

    View the Crew Manifest

    " + output += "

    Join Game!

    " output += "

    [LINKIFY_READY("Observe", PLAYER_READY_TO_OBSERVE)]

    " if(!IsGuestKey(src.key)) @@ -60,9 +60,9 @@ newpoll = 1 if(newpoll) - output += "

    Show Player Polls (NEW!)

    " + output += "

    Show Player Polls (NEW!)

    " else - output += "

    Show Player Polls

    " + output += "

    Show Player Polls

    " output += "
    " @@ -449,12 +449,12 @@ var/position_class = "otherPosition" if (job.title in GLOB.command_positions) position_class = "commandPosition" - dat += "[job.title] ([job.current_positions])
    " + dat += "[job.title] ([job.current_positions])
    " if(!job_count) //if there's nowhere to go, assistant opens up. for(var/datum/job/job in SSjob.occupations) if(job.title != "Assistant") continue - dat += "[job.title] ([job.current_positions])
    " + dat += "[job.title] ([job.current_positions])
    " break dat += "" diff --git a/code/modules/mob/dead/new_player/poll.dm b/code/modules/mob/dead/new_player/poll.dm index 2e2f3189fe..d10e32a887 100644 --- a/code/modules/mob/dead/new_player/poll.dm +++ b/code/modules/mob/dead/new_player/poll.dm @@ -14,7 +14,7 @@ while(query_poll_get.NextRow()) var/pollid = query_poll_get.item[1] var/pollquestion = query_poll_get.item[2] - output += "[pollquestion]" + output += "[pollquestion]" i++ output += "" src << browse(output,"window=playerpolllist;size=500x300") @@ -60,8 +60,8 @@ output += "Question: [pollquestion]
    " output += "Poll runs from [pollstarttime] until [pollendtime]

    " if(!votedoptionid) - output += "" - output += "" + output += "" + output += "" output += "" output += "" output += "
    " @@ -92,15 +92,15 @@ output += "Question: [pollquestion]
    " output += "Feedback gathering runs from [pollstarttime] until [pollendtime]

    " if(!vote_text) - output += "" - output += "" + output += "" + output += "" output += "" output += "" output += "Please provide feedback below. You can use any letters of the English alphabet, numbers and the symbols: . , ! ? : ; -
    " output += "" output += "

    " - output += "

    " - output += "" + output += "" + output += "" output += "" output += "" output += "" @@ -123,8 +123,8 @@ rating = query_rating_get_votes.item[2] output += "
    [optiontext] - [rating]" if(!rating) - output += "" - output += "" + output += "" + output += "" output += "" output += "" var/minid = 999999 @@ -188,8 +188,8 @@ output += "Question: [pollquestion]
    You can select up to [multiplechoiceoptions] options. If you select more, the first [multiplechoiceoptions] will be saved.
    " output += "Poll runs from [pollstarttime] until [pollendtime]

    " if(!votedfor.len) - output += "" - output += "" + output += "" + output += "" output += "" output += "" output += "" @@ -300,8 +300,8 @@ Revoting has been enabled on this poll, if you think you made a mistake, simply revote
    Poll runs from [pollstarttime] until [pollendtime]

    - - + + diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 1ab823fd13..cf950af86e 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -331,7 +331,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(message) to_chat(src, "[message]") if(source) - var/obj/screen/alert/A = throw_alert("\ref[source]_notify_cloning", /obj/screen/alert/notify_cloning) + var/obj/screen/alert/A = throw_alert("[REF(source)]_notify_cloning", /obj/screen/alert/notify_cloning) if(A) if(client && client.prefs && client.prefs.UI_style) A.icon = ui_style2icon(client.prefs.UI_style) @@ -343,7 +343,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp A.add_overlay(source) source.layer = old_layer source.plane = old_plane - to_chat(src, "(Click to re-enter)") + to_chat(src, "(Click to re-enter)") if(sound) SEND_SOUND(src, sound(sound)) @@ -458,11 +458,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/max_view = client.prefs.unlock_content ? GHOST_MAX_VIEW_RANGE_MEMBER : GHOST_MAX_VIEW_RANGE_DEFAULT if(client.view == world.view) var/list/views = list() - for(var/i in 1 to max_view) + for(var/i in 7 to max_view) views |= i var/new_view = input("Choose your new view", "Modify view range", 7) as null|anything in views if(new_view) - client.change_view(Clamp(new_view, 1, max_view)) + client.change_view(Clamp(new_view, 7, max_view)) else client.change_view(world.view) @@ -471,7 +471,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set hidden = TRUE var/max_view = client.prefs.unlock_content ? GHOST_MAX_VIEW_RANGE_MEMBER : GHOST_MAX_VIEW_RANGE_DEFAULT if(input) - client.change_view(Clamp(client.view + input, 1, max_view)) + client.change_view(Clamp(client.view + input, 7, max_view)) /mob/dead/observer/verb/boo() set category = "Ghost" diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index d158eb9576..90f42a9dda 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -37,7 +37,7 @@ GLOBAL_VAR(posibrain_notify_cooldown) /obj/item/device/mmi/posibrain/proc/ping_ghosts(msg, newlymade) if(newlymade || GLOB.posibrain_notify_cooldown <= world.time) - notify_ghosts("[name] [msg] in [get_area(src)]!", ghost_sound = !newlymade ? 'sound/misc/server-ready.ogg':null, enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE) + notify_ghosts("[name] [msg] in [get_area(src)]!", ghost_sound = !newlymade ? 'sound/effects/ghost2.ogg':null, enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE) if(!newlymade) GLOB.posibrain_notify_cooldown = world.time + askDelay diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 9d9e327fec..d9ce6b904d 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -45,20 +45,20 @@


    "} for(var/i in 1 to held_items.len) var/obj/item/I = get_item_for_held_index(i) - dat += "
    [get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]" - dat += "
    Empty Pouches" + dat += "
    [get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]" + dat += "
    Empty Pouches" if(handcuffed) - dat += "
    Handcuffed" + dat += "
    Handcuffed" if(legcuffed) - dat += "
    Legcuffed" + dat += "
    Legcuffed" dat += {"
    -
    Close +
    Close "} - user << browse(dat.Join(), "window=mob\ref[src];size=325x500") - onclose(user, "mob\ref[src]") + user << browse(dat.Join(), "window=mob[REF(src)];size=325x500") + onclose(user, "mob[REF(src)]") /mob/living/carbon/alien/humanoid/Topic(href, href_list) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 50b18cd4d3..95a134d38f 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -184,30 +184,30 @@
    [name]
    -
    Head: [(head && !(head.flags_1&ABSTRACT_1)) ? head : "Nothing"] -
    Mask: [(wear_mask && !(wear_mask.flags_1&ABSTRACT_1)) ? wear_mask : "Nothing"] -
    Neck: [(wear_neck && !(wear_neck.flags_1&ABSTRACT_1)) ? wear_neck : "Nothing"]"} +
    Head: [(head && !(head.flags_1&ABSTRACT_1)) ? head : "Nothing"] +
    Mask: [(wear_mask && !(wear_mask.flags_1&ABSTRACT_1)) ? wear_mask : "Nothing"] +
    Neck: [(wear_neck && !(wear_neck.flags_1&ABSTRACT_1)) ? wear_neck : "Nothing"]"} for(var/i in 1 to held_items.len) var/obj/item/I = get_item_for_held_index(i) - dat += "
    [get_held_index_name(i)]:
    [(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Nothing"]" + dat += "
    [get_held_index_name(i)]:
    [(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Nothing"]" - dat += "
    Back: [back ? back : "Nothing"]" + dat += "
    Back: [back ? back : "Nothing"]" if(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/tank)) - dat += "
    [internal ? "Disable Internals" : "Set Internals"]" + dat += "
    [internal ? "Disable Internals" : "Set Internals"]" if(handcuffed) - dat += "
    Handcuffed" + dat += "
    Handcuffed" if(legcuffed) - dat += "
    Legcuffed" + dat += "
    Legcuffed" dat += {"
    -
    Close +
    Close "} - user << browse(dat, "window=mob\ref[src];size=325x500") - onclose(user, "mob\ref[src]") + user << browse(dat, "window=mob[REF(src)];size=325x500") + onclose(user, "mob[REF(src)]") /mob/living/carbon/Topic(href, href_list) ..() @@ -843,7 +843,7 @@ /mob/living/carbon/vv_get_dropdown() . = ..() . += "---" - .["Make AI"] = "?_src_=vars;[HrefToken()];makeai=\ref[src]" - .["Modify bodypart"] = "?_src_=vars;[HrefToken()];editbodypart=\ref[src]" - .["Modify organs"] = "?_src_=vars;[HrefToken()];editorgans=\ref[src]" - .["Hallucinate"] = "?_src_=vars;[HrefToken()];hallucinate=\ref[src]" + .["Make AI"] = "?_src_=vars;[HrefToken()];makeai=[REF(src)]" + .["Modify bodypart"] = "?_src_=vars;[HrefToken()];editbodypart=[REF(src)]" + .["Modify organs"] = "?_src_=vars;[HrefToken()];editorgans=[REF(src)]" + .["Hallucinate"] = "?_src_=vars;[HrefToken()];hallucinate=[REF(src)]" diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 1d6f7f6484..9cccd4418d 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -130,10 +130,12 @@ /mob/living/carbon/attack_paw(mob/living/carbon/monkey/M) - for(var/thing in viruses) - var/datum/disease/D = thing - if(D.spread_flags & VIRUS_SPREAD_CONTACT_SKIN) - M.ContactContractDisease(D) + + if(can_inject(M, TRUE)) + for(var/thing in viruses) + var/datum/disease/D = thing + if((D.spread_flags & VIRUS_SPREAD_CONTACT_SKIN) && prob(85)) + M.ContactContractDisease(D) for(var/thing in M.viruses) var/datum/disease/D = thing diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 917b590247..dd101bbb8c 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -308,8 +308,8 @@ var/datum/data/record/R = find_record("name", perpname, GLOB.data_core.general) if(R) msg += "Rank: [R.fields["rank"]]
    " - msg += "\[Front photo\] " - msg += "\[Side photo\]
    " + msg += "\[Front photo\] " + msg += "\[Side photo\]
    " if(istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(CIH, /obj/item/organ/cyberimp/eyes/hud/medical)) var/cyberimp_detect for(var/obj/item/organ/cyberimp/CI in internal_organs) @@ -320,12 +320,12 @@ msg += cyberimp_detect if(R) var/health_r = R.fields["p_stat"] - msg += "\[[health_r]\]" + msg += "\[[health_r]\]" health_r = R.fields["m_stat"] - msg += "\[[health_r]\]
    " + msg += "\[[health_r]\]
    " R = find_record("name", perpname, GLOB.data_core.medical) if(R) - msg += "\[Medical evaluation\]
    " + msg += "\[Medical evaluation\]
    " if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(CIH, /obj/item/organ/cyberimp/eyes/hud/security)) @@ -336,15 +336,11 @@ R = find_record("name", perpname, GLOB.data_core.security) if(R) criminal = R.fields["criminal"] - - msg += "Criminal status: \[[criminal]\]\n" - msg += "Security record: \[View\] " - msg += "\[Add crime\] " - msg += "\[View comment log\] " - msg += "\[Add comment\]\n" - if(print_flavor_text() && get_visible_name() != "Unknown")//Are we sure we know who this is? Don't show flavor text unless we can recognize them. Prevents certain metagaming with impersonation. - msg += "[print_flavor_text()]\n" - + msg += "Criminal status: \[[criminal]\]\n" + msg += "Security record: \[View\] " + msg += "\[Add crime\] " + msg += "\[View comment log\] " + msg += "\[Add comment\]\n" msg += "*---------*" to_chat(user, msg) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 806a7df373..7d4c62d9e1 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -105,44 +105,44 @@ dat += "" for(var/i in 1 to held_items.len) var/obj/item/I = get_item_for_held_index(i) - dat += "" + dat += "" dat += "" - dat += "" - dat += "" + dat += "" if(slot_wear_mask in obscured) dat += "" else - dat += "" + dat += "" if(slot_neck in obscured) dat += "" else - dat += "" + dat += "" if(slot_glasses in obscured) dat += "" else - dat += "" + dat += "" if(slot_ears in obscured) dat += "" else - dat += "" + dat += "" dat += "" - dat += "" + dat += "" if(wear_suit) - dat += "" else dat += "" @@ -150,41 +150,41 @@ if(slot_shoes in obscured) dat += "" else - dat += "" + dat += "" if(slot_gloves in obscured) dat += "" else - dat += "" + dat += "" if(slot_w_uniform in obscured) dat += "" else - dat += "" + dat += "" if((w_uniform == null && !(dna && dna.species.nojumpsuit)) || (slot_w_uniform in obscured)) dat += "" dat += "" dat += "" else - dat += "" - dat += "" - dat += "" + dat += "" + dat += "" if(handcuffed) - dat += "" + dat += "" if(legcuffed) - dat += "" + dat += "" dat += {"
    [get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]
    [get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]
     
    Back:[(back && !(back.flags_1&ABSTRACT_1)) ? back : "Empty"]" + dat += "
    Back:[(back && !(back.flags_1&ABSTRACT_1)) ? back : "Empty"]" if(has_breathable_mask && istype(back, /obj/item/tank)) - dat += " [internal ? "Disable Internals" : "Set Internals"]" + dat += " [internal ? "Disable Internals" : "Set Internals"]" dat += "
     
    Head:[(head && !(head.flags_1&ABSTRACT_1)) ? head : "Empty"]
    Head:[(head && !(head.flags_1&ABSTRACT_1)) ? head : "Empty"]
    Mask:Obscured
    Mask:[(wear_mask && !(wear_mask.flags_1&ABSTRACT_1)) ? wear_mask : "Empty"]
    Mask:[(wear_mask && !(wear_mask.flags_1&ABSTRACT_1)) ? wear_mask : "Empty"]
    Neck:Obscured
    Neck:[(wear_neck && !(wear_neck.flags_1&ABSTRACT_1)) ? wear_neck : "Empty"]
    Neck:[(wear_neck && !(wear_neck.flags_1&ABSTRACT_1)) ? wear_neck : "Empty"]
    Eyes:Obscured
    Eyes:[(glasses && !(glasses.flags_1&ABSTRACT_1)) ? glasses : "Empty"]
    Eyes:[(glasses && !(glasses.flags_1&ABSTRACT_1)) ? glasses : "Empty"]
    Ears:Obscured
    Ears:[(ears && !(ears.flags_1&ABSTRACT_1)) ? ears : "Empty"]
    Ears:[(ears && !(ears.flags_1&ABSTRACT_1)) ? ears : "Empty"]
     
    Exosuit:[(wear_suit && !(wear_suit.flags_1&ABSTRACT_1)) ? wear_suit : "Empty"]
    Exosuit:[(wear_suit && !(wear_suit.flags_1&ABSTRACT_1)) ? wear_suit : "Empty"]
     ↳Suit Storage:[(s_store && !(s_store.flags_1&ABSTRACT_1)) ? s_store : "Empty"]" + dat += "
     ↳Suit Storage:[(s_store && !(s_store.flags_1&ABSTRACT_1)) ? s_store : "Empty"]" if(has_breathable_mask && istype(s_store, /obj/item/tank)) - dat += " [internal ? "Disable Internals" : "Set Internals"]" + dat += " [internal ? "Disable Internals" : "Set Internals"]" dat += "
     ↳Suit Storage:
    Shoes:Obscured
    Shoes:[(shoes && !(shoes.flags_1&ABSTRACT_1)) ? shoes : "Empty"]
    Shoes:[(shoes && !(shoes.flags_1&ABSTRACT_1)) ? shoes : "Empty"]
    Gloves:Obscured
    Gloves:[(gloves && !(gloves.flags_1&ABSTRACT_1)) ? gloves : "Empty"]
    Gloves:[(gloves && !(gloves.flags_1&ABSTRACT_1)) ? gloves : "Empty"]
    Uniform:Obscured
    Uniform:[(w_uniform && !(w_uniform.flags_1&ABSTRACT_1)) ? w_uniform : "Empty"]
    Uniform:[(w_uniform && !(w_uniform.flags_1&ABSTRACT_1)) ? w_uniform : "Empty"]
     ↳Pockets:
     ↳ID:
     ↳Belt:
     ↳Belt:[(belt && !(belt.flags_1&ABSTRACT_1)) ? belt : "Empty"]" + dat += "
     ↳Belt:[(belt && !(belt.flags_1&ABSTRACT_1)) ? belt : "Empty"]" if(has_breathable_mask && istype(belt, /obj/item/tank)) - dat += " [internal ? "Disable Internals" : "Set Internals"]" + dat += " [internal ? "Disable Internals" : "Set Internals"]" dat += "
     ↳Pockets:[(l_store && !(l_store.flags_1&ABSTRACT_1)) ? "Left (Full)" : "Left (Empty)"]" - dat += " [(r_store && !(r_store.flags_1&ABSTRACT_1)) ? "Right (Full)" : "Right (Empty)"]
     ↳ID:[(wear_id && !(wear_id.flags_1&ABSTRACT_1)) ? wear_id : "Empty"]
     ↳Pockets:[(l_store && !(l_store.flags_1&ABSTRACT_1)) ? "Left (Full)" : "Left (Empty)"]" + dat += " [(r_store && !(r_store.flags_1&ABSTRACT_1)) ? "Right (Full)" : "Right (Empty)"]
     ↳ID:[(wear_id && !(wear_id.flags_1&ABSTRACT_1)) ? wear_id : "Empty"]
    Handcuffed: Remove
    Handcuffed: Remove
    Legcuffed
    Legcuffed
    - Close + Close "} - var/datum/browser/popup = new(user, "mob\ref[src]", "[src]", 440, 510) + var/datum/browser/popup = new(user, "mob[REF(src)]", "[src]", 440, 510) popup.set_content(dat.Join()) popup.open() @@ -870,12 +870,12 @@ /mob/living/carbon/human/vv_get_dropdown() . = ..() . += "---" - .["Make monkey"] = "?_src_=vars;[HrefToken()];makemonkey=\ref[src]" - .["Set Species"] = "?_src_=vars;[HrefToken()];setspecies=\ref[src]" - .["Make cyborg"] = "?_src_=vars;[HrefToken()];makerobot=\ref[src]" - .["Make alien"] = "?_src_=vars;[HrefToken()];makealien=\ref[src]" - .["Make slime"] = "?_src_=vars;[HrefToken()];makeslime=\ref[src]" - .["Toggle Purrbation"] = "?_src_=vars;[HrefToken()];purrbation=\ref[src]" + .["Make monkey"] = "?_src_=vars;[HrefToken()];makemonkey=[REF(src)]" + .["Set Species"] = "?_src_=vars;[HrefToken()];setspecies=[REF(src)]" + .["Make cyborg"] = "?_src_=vars;[HrefToken()];makerobot=[REF(src)]" + .["Make alien"] = "?_src_=vars;[HrefToken()];makealien=[REF(src)]" + .["Make slime"] = "?_src_=vars;[HrefToken()];makeslime=[REF(src)]" + .["Toggle Purrbation"] = "?_src_=vars;[HrefToken()];purrbation=[REF(src)]" /mob/living/carbon/human/MouseDrop_T(mob/living/target, mob/living/user) if((target != pulling) || (grab_state < GRAB_AGGRESSIVE) || (user != target) || !isliving(user) || stat || user.stat)//Get consent first :^) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index f21f872d0a..b37ebabb45 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -670,7 +670,7 @@ to_chat(src, "\t Your [LB.name] is [status].") for(var/obj/item/I in LB.embedded_objects) - to_chat(src, "\t There is \a [I] embedded in your [LB.name]!") + to_chat(src, "\t There is \a [I] embedded in your [LB.name]!") for(var/t in missing) to_chat(src, "Your [parse_zone(t)] is missing!") diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 1d69e294df..3cacf1b309 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -1,335 +1,335 @@ -/datum/species/jelly - // Entirely alien beings that seem to be made entirely out of gel. They have three eyes and a skeleton visible within them. - name = "Xenobiological Jelly Entity" - id = "jelly" - default_color = "00FF90" - say_mod = "chirps" - species_traits = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,TOXINLOVER) - meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime - exotic_blood = "slimejelly" - damage_overlay_type = "" - var/datum/action/innate/regenerate_limbs/regenerate_limbs - liked_food = MEAT - -/datum/species/jelly/on_species_loss(mob/living/carbon/C) - if(regenerate_limbs) - regenerate_limbs.Remove(C) - ..() - -/datum/species/jelly/on_species_gain(mob/living/carbon/C, datum/species/old_species) - ..() - if(ishuman(C)) - regenerate_limbs = new - regenerate_limbs.Grant(C) - -/datum/species/jelly/spec_life(mob/living/carbon/human/H) - if(H.stat == DEAD) //can't farm slime jelly from a dead slime/jelly person indefinitely - return - if(!H.blood_volume) - H.blood_volume += 5 - H.adjustBruteLoss(5) - to_chat(H, "You feel empty!") - - if(H.blood_volume < BLOOD_VOLUME_NORMAL) - if(H.nutrition >= NUTRITION_LEVEL_STARVING) - H.blood_volume += 3 - H.nutrition -= 2.5 - if(H.blood_volume < BLOOD_VOLUME_OKAY) - if(prob(5)) - to_chat(H, "You feel drained!") - if(H.blood_volume < BLOOD_VOLUME_BAD) - Cannibalize_Body(H) - H.update_action_buttons_icon() - -/datum/species/jelly/proc/Cannibalize_Body(mob/living/carbon/human/H) - var/list/limbs_to_consume = list("r_arm", "l_arm", "r_leg", "l_leg") - H.get_missing_limbs() - var/obj/item/bodypart/consumed_limb - if(!limbs_to_consume.len) - H.losebreath++ - return - if(H.get_num_legs()) //Legs go before arms - limbs_to_consume -= list("r_arm", "l_arm") - consumed_limb = H.get_bodypart(pick(limbs_to_consume)) - consumed_limb.drop_limb() - to_chat(H, "Your [consumed_limb] is drawn back into your body, unable to maintain its shape!") - qdel(consumed_limb) - H.blood_volume += 20 - -/datum/action/innate/regenerate_limbs - name = "Regenerate Limbs" - check_flags = AB_CHECK_CONSCIOUS - button_icon_state = "slimeheal" - icon_icon = 'icons/mob/actions/actions_slime.dmi' - background_icon_state = "bg_alien" - -/datum/action/innate/regenerate_limbs/IsAvailable() - if(..()) - var/mob/living/carbon/human/H = owner - var/list/limbs_to_heal = H.get_missing_limbs() - if(limbs_to_heal.len < 1) - return 0 - if(H.blood_volume >= BLOOD_VOLUME_OKAY+40) - return 1 - return 0 - -/datum/action/innate/regenerate_limbs/Activate() - var/mob/living/carbon/human/H = owner - var/list/limbs_to_heal = H.get_missing_limbs() - if(limbs_to_heal.len < 1) - to_chat(H, "You feel intact enough as it is.") - return - to_chat(H, "You focus intently on your missing [limbs_to_heal.len >= 2 ? "limbs" : "limb"]...") - if(H.blood_volume >= 40*limbs_to_heal.len+BLOOD_VOLUME_OKAY) - H.regenerate_limbs() - H.blood_volume -= 40*limbs_to_heal.len - to_chat(H, "...and after a moment you finish reforming!") - return - else if(H.blood_volume >= 40)//We can partially heal some limbs - while(H.blood_volume >= BLOOD_VOLUME_OKAY+40) - var/healed_limb = pick(limbs_to_heal) - H.regenerate_limb(healed_limb) - limbs_to_heal -= healed_limb - H.blood_volume -= 40 - to_chat(H, "...but there is not enough of you to fix everything! You must attain more mass to heal completely!") - return - to_chat(H, "...but there is not enough of you to go around! You must attain more mass to heal!") - -////////////////////////////////////////////////////////SLIME PEOPLE/////////////////////////////////////////////////////////////////// - -/datum/species/jelly/slime - // Humans mutated by slime mutagen, produced from green slimes. They are not targetted by slimes. - name = "Slimeperson" - id = "slime" - default_color = "00FFFF" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER) - say_mod = "says" - hair_color = "mutcolor" - hair_alpha = 150 - ignored_by = list(/mob/living/simple_animal/slime) - burnmod = 0.5 - coldmod = 2 - heatmod = 0.5 - var/datum/action/innate/split_body/slime_split - var/list/mob/living/carbon/bodies - var/datum/action/innate/swap_body/swap_body - -/datum/species/jelly/slime/on_species_loss(mob/living/carbon/C) - if(slime_split) - slime_split.Remove(C) - if(swap_body) - swap_body.Remove(C) - bodies -= C // This means that the other bodies maintain a link - // so if someone mindswapped into them, they'd still be shared. - bodies = null - C.faction -= "slime" - C.blood_volume = min(C.blood_volume, BLOOD_VOLUME_NORMAL) - ..() - -/datum/species/jelly/slime/on_species_gain(mob/living/carbon/C, datum/species/old_species) - ..() - if(ishuman(C)) - /* slime_split = new - slime_split.Grant(C) - swap_body = new - swap_body.Grant(C) */ - - if(!bodies || !bodies.len) - bodies = list(C) - else - bodies |= C - - C.faction |= "slime" - -//If you're cloned you get your body pool back -/datum/species/jelly/slime/copy_properties_from(datum/species/jelly/slime/old_species) - bodies = old_species.bodies - -/datum/species/jelly/slime/spec_life(mob/living/carbon/human/H) - /*if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) - if(prob(5)) - to_chat(H, "You feel very bloated!")*/ - if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) - H.blood_volume += 3 - H.nutrition -= 2.5 - - ..() - -/datum/action/innate/split_body - name = "Split Body" - check_flags = AB_CHECK_CONSCIOUS - button_icon_state = "slimesplit" - icon_icon = 'icons/mob/actions/actions_slime.dmi' - background_icon_state = "bg_alien" - -/datum/action/innate/split_body/IsAvailable() - if(..()) - var/mob/living/carbon/human/H = owner - if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) - return 1 - return 0 - -/datum/action/innate/split_body/Activate() - var/mob/living/carbon/human/H = owner - if(!isslimeperson(H)) - return - CHECK_DNA_AND_SPECIES(H) - H.visible_message("[owner] gains a look of \ - concentration while standing perfectly still.", - "You focus intently on moving your body while \ - standing perfectly still...") - - H.notransform = TRUE - - if(do_after(owner, delay=60, needhand=FALSE, target=owner, progress=TRUE)) - if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) - make_dupe() - else - to_chat(H, "...but there is not enough of you to go around! You must attain more mass to split!") - else - to_chat(H, "...but fail to stand perfectly still!") - - H.notransform = FALSE - -/datum/action/innate/split_body/proc/make_dupe() - var/mob/living/carbon/human/H = owner - CHECK_DNA_AND_SPECIES(H) - - var/mob/living/carbon/human/spare = new /mob/living/carbon/human(H.loc) - - spare.underwear = "Nude" - H.dna.transfer_identity(spare, transfer_SE=1) - spare.dna.features["mcolor"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F") - spare.real_name = spare.dna.real_name - spare.name = spare.dna.real_name - spare.updateappearance(mutcolor_update=1) - spare.domutcheck() - spare.Move(get_step(H.loc, pick(NORTH,SOUTH,EAST,WEST))) - - H.blood_volume = BLOOD_VOLUME_SAFE - H.notransform = 0 - - var/datum/species/jelly/slime/origin_datum = H.dna.species - origin_datum.bodies |= spare - - var/datum/species/jelly/slime/spare_datum = spare.dna.species - spare_datum.bodies = origin_datum.bodies - - H.mind.transfer_to(spare) - spare.visible_message("[H] distorts as a new body \ - \"steps out\" of them.", - "...and after a moment of disorentation, \ - you're besides yourself!") - - -/datum/action/innate/swap_body - name = "Swap Body" - check_flags = AB_CHECK_CONSCIOUS - button_icon_state = "slimeswap" - icon_icon = 'icons/mob/actions/actions_slime.dmi' - background_icon_state = "bg_alien" - -/datum/action/innate/swap_body/Activate() - if(!isslimeperson(owner)) - to_chat(owner, "You are not a slimeperson.") - Remove(owner) - else - ui_interact(owner) - -/datum/action/innate/swap_body/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.conscious_state) - - ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "slime_swap_body", name, 400, 400, master_ui, state) - ui.open() - -/datum/action/innate/swap_body/ui_data(mob/user) - var/mob/living/carbon/human/H = owner - if(!isslimeperson(H)) - return - - var/datum/species/jelly/slime/SS = H.dna.species - - var/list/data = list() - data["bodies"] = list() - for(var/b in SS.bodies) - var/mob/living/carbon/human/body = b - if(!body || QDELETED(body) || !isslimeperson(body)) - SS.bodies -= b - continue - - var/list/L = list() - // HTML colors need a # prefix - L["htmlcolor"] = "#[body.dna.features["mcolor"]]" - var/area/A = get_area(body) - L["area"] = A.name - var/stat = "error" - switch(body.stat) - if(CONSCIOUS) - stat = "Conscious" - if(UNCONSCIOUS) - stat = "Unconscious" - if(DEAD) - stat = "Dead" - var/current = body.mind - var/is_conscious = (body.stat == CONSCIOUS) - - L["status"] = stat - L["exoticblood"] = body.blood_volume - L["name"] = body.name - L["ref"] = "\ref[body]" - L["is_current"] = current - var/button - if(current) - button = "selected" - else if(is_conscious) - button = null - else - button = "disabled" - - L["swap_button_state"] = button - L["swappable"] = !current && is_conscious - - data["bodies"] += list(L) - - return data - -/datum/action/innate/swap_body/ui_act(action, params) - if(..()) - return - var/mob/living/carbon/human/H = owner - if(!isslimeperson(owner)) - return - var/datum/species/jelly/slime/SS = H.dna.species - - var/datum/mind/M - for(var/mob/living/L in SS.bodies) - if(L.mind && L.mind.active) - M = L.mind - if(!M) - return - if(!isslimeperson(M.current)) - return - - switch(action) - if("swap") - var/mob/living/carbon/human/selected = locate(params["ref"]) - if(!(selected in SS.bodies)) - return - if(!selected || QDELETED(selected) || !isslimeperson(selected)) - SS.bodies -= selected - return - if(M.current == selected) - return - if(selected.stat != CONSCIOUS) - return - - swap_to_dupe(M, selected) - -/datum/action/innate/swap_body/proc/swap_to_dupe(datum/mind/M, mob/living/carbon/human/dupe) - M.current.visible_message("[M.current] \ - stops moving and starts staring vacantly into space.", - "You stop moving this body...") - M.transfer_to(dupe) - dupe.visible_message("[dupe] blinks and looks \ - around.", - "...and move this one instead.") \ No newline at end of file +/datum/species/jelly + // Entirely alien beings that seem to be made entirely out of gel. They have three eyes and a skeleton visible within them. + name = "Xenobiological Jelly Entity" + id = "jelly" + default_color = "00FF90" + say_mod = "chirps" + species_traits = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,TOXINLOVER) + meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime + exotic_blood = "slimejelly" + damage_overlay_type = "" + var/datum/action/innate/regenerate_limbs/regenerate_limbs + liked_food = MEAT + +/datum/species/jelly/on_species_loss(mob/living/carbon/C) + if(regenerate_limbs) + regenerate_limbs.Remove(C) + ..() + +/datum/species/jelly/on_species_gain(mob/living/carbon/C, datum/species/old_species) + ..() + if(ishuman(C)) + regenerate_limbs = new + regenerate_limbs.Grant(C) + +/datum/species/jelly/spec_life(mob/living/carbon/human/H) + if(H.stat == DEAD) //can't farm slime jelly from a dead slime/jelly person indefinitely + return + if(!H.blood_volume) + H.blood_volume += 5 + H.adjustBruteLoss(5) + to_chat(H, "You feel empty!") + + if(H.blood_volume < BLOOD_VOLUME_NORMAL) + if(H.nutrition >= NUTRITION_LEVEL_STARVING) + H.blood_volume += 3 + H.nutrition -= 2.5 + if(H.blood_volume < BLOOD_VOLUME_OKAY) + if(prob(5)) + to_chat(H, "You feel drained!") + if(H.blood_volume < BLOOD_VOLUME_BAD) + Cannibalize_Body(H) + H.update_action_buttons_icon() + +/datum/species/jelly/proc/Cannibalize_Body(mob/living/carbon/human/H) + var/list/limbs_to_consume = list("r_arm", "l_arm", "r_leg", "l_leg") - H.get_missing_limbs() + var/obj/item/bodypart/consumed_limb + if(!limbs_to_consume.len) + H.losebreath++ + return + if(H.get_num_legs()) //Legs go before arms + limbs_to_consume -= list("r_arm", "l_arm") + consumed_limb = H.get_bodypart(pick(limbs_to_consume)) + consumed_limb.drop_limb() + to_chat(H, "Your [consumed_limb] is drawn back into your body, unable to maintain its shape!") + qdel(consumed_limb) + H.blood_volume += 20 + +/datum/action/innate/regenerate_limbs + name = "Regenerate Limbs" + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "slimeheal" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + +/datum/action/innate/regenerate_limbs/IsAvailable() + if(..()) + var/mob/living/carbon/human/H = owner + var/list/limbs_to_heal = H.get_missing_limbs() + if(limbs_to_heal.len < 1) + return 0 + if(H.blood_volume >= BLOOD_VOLUME_OKAY+40) + return 1 + return 0 + +/datum/action/innate/regenerate_limbs/Activate() + var/mob/living/carbon/human/H = owner + var/list/limbs_to_heal = H.get_missing_limbs() + if(limbs_to_heal.len < 1) + to_chat(H, "You feel intact enough as it is.") + return + to_chat(H, "You focus intently on your missing [limbs_to_heal.len >= 2 ? "limbs" : "limb"]...") + if(H.blood_volume >= 40*limbs_to_heal.len+BLOOD_VOLUME_OKAY) + H.regenerate_limbs() + H.blood_volume -= 40*limbs_to_heal.len + to_chat(H, "...and after a moment you finish reforming!") + return + else if(H.blood_volume >= 40)//We can partially heal some limbs + while(H.blood_volume >= BLOOD_VOLUME_OKAY+40) + var/healed_limb = pick(limbs_to_heal) + H.regenerate_limb(healed_limb) + limbs_to_heal -= healed_limb + H.blood_volume -= 40 + to_chat(H, "...but there is not enough of you to fix everything! You must attain more mass to heal completely!") + return + to_chat(H, "...but there is not enough of you to go around! You must attain more mass to heal!") + +////////////////////////////////////////////////////////SLIME PEOPLE/////////////////////////////////////////////////////////////////// + +/datum/species/jelly/slime + // Humans mutated by slime mutagen, produced from green slimes. They are not targetted by slimes. + name = "Slimeperson" + id = "slime" + default_color = "00FFFF" + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER) + say_mod = "says" + hair_color = "mutcolor" + hair_alpha = 150 + ignored_by = list(/mob/living/simple_animal/slime) + burnmod = 0.5 + coldmod = 2 + heatmod = 0.5 + var/datum/action/innate/split_body/slime_split + var/list/mob/living/carbon/bodies + var/datum/action/innate/swap_body/swap_body + +/datum/species/jelly/slime/on_species_loss(mob/living/carbon/C) + if(slime_split) + slime_split.Remove(C) + if(swap_body) + swap_body.Remove(C) + bodies -= C // This means that the other bodies maintain a link + // so if someone mindswapped into them, they'd still be shared. + bodies = null + C.faction -= "slime" + C.blood_volume = min(C.blood_volume, BLOOD_VOLUME_NORMAL) + ..() + +/datum/species/jelly/slime/on_species_gain(mob/living/carbon/C, datum/species/old_species) + ..() + if(ishuman(C)) + slime_split = new + slime_split.Grant(C) + swap_body = new + swap_body.Grant(C) + + if(!bodies || !bodies.len) + bodies = list(C) + else + bodies |= C + + C.faction |= "slime" + +//If you're cloned you get your body pool back +/datum/species/jelly/slime/copy_properties_from(datum/species/jelly/slime/old_species) + bodies = old_species.bodies + +/datum/species/jelly/slime/spec_life(mob/living/carbon/human/H) + if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) + if(prob(5)) + to_chat(H, "You feel very bloated!") + else if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) + H.blood_volume += 3 + H.nutrition -= 2.5 + + ..() + +/datum/action/innate/split_body + name = "Split Body" + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "slimesplit" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + +/datum/action/innate/split_body/IsAvailable() + if(..()) + var/mob/living/carbon/human/H = owner + if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) + return 1 + return 0 + +/datum/action/innate/split_body/Activate() + var/mob/living/carbon/human/H = owner + if(!isslimeperson(H)) + return + CHECK_DNA_AND_SPECIES(H) + H.visible_message("[owner] gains a look of \ + concentration while standing perfectly still.", + "You focus intently on moving your body while \ + standing perfectly still...") + + H.notransform = TRUE + + if(do_after(owner, delay=60, needhand=FALSE, target=owner, progress=TRUE)) + if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) + make_dupe() + else + to_chat(H, "...but there is not enough of you to go around! You must attain more mass to split!") + else + to_chat(H, "...but fail to stand perfectly still!") + + H.notransform = FALSE + +/datum/action/innate/split_body/proc/make_dupe() + var/mob/living/carbon/human/H = owner + CHECK_DNA_AND_SPECIES(H) + + var/mob/living/carbon/human/spare = new /mob/living/carbon/human(H.loc) + + spare.underwear = "Nude" + H.dna.transfer_identity(spare, transfer_SE=1) + spare.dna.features["mcolor"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F") + spare.real_name = spare.dna.real_name + spare.name = spare.dna.real_name + spare.updateappearance(mutcolor_update=1) + spare.domutcheck() + spare.Move(get_step(H.loc, pick(NORTH,SOUTH,EAST,WEST))) + + H.blood_volume = BLOOD_VOLUME_SAFE + H.notransform = 0 + + var/datum/species/jelly/slime/origin_datum = H.dna.species + origin_datum.bodies |= spare + + var/datum/species/jelly/slime/spare_datum = spare.dna.species + spare_datum.bodies = origin_datum.bodies + + H.mind.transfer_to(spare) + spare.visible_message("[H] distorts as a new body \ + \"steps out\" of them.", + "...and after a moment of disorentation, \ + you're besides yourself!") + + +/datum/action/innate/swap_body + name = "Swap Body" + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "slimeswap" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + +/datum/action/innate/swap_body/Activate() + if(!isslimeperson(owner)) + to_chat(owner, "You are not a slimeperson.") + Remove(owner) + else + ui_interact(owner) + +/datum/action/innate/swap_body/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.conscious_state) + + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "slime_swap_body", name, 400, 400, master_ui, state) + ui.open() + +/datum/action/innate/swap_body/ui_data(mob/user) + var/mob/living/carbon/human/H = owner + if(!isslimeperson(H)) + return + + var/datum/species/jelly/slime/SS = H.dna.species + + var/list/data = list() + data["bodies"] = list() + for(var/b in SS.bodies) + var/mob/living/carbon/human/body = b + if(!body || QDELETED(body) || !isslimeperson(body)) + SS.bodies -= b + continue + + var/list/L = list() + // HTML colors need a # prefix + L["htmlcolor"] = "#[body.dna.features["mcolor"]]" + var/area/A = get_area(body) + L["area"] = A.name + var/stat = "error" + switch(body.stat) + if(CONSCIOUS) + stat = "Conscious" + if(UNCONSCIOUS) + stat = "Unconscious" + if(DEAD) + stat = "Dead" + var/current = body.mind + var/is_conscious = (body.stat == CONSCIOUS) + + L["status"] = stat + L["exoticblood"] = body.blood_volume + L["name"] = body.name + L["ref"] = "[REF(body)]" + L["is_current"] = current + var/button + if(current) + button = "selected" + else if(is_conscious) + button = null + else + button = "disabled" + + L["swap_button_state"] = button + L["swappable"] = !current && is_conscious + + data["bodies"] += list(L) + + return data + +/datum/action/innate/swap_body/ui_act(action, params) + if(..()) + return + var/mob/living/carbon/human/H = owner + if(!isslimeperson(owner)) + return + var/datum/species/jelly/slime/SS = H.dna.species + + var/datum/mind/M + for(var/mob/living/L in SS.bodies) + if(L.mind && L.mind.active) + M = L.mind + if(!M) + return + if(!isslimeperson(M.current)) + return + + switch(action) + if("swap") + var/mob/living/carbon/human/selected = locate(params["ref"]) + if(!(selected in SS.bodies)) + return + if(!selected || QDELETED(selected) || !isslimeperson(selected)) + SS.bodies -= selected + return + if(M.current == selected) + return + if(selected.stat != CONSCIOUS) + return + + swap_to_dupe(M, selected) + +/datum/action/innate/swap_body/proc/swap_to_dupe(datum/mind/M, mob/living/carbon/human/dupe) + M.current.visible_message("[M.current] \ + stops moving and starts staring vacantly into space.", + "You stop moving this body...") + M.transfer_to(dupe) + dupe.visible_message("[dupe] blinks and looks \ + around.", + "...and move this one instead.") diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 0cdcd90e61..66869aa66a 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -15,7 +15,7 @@ real_name = name var/datum/atom_hud/data/human/medical/advanced/medhud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] medhud.add_to_hud(src) - faction += "\ref[src]" + faction += "[REF(src)]" /mob/living/prepare_huds() @@ -105,7 +105,8 @@ //Called when we bump onto a mob /mob/living/proc/MobCollide(mob/M) - + //Even if we don't push/swap places, we "touched" them, so spread fire + spreadFire(M) //Also diseases for(var/thing in viruses) var/datum/disease/D = thing @@ -120,29 +121,6 @@ if(now_pushing) return TRUE - //TODO FOR LATER PRS: Make passing tables an automatic thing for flying and passable objects be determined better to prevent huge amounts of flags being set when mobs fly. - if((movement_type) ^ (M.movement_type)) //Fly past each other. - now_pushing = TRUE - var/old = pass_flags & PASSMOB - var/old_p = pulling? (pulling.pass_flags & PASSMOB) : NONE - var/atom/movable/cached = pulling - pass_flags |= PASSMOB - var/obj/item/I = cached - if(cached && (isliving(cached) || (istype(I) && (I.w_class < WEIGHT_CLASS_BULKY)))) - var/mob/living/l = cached - if(l.mob_size <= mob_size) - cached.pass_flags |= PASSMOB - Move(get_turf(M)) - if(!old) - pass_flags &= ~PASSMOB - if(cached && !old_p) - cached.pass_flags &= ~PASSMOB - cached = null - now_pushing = FALSE - return TRUE - - //Even if we don't push/swap places, we "touched" them, so spread fire - spreadFire(M) //Should stop you pushing a restrained person out of the way if(isliving(M)) @@ -501,21 +479,21 @@ if(isopenturf(loc) && !is_flying()) var/turf/open/T = loc . += T.slowdown - var/static/config_run_delay - var/static/config_walk_delay + var/static/datum/config_entry/number/run_delay/config_run_delay + var/static/datum/config_entry/number/walk_delay/config_walk_delay if(isnull(config_run_delay)) config_run_delay = CONFIG_GET(number/run_delay) config_walk_delay = CONFIG_GET(number/walk_delay) if(ignorewalk) - . += config_run_delay + . += config_run_delay.value_cache else switch(m_intent) if(MOVE_INTENT_RUN) if(drowsyness > 0) . += 6 - . += config_run_delay + . += config_run_delay.value_cache if(MOVE_INTENT_WALK) - . += config_walk_delay + . += config_walk_delay.value_cache /mob/living/proc/makeTrail(turf/target_turf, turf/start, direction) if(!has_gravity()) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index b176649a37..4068d3c2e9 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -267,7 +267,7 @@ /mob/living/silicon/ai/proc/ai_alerts() var/dat = "Current Station Alerts\n" - dat += "Close

    " + dat += "Close

    " for (var/cat in alarms) dat += text("[]
    \n", cat) var/list/L = alarms[cat] @@ -281,11 +281,11 @@ if (C && istype(C, /list)) var/dat2 = "" for (var/obj/machinery/camera/I in C) - dat2 += text("[][]", (dat2=="") ? "" : " | ", src, I, I.c_tag) + dat2 += text("[][]", (dat2=="") ? "" : " | ", I.c_tag) dat += text("-- [] ([])", A.name, (dat2!="") ? dat2 : "No Camera") else if (C && istype(C, /obj/machinery/camera)) var/obj/machinery/camera/Ctmp = C - dat += text("-- [] ([])", A.name, src, C, Ctmp.c_tag) + dat += text("-- [] ([])", A.name, Ctmp.c_tag) else dat += text("-- [] (No Camera)", A.name) if (sources.len > 1) @@ -465,7 +465,7 @@ var/ai_Zlevel = ai_current_turf.z var/d var/area/bot_area - d += "Query network status
    " + d += "Query network status
    " d += "" for (Bot in GLOB.living_mob_list) @@ -476,8 +476,8 @@ //If the bot is on, it will display the bot's current mode status. If the bot is not mode, it will just report "Idle". "Inactive if it is not on at all. d += "" d += "" - d += "" - d += "" + d += "" + d += "" d += "" d = format_text(d) @@ -531,12 +531,12 @@ L[A.name] = list(A, (C) ? C : O, list(alarmsource)) if (O) if (C && C.can_use()) - queueAlarm("--- [class] alarm detected in [A.name]! ([C.c_tag])", class) + queueAlarm("--- [class] alarm detected in [A.name]! ([C.c_tag])", class) else if (CL && CL.len) var/foo = 0 var/dat2 = "" for (var/obj/machinery/camera/I in CL) - dat2 += text("[][]", (!foo) ? "" : " | ", src, I, I.c_tag) //I'm not fixing this shit... + dat2 += text("[][]", (!foo) ? "" : " | ", I.c_tag) //I'm not fixing this shit... foo = 1 queueAlarm(text ("--- [] alarm detected in []! ([])", class, A.name, dat2), class) else @@ -828,7 +828,7 @@ raw_message = lang_treat(speaker, message_language, raw_message, spans, message_mode) var/start = "Relayed Speech: " var/namepart = "[speaker.GetVoice()][speaker.get_alt_name()]" - var/hrefpart = "" + var/hrefpart = "" var/jobpart if (iscarbon(speaker)) diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 8429889ebd..8593eafc37 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -7,7 +7,7 @@ /mob/living/silicon/ai/compose_track_href(atom/movable/speaker, namepart) var/mob/M = speaker.GetSource() if(M) - return "" + return "" return "" /mob/living/silicon/ai/compose_job(atom/movable/speaker, message_langs, raw_message, radio_freq) @@ -85,7 +85,7 @@ var/index = 0 for(var/word in GLOB.vox_sounds) index++ - dat += "[capitalize(word)]" + dat += "[capitalize(word)]" if(index != GLOB.vox_sounds.len) dat += " / " diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index d70a12eb38..e21abfc6b2 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -278,11 +278,11 @@ /mob/living/silicon/pai/proc/softwareMenu() // Populate the right menu var/dat = "" - dat += "Refresh
    " + dat += "Refresh
    " // Built-in - dat += "Directives
    " - dat += "Radio Configuration
    " - dat += "Screen Display
    " + dat += "Directives
    " + dat += "Radio Configuration
    " + dat += "Screen Display
    " //dat += "Text Messaging
    " dat += "
    " @@ -290,42 +290,42 @@ dat += "Basic
    " for(var/s in software) if(s == "digital messenger") - dat += "Digital Messenger
    " + dat += "Digital Messenger
    " if(s == "crew manifest") - dat += "Crew Manifest
    " + dat += "Crew Manifest
    " if(s == "medical records") - dat += "Medical Records
    " + dat += "Medical Records
    " if(s == "security records") - dat += "Security Records
    " + dat += "Security Records
    " if(s == "camera") - dat += "Camera Jack
    " + dat += "Camera Jack
    " if(s == "remote signaller") - dat += "Remote Signaller
    " + dat += "Remote Signaller
    " dat += "
    " // Advanced dat += "Advanced
    " for(var/s in software) if(s == "atmosphere sensor") - dat += "Atmospheric Sensor
    " + dat += "Atmospheric Sensor
    " if(s == "heartbeat sensor") - dat += "Heartbeat Sensor
    " + dat += "Heartbeat Sensor
    " if(s == "security HUD") - dat += "Facial Recognition Suite[(secHUD) ? " On" : " Off"]
    " + dat += "Facial Recognition Suite[(secHUD) ? " On" : " Off"]
    " if(s == "medical HUD") - dat += "Medical Analysis Suite[(medHUD) ? " On" : " Off"]
    " + dat += "Medical Analysis Suite[(medHUD) ? " On" : " Off"]
    " if(s == "universal translator") var/translator_on = (flags_2 & OMNITONGUE_2) - dat += "Universal Translator[translator_on ? " On" : " Off"]
    " + dat += "Universal Translator[translator_on ? " On" : " Off"]
    " if(s == "projection array") - dat += "Projection Array
    " + dat += "Projection Array
    " if(s == "camera jack") - dat += "Camera Jack
    " + dat += "Camera Jack
    " if(s == "door jack") - dat += "Door Jack
    " + dat += "Door Jack
    " dat += "
    " dat += "
    " - dat += "Download additional software" + dat += "Download additional software" return dat @@ -341,7 +341,7 @@ if(!software.Find(s)) var/cost = available_software[s] var/displayName = uppertext(s) - dat += "[displayName] ([cost])
    " + dat += "[displayName] ([cost])
    " else var/displayName = lowertext(s) dat += "[displayName] (Download Complete)
    " @@ -354,7 +354,7 @@ dat += "[(master) ? "Your master: [master] ([master_dna])" : "You are bound to no one."]" dat += "

    " - dat += "Request carrier DNA sample
    " + dat += "Request carrier DNA sample
    " dat += "

    Directives


    " dat += "Prime Directive
    " dat += "     [laws.zeroth]
    " @@ -397,20 +397,20 @@ dat += "

    Remote Signaller



    " dat += {"Frequency/Code for signaler:
    Frequency: - - - - + - + - [format_frequency(sradio.frequency)] - + - +
    + + + +
    Code: - - - - + - + - [sradio.code] - + - +
    + + + +
    - Send Signal
    "} + Send Signal
    "} return dat // Crew Manifest @@ -429,7 +429,7 @@ . += "

    Medical Records


    " if(GLOB.data_core.general) for(var/datum/data/record/R in sortRecord(GLOB.data_core.general)) - . += "[R.fields["id"]]: [R.fields["name"]]
    " + . += "
    [R.fields["id"]]: [R.fields["name"]]
    " if(1) . += "
    Medical Record

    " if(medicalActive1 in GLOB.data_core.general) @@ -437,10 +437,10 @@ else . += "
    Requested medical record not found.

    " if(medicalActive2 in GLOB.data_core.medical) - . += "
    \n
    Medical Data

    \nBlood Type:
    [medicalActive2.fields["blood_type"]]
    \nDNA: [medicalActive2.fields["b_dna"]]
    \n
    \nMinor Disabilities: [medicalActive2.fields["mi_dis"]]
    \nDetails: [medicalActive2.fields["mi_dis_d"]]
    \n
    \nMajor Disabilities: [medicalActive2.fields["ma_dis"]]
    \nDetails: [medicalActive2.fields["ma_dis_d"]]
    \n
    \nAllergies: [medicalActive2.fields["alg"]]
    \nDetails: [medicalActive2.fields["alg_d"]]
    \n
    \nCurrent Diseases: [medicalActive2.fields["cdi"]] (per disease info placed in log/comment section)
    \nDetails: [medicalActive2.fields["cdi_d"]]
    \n
    \nImportant Notes:
    \n\t[medicalActive2.fields["notes"]]
    \n
    \n
    Comments/Log

    " + . += "
    \n
    Medical Data

    \nBlood Type: [medicalActive2.fields["blood_type"]]
    \nDNA: [medicalActive2.fields["b_dna"]]
    \n
    \nMinor Disabilities: [medicalActive2.fields["mi_dis"]]
    \nDetails: [medicalActive2.fields["mi_dis_d"]]
    \n
    \nMajor Disabilities: [medicalActive2.fields["ma_dis"]]
    \nDetails: [medicalActive2.fields["ma_dis_d"]]
    \n
    \nAllergies: [medicalActive2.fields["alg"]]
    \nDetails: [medicalActive2.fields["alg_d"]]
    \n
    \nCurrent Diseases: [medicalActive2.fields["cdi"]] (per disease info placed in log/comment section)
    \nDetails: [medicalActive2.fields["cdi_d"]]
    \n
    \nImportant Notes:
    \n\t[medicalActive2.fields["notes"]]
    \n
    \n
    Comments/Log

    " else . += "
    Requested medical record not found.

    " - . += "
    \nBack
    " + . += "
    \nBack
    " return . // Security Records @@ -451,18 +451,18 @@ . += "

    Security Records


    " if(GLOB.data_core.general) for(var/datum/data/record/R in sortRecord(GLOB.data_core.general)) - . += "[R.fields["id"]]: [R.fields["name"]]
    " + . += "
    [R.fields["id"]]: [R.fields["name"]]
    " if(1) . += "

    Security Record

    " if(securityActive1 in GLOB.data_core.general) - . += "Name:
    [securityActive1.fields["name"]] ID: [securityActive1.fields["id"]]
    \nSex: [securityActive1.fields["sex"]]
    \nAge: [securityActive1.fields["age"]]
    \nRank: [securityActive1.fields["rank"]]
    \nFingerprint: [securityActive1.fields["fingerprint"]]
    \nPhysical Status: [securityActive1.fields["p_stat"]]
    \nMental Status: [securityActive1.fields["m_stat"]]
    " + . += "Name: [securityActive1.fields["name"]] ID: [securityActive1.fields["id"]]
    \nSex: [securityActive1.fields["sex"]]
    \nAge: [securityActive1.fields["age"]]
    \nRank: [securityActive1.fields["rank"]]
    \nFingerprint: [securityActive1.fields["fingerprint"]]
    \nPhysical Status: [securityActive1.fields["p_stat"]]
    \nMental Status: [securityActive1.fields["m_stat"]]
    " else . += "
    Requested security record not found,

    " if(securityActive2 in GLOB.data_core.security) - . += "
    \nSecurity Data
    \nCriminal Status: [securityActive2.fields["criminal"]]
    \n
    \nMinor Crimes: [securityActive2.fields["mi_crim"]]
    \nDetails: [securityActive2.fields["mi_crim_d"]]
    \n
    \nMajor Crimes: [securityActive2.fields["ma_crim"]]
    \nDetails: [securityActive2.fields["ma_crim_d"]]
    \n
    \nImportant Notes:
    \n\t[securityActive2.fields["notes"]]
    \n
    \n
    Comments/Log

    " + . += "
    \nSecurity Data
    \nCriminal Status: [securityActive2.fields["criminal"]]
    \n
    \nMinor Crimes: [securityActive2.fields["mi_crim"]]
    \nDetails: [securityActive2.fields["mi_crim_d"]]
    \n
    \nMajor Crimes: [securityActive2.fields["ma_crim"]]
    \nDetails: [securityActive2.fields["ma_crim_d"]]
    \n
    \nImportant Notes:
    \n\t[securityActive2.fields["notes"]]
    \n
    \n
    Comments/Log

    " else . += "
    Requested security record not found,

    " - . += text("
    \nBack
    ", src) + . += "
    \nBack
    " return . // Universal Translator @@ -470,7 +470,7 @@ var/translator_on = (flags_2 & OMNITONGUE_2) . = {"

    Universal Translator


    When enabled, this device will permamently be able to speak and understand all known forms of communication.

    - The device is currently [translator_on ? "en" : "dis" ]abled.
    [translator_on ? "" : "Activate Translation Module
    "]"} + The device is currently [translator_on ? "en" : "dis" ]abled.
    [translator_on ? "" : "Activate Translation Module
    "]"} return . // Security HUD @@ -478,7 +478,7 @@ var/dat = {"

    Facial Recognition Suite


    When enabled, this package will scan all viewable faces and compare them against the known criminal database, providing real-time graphical data about any detected persons of interest.

    The package is currently [ (secHUD) ? "en" : "dis" ]abled.
    - Toggle Package
    + Toggle Package
    "} return dat @@ -490,9 +490,9 @@

    Visual Status Overlay


    When enabled, this package will scan all nearby crewmembers' vitals and provide real-time graphical data about their state of health.

    The suite is currently [ (medHUD) ? "en" : "dis" ]abled.
    - Toggle Suite
    + Toggle Suite

    - Host Bioscan
    + Host Bioscan
    "} if(subscreen == 1) dat += {"

    Medical Analysis Suite


    @@ -523,7 +523,7 @@ Stage: [D.stage]/[D.max_stages]
    Possible Cure: [D.cure_text]
    "} - dat += "Visual Status Overlay
    " + dat += "Visual Status Overlay
    " return dat // Atmospheric Scanner @@ -548,7 +548,7 @@ if(gas_level > 0.01) dat += "[env_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_level*100)]%
    " dat += "Temperature: [round(environment.temperature-T0C)]°C
    " - dat += "Refresh Reading
    " + dat += "Refresh Reading
    " dat += "
    " return dat @@ -577,7 +577,7 @@ dat += "Cable status : " if(!cable) dat += "Retracted
    " - dat += "Extend Cable
    " + dat += "Extend Cable
    " return dat if(!cable.machine) dat += "Extended
    " @@ -591,10 +591,10 @@ // var/obj/machinery/airlock/door = machine if(!hackdoor) - dat += "Begin Airlock Jacking
    " + dat += "Begin Airlock Jacking
    " else dat += "Jack in progress... [hackprogress]% complete.
    " - dat += "Cancel Airlock Jack
    " + dat += "Cancel Airlock Jack
    " return dat // Door Jack - supporting proc @@ -611,16 +611,16 @@ /mob/living/silicon/pai/proc/pdamessage() var/dat = "

    Digital Messenger

    " - dat += {"Signal/Receiver Status: + dat += {"Signal/Receiver Status: [(pda.toff) ? "\[Off\]" : "\[On\]"]
    - Ringer Status: + Ringer Status: [(pda.silent) ? "\[Off\]" : "\[On\]"]

    "} dat += "
      " if(!pda.toff) for (var/obj/item/device/pda/P in sortNames(get_viewable_pdas())) if (P == pda) continue - dat += "
    • [P]" + dat += "
    • [P]" dat += "
    • " dat += "
    " dat += "

    " diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 96467be074..3e3e853ae7 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -882,13 +882,13 @@ return switch(notifytype) if(NEW_BORG) //New Cyborg - to_chat(connected_ai, "

    NOTICE - New cyborg connection detected: [name]
    ") + to_chat(connected_ai, "

    NOTICE - New cyborg connection detected: [name]
    ") if(NEW_MODULE) //New Module to_chat(connected_ai, "

    NOTICE - Cyborg module change detected: [name] has loaded the [designation] module.
    ") if(RENAME) //New Name to_chat(connected_ai, "

    NOTICE - Cyborg reclassification detected: [oldname] is now designated as [newname].
    ") if(AI_SHELL) //New Shell - to_chat(connected_ai, "

    NOTICE - New cyborg shell detected: [name]
    ") + to_chat(connected_ai, "

    NOTICE - New cyborg shell detected: [name]
    ") if(DISCONNECT) //Tampering with the wires to_chat(connected_ai, "

    NOTICE - Remote telemetry lost with [name].
    ") diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 3758e73688..293f4892e4 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -634,14 +634,17 @@ /obj/item/retractor, /obj/item/hemostat, /obj/item/cautery, + /obj/item/surgicaldrill, /obj/item/scalpel, /obj/item/melee/transforming/energy/sword/cyborg/saw, /obj/item/roller/robo, /obj/item/card/emag, /obj/item/crowbar/cyborg, + /obj/item/extinguisher/mini, /obj/item/pinpointer/syndicate_cyborg, /obj/item/stack/medical/gauze/cyborg, - /obj/item/gun/medbeam) + /obj/item/gun/medbeam, + /obj/item/organ_storage) ratvar_modules = list( /obj/item/clockwork/slab/cyborg/medical, /obj/item/clockwork/weapon/ratvarian_spear) diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 4178438571..f3e7baa0d9 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -14,7 +14,7 @@ for(var/mob/M in GLOB.player_list) if(M.binarycheck()) if(isAI(M)) - var/renderedAI = "Robotic Talk, [name] ([desig]) [message_a]" + var/renderedAI = "Robotic Talk, [name] ([desig]) [message_a]" to_chat(M, renderedAI) else to_chat(M, rendered) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 527474a0f3..fa8447885d 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -110,7 +110,7 @@ if(alarm_types_show["Camera"]) msg += "CAMERA: [alarm_types_show["Camera"]] alarms detected. - " - msg += "\[Show Alerts\]" + msg += "\[Show Alerts\]" to_chat(src, msg) if(alarms_to_clear.len < 3) @@ -135,7 +135,7 @@ if(alarm_types_show["Camera"]) msg += "CAMERA: [alarm_types_clear["Camera"]] alarms cleared. - " - msg += "\[Show Alerts\]" + msg += "\[Show Alerts\]" to_chat(src, msg) @@ -253,12 +253,12 @@ for(var/index = 1, index <= src.laws.devillaws.len, index++) if (!src.devillawcheck[index]) src.devillawcheck[index] = "No" - list += {"[src.devillawcheck[index]] 666: [src.laws.devillaws[index]]
    "} + list += {"[src.devillawcheck[index]] 666: [src.laws.devillaws[index]]
    "} if (src.laws.zeroth) if (!src.lawcheck[1]) src.lawcheck[1] = "No" //Given Law 0's usual nature, it defaults to NOT getting reported. --NeoFite - list += {"[src.lawcheck[1]] 0: [src.laws.zeroth]
    "} + list += {"[src.lawcheck[1]] 0: [src.laws.zeroth]
    "} for (var/index = 1, index <= src.laws.ion.len, index++) var/law = src.laws.ion[index] @@ -266,7 +266,7 @@ if (length(law) > 0) if (!src.ioncheck[index]) src.ioncheck[index] = "Yes" - list += {"[src.ioncheck[index]] [ionnum()]: [law]
    "} + list += {"[src.ioncheck[index]] [ionnum()]: [law]
    "} src.ioncheck.len += 1 var/number = 1 @@ -278,7 +278,7 @@ if (!src.lawcheck[number+1]) src.lawcheck[number+1] = "Yes" - list += {"[src.lawcheck[number+1]] [number]: [law]
    "} + list += {"[src.lawcheck[number+1]] [number]: [law]
    "} number++ for (var/index = 1, index <= src.laws.supplied.len, index++) @@ -287,9 +287,9 @@ src.lawcheck.len += 1 if (!src.lawcheck[number+1]) src.lawcheck[number+1] = "Yes" - list += {"[src.lawcheck[number+1]] [number]: [law]
    "} + list += {"[src.lawcheck[number+1]] [number]: [law]
    "} number++ - list += {"

    State Laws"} + list += {"

    State Laws"} usr << browse(list, "window=laws") diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 299fa25226..5d943bc1e5 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -817,9 +817,9 @@ Pass a positive integer as an argument to override a bot's default speed. var/hack if(issilicon(user) || IsAdminGhost(user)) //Allows silicons or admins to toggle the emag status of a bot. hack += "[emagged == 2 ? "Software compromised! Unit may exhibit dangerous or erratic behavior." : "Unit operating normally. Release safety lock?"]
    " - hack += "Harm Prevention Safety System: [emagged ? "DANGER" : "Engaged"]
    " + hack += "Harm Prevention Safety System: [emagged ? "DANGER" : "Engaged"]
    " else if(!locked) //Humans with access can use this option to hide a bot from the AI's remote control panel and PDA control. - hack += "Remote network control radio: [remote_disabled ? "Disconnected" : "Connected"]
    " + hack += "Remote network control radio: [remote_disabled ? "Disconnected" : "Connected"]
    " return hack /mob/living/simple_animal/bot/proc/showpai(mob/user) @@ -829,9 +829,9 @@ Pass a positive integer as an argument to override a bot's default speed. eject += "Personality card status: " if(paicard) if(client) - eject += "Active" + eject += "Active" else - eject += "Inactive" + eject += "Inactive" else if(!allow_pai || key) eject += "Unavailable" else diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 18c4dcd40c..61c34b0466 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -278,14 +278,14 @@ dat += hack(user) dat += showpai(user) dat += text({" -Status: [on ? "On" : "Off"]
    +Status: [on ? "On" : "Off"]
    Behaviour controls are [locked ? "locked" : "unlocked"]
    Maintenance panel panel is [open ? "opened" : "closed"]"}) if(!locked || issilicon(user)|| IsAdminGhost(user)) - dat += "
    Clean Blood: [blood ? "Yes" : "No"]" - dat += "
    Clean Trash: [trash ? "Yes" : "No"]" - dat += "
    Exterminate Pests: [pests ? "Yes" : "No"]" - dat += "

    Patrol Station: [auto_patrol ? "Yes" : "No"]" + dat += "
    Clean Blood: [blood ? "Yes" : "No"]" + dat += "
    Clean Trash: [trash ? "Yes" : "No"]" + dat += "
    Exterminate Pests: [pests ? "Yes" : "No"]" + dat += "

    Patrol Station: [auto_patrol ? "Yes" : "No"]" return dat /mob/living/simple_animal/bot/cleanbot/Topic(href, href_list) diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index ddf4c93559..f2b30a0a3c 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -103,7 +103,7 @@ Status: []
    Behaviour controls are [locked ? "locked" : "unlocked"]
    Maintenance panel panel is [open ? "opened" : "closed"]
    "}, -"[on ? "On" : "Off"]" ) +"[on ? "On" : "Off"]" ) if(!locked || issilicon(user)|| IsAdminGhost(user)) if(!lasercolor) @@ -116,12 +116,12 @@ Operating Mode: []
    Report Arrests[]
    Auto Patrol[]"}, -"[idcheck ? "Yes" : "No"]", -"[weaponscheck ? "Yes" : "No"]", -"[check_records ? "Yes" : "No"]", -"[arrest_type ? "Detain" : "Arrest"]", -"[declare_arrests ? "Yes" : "No"]", -"[auto_patrol ? "On" : "Off"]" ) +"[idcheck ? "Yes" : "No"]", +"[weaponscheck ? "Yes" : "No"]", +"[check_records ? "Yes" : "No"]", +"[arrest_type ? "Detain" : "Arrest"]", +"[declare_arrests ? "Yes" : "No"]", +"[auto_patrol ? "On" : "Off"]" ) return dat diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 1c3adb1dfe..1ae1c7d3a6 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -8,6 +8,7 @@ anchored = FALSE health = 25 maxHealth = 25 + spacewalk = TRUE radio_key = /obj/item/device/encryptionkey/headset_eng radio_channel = "Engineering" @@ -45,9 +46,6 @@ access_card.access += J.get_access() prev_access = access_card.access -/mob/living/simple_animal/bot/floorbot/Process_Spacemove(movement_dir = 0) - return 1 - /mob/living/simple_animal/bot/floorbot/turn_on() . = ..() update_icon() @@ -74,28 +72,28 @@ dat += hack(user) dat += showpai(user) dat += "Floor Repairer Controls v1.1

    " - dat += "Status: [on ? "On" : "Off"]
    " + dat += "Status: [on ? "On" : "Off"]
    " dat += "Maintenance panel panel is [open ? "opened" : "closed"]
    " dat += "Special tiles: " if(specialtiles) - dat += "Loaded \[[specialtiles]/[maxtiles]\]
    " + dat += "Loaded \[[specialtiles]/[maxtiles]\]
    " else dat += "None Loaded
    " dat += "Behaviour controls are [locked ? "locked" : "unlocked"]
    " if(!locked || issilicon(user) || IsAdminGhost(user)) - dat += "Add tiles to new hull plating: [autotile ? "Yes" : "No"]
    " - dat += "Place floor tiles: [placetiles ? "Yes" : "No"]
    " - dat += "Replace existing floor tiles with custom tiles: [replacetiles ? "Yes" : "No"]
    " - dat += "Repair damaged tiles and platings: [fixfloors ? "Yes" : "No"]
    " - dat += "Traction Magnets: [anchored ? "Engaged" : "Disengaged"]
    " - dat += "Patrol Station: [auto_patrol ? "Yes" : "No"]
    " + dat += "Add tiles to new hull plating: [autotile ? "Yes" : "No"]
    " + dat += "Place floor tiles: [placetiles ? "Yes" : "No"]
    " + dat += "Replace existing floor tiles with custom tiles: [replacetiles ? "Yes" : "No"]
    " + dat += "Repair damaged tiles and platings: [fixfloors ? "Yes" : "No"]
    " + dat += "Traction Magnets: [anchored ? "Engaged" : "Disengaged"]
    " + dat += "Patrol Station: [auto_patrol ? "Yes" : "No"]
    " var/bmode if(targetdirection) bmode = dir2text(targetdirection) else bmode = "disabled" - dat += "Line Mode : [bmode]
    " + dat += "Line Mode : [bmode]
    " return dat diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 04a83647ed..f41a6138cb 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -89,12 +89,12 @@ Status: []
    Behaviour controls are [locked ? "locked" : "unlocked"]
    Maintenance panel panel is [open ? "opened" : "closed"]"}, -"[on ? "On" : "Off"]" ) +"[on ? "On" : "Off"]" ) if(!locked || issilicon(user) || IsAdminGhost(user)) dat += text({"
    Auto Patrol: []"}, -"[auto_patrol ? "On" : "Off"]" ) +"[auto_patrol ? "On" : "Off"]" ) return dat /mob/living/simple_animal/bot/honkbot/proc/judgement_criteria() diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 7e9ef07a94..06c953a2da 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -136,37 +136,37 @@ dat += hack(user) dat += showpai(user) dat += "Medical Unit Controls v1.1

    " - dat += "Status: [on ? "On" : "Off"]
    " + dat += "Status: [on ? "On" : "Off"]
    " dat += "Maintenance panel panel is [open ? "opened" : "closed"]
    " dat += "Beaker: " if(reagent_glass) - dat += "Loaded \[[reagent_glass.reagents.total_volume]/[reagent_glass.reagents.maximum_volume]\]" + dat += "Loaded \[[reagent_glass.reagents.total_volume]/[reagent_glass.reagents.maximum_volume]\]" else dat += "None Loaded" dat += "
    Behaviour controls are [locked ? "locked" : "unlocked"]
    " if(!locked || issilicon(user) || IsAdminGhost(user)) dat += "Healing Threshold: " - dat += "-- " - dat += "- " + dat += "-- " + dat += "- " dat += "[heal_threshold] " - dat += "+ " - dat += "++" + dat += "+ " + dat += "++" dat += "
    " dat += "Injection Level: " - dat += "- " + dat += "- " dat += "[injection_amount] " - dat += "+ " + dat += "+ " dat += "
    " dat += "Reagent Source: " - dat += "[use_beaker ? "Loaded Beaker (When available)" : "Internal Synthesizer"]
    " + dat += "[use_beaker ? "Loaded Beaker (When available)" : "Internal Synthesizer"]
    " - dat += "Treat Viral Infections: [treat_virus ? "Yes" : "No"]
    " - dat += "The speaker switch is [shut_up ? "off" : "on"]. Toggle
    " - dat += "Critical Patient Alerts: [declare_crit ? "Yes" : "No"]
    " - dat += "Patrol Station: [auto_patrol ? "Yes" : "No"]
    " - dat += "Stationary Mode: [stationary_mode ? "Yes" : "No"]
    " + dat += "Treat Viral Infections: [treat_virus ? "Yes" : "No"]
    " + dat += "The speaker switch is [shut_up ? "off" : "on"]. Toggle
    " + dat += "Critical Patient Alerts: [declare_crit ? "Yes" : "No"]
    " + dat += "Patrol Station: [auto_patrol ? "Yes" : "No"]
    " + dat += "Stationary Mode: [stationary_mode ? "Yes" : "No"]
    " return dat @@ -343,7 +343,7 @@ if(C.stat == DEAD || (C.status_flags & FAKEDEATH)) return FALSE //welp too late for them! - if(!(loc == C.loc) || !(isturf(C.loc) && isturf(loc))) + if(!(loc == C.loc) && !(isturf(C.loc) && isturf(loc))) return FALSE if(C.suiciding) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index d8fcfd9344..b602e19125 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -282,22 +282,22 @@ dat += "Power level: [cell ? cell.percent() : 0]%" if(locked && !ai && !IsAdminGhost(user)) - dat += " 
    Controls are locked
    Unlock Controls" + dat += " 
    Controls are locked
    Unlock Controls" else - dat += " 
    Controls are unlocked
    Lock Controls

    " + dat += " 
    Controls are unlocked
    Lock Controls

    " - dat += "Toggle Power
    " - dat += "Stop
    " - dat += "Proceed
    " - dat += "Return to Home
    " - dat += "Set Destination
    " - dat += "Set Bot ID
    " - dat += "Set Home
    " - dat += "Toggle Auto Return Home ([auto_return ? "On":"Off"])
    " - dat += "Toggle Auto Pickup Crate ([auto_pickup ? "On":"Off"])
    " - dat += "Toggle Delivery Reporting ([report_delivery ? "On" : "Off"])
    " + dat += "Toggle Power
    " + dat += "Stop
    " + dat += "Proceed
    " + dat += "Return to Home
    " + dat += "Set Destination
    " + dat += "Set Bot ID
    " + dat += "Set Home
    " + dat += "Toggle Auto Return Home ([auto_return ? "On":"Off"])
    " + dat += "Toggle Auto Pickup Crate ([auto_pickup ? "On":"Off"])
    " + dat += "Toggle Delivery Reporting ([report_delivery ? "On" : "Off"])
    " if(load) - dat += "Unload Now
    " + dat += "Unload Now
    " dat += "
    The maintenance hatch is closed.
    " return dat diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 772604a527..4300746901 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -105,7 +105,7 @@ Status: []
    Behaviour controls are [locked ? "locked" : "unlocked"]
    Maintenance panel panel is [open ? "opened" : "closed"]"}, -"[on ? "On" : "Off"]" ) +"[on ? "On" : "Off"]" ) if(!locked || issilicon(user) || IsAdminGhost(user)) dat += text({"
    @@ -116,12 +116,12 @@ Operating Mode: []
    Report Arrests[]
    Auto Patrol: []"}, -"[idcheck ? "Yes" : "No"]", -"[weaponscheck ? "Yes" : "No"]", -"[check_records ? "Yes" : "No"]", -"[arrest_type ? "Detain" : "Arrest"]", -"[declare_arrests ? "Yes" : "No"]", -"[auto_patrol ? "On" : "Off"]" ) +"[idcheck ? "Yes" : "No"]", +"[weaponscheck ? "Yes" : "No"]", +"[check_records ? "Yes" : "No"]", +"[arrest_type ? "Detain" : "Arrest"]", +"[declare_arrests ? "Yes" : "No"]", +"[auto_patrol ? "On" : "Off"]" ) return dat diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 5f216b7903..0e6ecf1672 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -10,6 +10,7 @@ speak_chance = 1 icon = 'icons/mob/mob.dmi' speed = 0 + spacewalk = TRUE a_intent = INTENT_HARM stop_automated_movement = 1 status_flags = CANPUSH @@ -85,9 +86,6 @@ else if(src != M) return ..() -/mob/living/simple_animal/hostile/construct/Process_Spacemove(movement_dir = 0) - return 1 - /mob/living/simple_animal/hostile/construct/narsie_act() return diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 5e8a875dce..2a94052274 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -68,13 +68,13 @@ var/dat = "
    Inventory of [name]

    " if(inventory_head) - dat += "
    Head: [inventory_head] (Remove)" + dat += "
    Head: [inventory_head] (Remove)" else - dat += "
    Head: Nothing" + dat += "
    Head: Nothing" if(inventory_back) - dat += "
    Back: [inventory_back] (Remove)" + dat += "
    Back: [inventory_back] (Remove)" else - dat += "
    Back: Nothing" + dat += "
    Back: Nothing" user << browse(dat, text("window=mob[];size=325x500", real_name)) onclose(user, "mob[real_name]") diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 6b08d041c0..ef662c8f5a 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -20,6 +20,7 @@ response_harm = "hits" maxHealth = 60 health = 60 + spacewalk = TRUE var/armored = FALSE obj_damage = 60 @@ -67,9 +68,6 @@ maxHealth = 120 armored = TRUE -/mob/living/simple_animal/hostile/bear/Process_Spacemove(movement_dir = 0) - return 1 //No drifting in space for space bears! - /mob/living/simple_animal/hostile/bear/update_icons() ..() if(armored) diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 0213a79e4a..02252254c9 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -28,6 +28,7 @@ response_harm = "squashes" maxHealth = 10 health = 10 + spacewalk = TRUE faction = list("hostile") move_to_delay = 0 obj_damage = 0 @@ -52,11 +53,6 @@ var/static/beehometypecache = typecacheof(/obj/structure/beebox) var/static/hydroponicstypecache = typecacheof(/obj/machinery/hydroponics) - -/mob/living/simple_animal/hostile/poison/bees/Process_Spacemove(movement_dir = 0) - return 1 - - /mob/living/simple_animal/hostile/poison/bees/Initialize() . = ..() generate_bee_visuals() diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 806a916421..4be394e2b5 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -18,6 +18,7 @@ speed = 0 maxHealth = 25 health = 25 + spacewalk = TRUE harm_intent_damage = 8 obj_damage = 50 @@ -36,9 +37,6 @@ pressure_resistance = 200 gold_core_spawnable = 1 -/mob/living/simple_animal/hostile/carp/Process_Spacemove(movement_dir = 0) - return 1 //No drifting in space for space carp! //original comments do not steal - /mob/living/simple_animal/hostile/carp/AttackingTarget() . = ..() if(. && ishuman(target)) diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 1807e39a71..173c8a6b8d 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -1,44 +1,42 @@ -/mob/living/simple_animal/hostile/faithless - name = "The Faithless" - desc = "The Wish Granter's faith in humanity, incarnate." - icon_state = "faithless" - icon_living = "faithless" - icon_dead = "faithless_dead" - gender = MALE - speak_chance = 0 - turns_per_move = 5 - response_help = "passes through" - response_disarm = "shoves" - response_harm = "hits" - emote_taunt = list("wails") - taunt_chance = 25 - speed = 0 - maxHealth = 80 - health = 80 - stat_attack = UNCONSCIOUS - robust_searching = 1 - - harm_intent_damage = 10 - obj_damage = 50 - melee_damage_lower = 15 - melee_damage_upper = 15 - attacktext = "grips" - attack_sound = 'sound/hallucinations/growl1.ogg' - speak_emote = list("growls") - - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - - faction = list("faithless") - gold_core_spawnable = 1 - -/mob/living/simple_animal/hostile/faithless/Process_Spacemove(movement_dir = 0) - return 1 - -/mob/living/simple_animal/hostile/faithless/AttackingTarget() - . = ..() - if(. && prob(12) && iscarbon(target)) - var/mob/living/carbon/C = target - C.Knockdown(60) - C.visible_message("\The [src] knocks down \the [C]!", \ - "\The [src] knocks you down!") +/mob/living/simple_animal/hostile/faithless + name = "The Faithless" + desc = "The Wish Granter's faith in humanity, incarnate." + icon_state = "faithless" + icon_living = "faithless" + icon_dead = "faithless_dead" + gender = MALE + speak_chance = 0 + turns_per_move = 5 + response_help = "passes through" + response_disarm = "shoves" + response_harm = "hits" + emote_taunt = list("wails") + taunt_chance = 25 + speed = 0 + maxHealth = 80 + health = 80 + spacewalk = TRUE + stat_attack = UNCONSCIOUS + robust_searching = 1 + + harm_intent_damage = 10 + obj_damage = 50 + melee_damage_lower = 15 + melee_damage_upper = 15 + attacktext = "grips" + attack_sound = 'sound/hallucinations/growl1.ogg' + speak_emote = list("growls") + + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + + faction = list("faithless") + gold_core_spawnable = 1 + +/mob/living/simple_animal/hostile/faithless/AttackingTarget() + . = ..() + if(. && prob(12) && iscarbon(target)) + var/mob/living/carbon/C = target + C.Knockdown(60) + C.visible_message("\The [src] knocks down \the [C]!", \ + "\The [src] knocks you down!") diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index a214895b83..587afef82f 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -164,12 +164,8 @@ Difficulty: Very Hard return var/turf/startloc = get_turf(src) var/obj/item/projectile/P = new /obj/item/projectile/colossus(startloc) - P.starting = startloc + P.preparePixelProjectile(marker, startloc) P.firer = src - if(marker) - P.yo = marker.y - startloc.y - P.xo = marker.x - startloc.x - P.original = marker if(target) P.original = target P.fire(set_angle) @@ -579,7 +575,7 @@ Difficulty: Very Hard if(..() && !ready_to_deploy) GLOB.poi_list |= src ready_to_deploy = TRUE - notify_ghosts("An anomalous crystal has been activated in [get_area(src)]! This crystal can always be used by ghosts hereafter.", enter_link = "(Click to enter)", ghost_sound = 'sound/effects/ghost2.ogg', source = src, action = NOTIFY_ATTACK) + notify_ghosts("An anomalous crystal has been activated in [get_area(src)]! This crystal can always be used by ghosts hereafter.", enter_link = "(Click to enter)", ghost_sound = 'sound/effects/ghost2.ogg', source = src, action = NOTIFY_ATTACK) /obj/machinery/anomalous_crystal/helpers/attack_ghost(mob/dead/observer/user) ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 791021d42b..7f12e684e8 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -36,6 +36,7 @@ Difficulty: Medium desc = "Guardians of the necropolis." health = 2500 maxHealth = 2500 + spacewalk = TRUE attacktext = "chomps" attack_sound = 'sound/magic/demon_attack1.ogg' icon_state = "dragon" @@ -97,9 +98,6 @@ Difficulty: Medium if(!swooping) ..() -/mob/living/simple_animal/hostile/megafauna/dragon/Process_Spacemove(movement_dir = 0) - return 1 - /mob/living/simple_animal/hostile/megafauna/dragon/OpenFire() if(swooping) return diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm index 5b987edc0e..ee0c16a768 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -21,6 +21,7 @@ Difficulty: Medium name = "Legion" health = 800 maxHealth = 800 + spacewalk = TRUE icon_state = "legion" icon_living = "legion" desc = "One of many." @@ -139,9 +140,6 @@ Difficulty: Medium loot = list(/obj/structure/closet/crate/necropolis/tendril) ..() -/mob/living/simple_animal/hostile/megafauna/legion/Process_Spacemove(movement_dir = 0) - return 1 - /obj/item/device/gps/internal/legion icon_state = null gpstag = "Echoing Signal" diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index edcf1a0f73..83291d7822 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -127,7 +127,7 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca if(owner != creator) LoseTarget() creator = owner - faction |= "\ref[owner]" + faction |= "[REF(owner)]" /mob/living/simple_animal/hostile/mimic/copy/proc/CheckObject(obj/O) if((isitem(O) || isstructure(O)) && !is_type_in_list(O, GLOB.protected_objects)) @@ -160,7 +160,7 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca maxHealth = health if(user) creator = user - faction += "\ref[creator]" // very unique + faction += "[REF(creator)]" // very unique if(destroy_original) qdel(O) return 1 diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index f058464981..8ad8babb36 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -1,68 +1,66 @@ -/mob/living/simple_animal/hostile/pirate - name = "Pirate" - desc = "Does what he wants cause a pirate is free." - icon = 'icons/mob/simple_human.dmi' - icon_state = "piratemelee" - icon_living = "piratemelee" - icon_dead = "piratemelee_dead" - speak_chance = 0 - turns_per_move = 5 - response_help = "pushes" - response_disarm = "shoves" - response_harm = "hits" - speed = 0 - maxHealth = 100 - health = 100 - - harm_intent_damage = 5 - obj_damage = 60 - melee_damage_lower = 30 - melee_damage_upper = 30 - attacktext = "slashes" - attack_sound = 'sound/weapons/bladeslice.ogg' - - atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) - unsuitable_atmos_damage = 15 - speak_emote = list("yarrs") - loot = list(/obj/effect/mob_spawn/human/corpse/pirate, +/mob/living/simple_animal/hostile/pirate + name = "Pirate" + desc = "Does what he wants cause a pirate is free." + icon = 'icons/mob/simple_human.dmi' + icon_state = "piratemelee" + icon_living = "piratemelee" + icon_dead = "piratemelee_dead" + speak_chance = 0 + turns_per_move = 5 + response_help = "pushes" + response_disarm = "shoves" + response_harm = "hits" + speed = 0 + maxHealth = 100 + health = 100 + spacewalk = TRUE + + harm_intent_damage = 5 + obj_damage = 60 + melee_damage_lower = 30 + melee_damage_upper = 30 + attacktext = "slashes" + attack_sound = 'sound/weapons/bladeslice.ogg' + + atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) + unsuitable_atmos_damage = 15 + speak_emote = list("yarrs") + loot = list(/obj/effect/mob_spawn/human/corpse/pirate, /obj/item/melee/transforming/energy/sword/pirate) - del_on_death = 1 - faction = list("pirate") - -/mob/living/simple_animal/hostile/pirate/ranged - name = "Pirate Gunner" - icon_state = "pirateranged" - icon_living = "pirateranged" - icon_dead = "piratemelee_dead" - projectilesound = 'sound/weapons/laser.ogg' - ranged = 1 - rapid = 1 - retreat_distance = 5 - minimum_distance = 5 - projectiletype = /obj/item/projectile/beam/laser - loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged, - /obj/item/gun/energy/laser) - -/mob/living/simple_animal/hostile/pirate/space - name = "Space Pirate" - icon_state = "piratespace" - icon_living = "piratespace" - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - speed = 1 - -/mob/living/simple_animal/hostile/pirate/space/ranged - name = "Space Pirate Gunner" - icon_state = "piratespaceranged" - icon_living = "piratespaceranged" - projectilesound = 'sound/weapons/laser.ogg' - ranged = 1 - rapid = 1 - retreat_distance = 5 - minimum_distance = 5 - projectiletype = /obj/item/projectile/beam/laser - loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged, - /obj/item/gun/energy/laser) - -/mob/living/simple_animal/hostile/pirate/space/Process_Spacemove(movement_dir = 0) - return 1 + del_on_death = 1 + faction = list("pirate") + +/mob/living/simple_animal/hostile/pirate/ranged + name = "Pirate Gunner" + icon_state = "pirateranged" + icon_living = "pirateranged" + icon_dead = "piratemelee_dead" + projectilesound = 'sound/weapons/laser.ogg' + ranged = 1 + rapid = 1 + retreat_distance = 5 + minimum_distance = 5 + projectiletype = /obj/item/projectile/beam/laser + loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged, + /obj/item/gun/energy/laser) + +/mob/living/simple_animal/hostile/pirate/space + name = "Space Pirate" + icon_state = "piratespace" + icon_living = "piratespace" + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + speed = 1 + +/mob/living/simple_animal/hostile/pirate/space/ranged + name = "Space Pirate Gunner" + icon_state = "piratespaceranged" + icon_living = "piratespaceranged" + projectilesound = 'sound/weapons/laser.ogg' + ranged = 1 + rapid = 1 + retreat_distance = 5 + minimum_distance = 5 + projectiletype = /obj/item/projectile/beam/laser + loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged, + /obj/item/gun/energy/laser) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm index d75e4acbc5..2fb4eb61bd 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm @@ -12,6 +12,7 @@ speak_chance = 0 maxHealth = 15 health = 15 + spacewalk = TRUE see_in_dark = 10 harm_intent_damage = 6 melee_damage_lower = 6 @@ -36,5 +37,3 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 -/mob/living/simple_animal/hostile/retaliate/bat/Process_Spacemove(movement_dir = 0) - return 1 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 11331e7ab7..a17ec0ff66 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -55,6 +55,7 @@ status_flags = 0 maxHealth = 170 health = 170 + spacewalk = TRUE /mob/living/simple_animal/hostile/syndicate/melee/bullet_act(obj/item/projectile/Proj) if(!Proj) @@ -75,9 +76,6 @@ loot = list(/obj/effect/gibspawner/human) speed = 1 -/mob/living/simple_animal/hostile/syndicate/melee/space/Process_Spacemove(movement_dir = 0) - return 1 - /mob/living/simple_animal/hostile/syndicate/melee/space/stormtrooper icon_state = "syndicatemeleestormtrooper" icon_living = "syndicatemeleestormtrooper" @@ -106,11 +104,9 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speed = 1 + spacewalk = TRUE loot = list(/obj/effect/gibspawner/human) -/mob/living/simple_animal/hostile/syndicate/ranged/space/Process_Spacemove(movement_dir = 0) - return 1 - /mob/living/simple_animal/hostile/syndicate/ranged/space/stormtrooper icon_state = "syndicaterangedstormtrooper" icon_living = "syndicaterangedstormtrooper" diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 085a95540f..6ff04231af 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -187,9 +187,9 @@ user.set_machine(src) var/dat = "

    Inventory of [name]

    " if(ears) - dat += "
    Headset: [ears] (Remove)" + dat += "
    Headset: [ears] (Remove)" else - dat += "
    Headset: Nothing" + dat += "
    Headset: Nothing" user << browse(dat, "window=mob[real_name];size=325x500") onclose(user, "mob[real_name]") diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index d7c4f0cb03..ab2126e7b9 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -8,6 +8,7 @@ icon_living = "shade" maxHealth = 50 health = 50 + spacewalk = TRUE healable = 0 speak_emote = list("hisses") emote_hear = list("wails.","screeches.") @@ -40,9 +41,6 @@ return 0 return ..() -/mob/living/simple_animal/shade/Process_Spacemove(movement_dir = 0) - return TRUE //this doesn't make much sense; you'd thing TRUE would mean it'd process spacemove but it means it doesn't - /mob/living/simple_animal/shade/attack_animal(mob/living/simple_animal/M) if(isconstruct(M)) var/mob/living/simple_animal/hostile/construct/C = M diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 204963440a..30c80909ae 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1,3 +1,6 @@ +/mob + use_tag = TRUE + /mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game. GLOB.mob_list -= src GLOB.dead_mob_list -= src @@ -542,7 +545,7 @@ if(Adjacent(usr)) show_inv(usr) else - usr << browse(null,"window=mob\ref[src]") + usr << browse(null,"window=mob[REF(src)]") // The src mob is trying to strip an item from someone // Defined in living.dm @@ -834,10 +837,10 @@ if(exact_match) //if we need an exact match, we need to do some bullfuckery. var/list/faction_src = faction.Copy() var/list/faction_target = target.faction.Copy() - if(!("\ref[src]" in faction_target)) //if they don't have our ref faction, remove it from our factions list. - faction_src -= "\ref[src]" //if we don't do this, we'll never have an exact match. - if(!("\ref[target]" in faction_src)) - faction_target -= "\ref[target]" //same thing here. + if(!("[REF(src)]" in faction_target)) //if they don't have our ref faction, remove it from our factions list. + faction_src -= "[REF(src)]" //if we don't do this, we'll never have an exact match. + if(!("[REF(target)]" in faction_src)) + faction_target -= "[REF(target)]" //same thing here. return faction_check(faction_src, faction_target, TRUE) return faction_check(faction, target.faction, FALSE) @@ -976,18 +979,18 @@ /mob/vv_get_dropdown() . = ..() . += "---" - .["Gib"] = "?_src_=vars;[HrefToken()];gib=\ref[src]" - .["Give Spell"] = "?_src_=vars;[HrefToken()];give_spell=\ref[src]" - .["Remove Spell"] = "?_src_=vars;[HrefToken()];remove_spell=\ref[src]" - .["Give Disease"] = "?_src_=vars;[HrefToken()];give_disease=\ref[src]" - .["Toggle Godmode"] = "?_src_=vars;[HrefToken()];godmode=\ref[src]" - .["Drop Everything"] = "?_src_=vars;[HrefToken()];drop_everything=\ref[src]" - .["Regenerate Icons"] = "?_src_=vars;[HrefToken()];regenerateicons=\ref[src]" - .["Make Space Ninja"] = "?_src_=vars;[HrefToken()];ninja=\ref[src]" - .["Show player panel"] = "?_src_=vars;[HrefToken()];mob_player_panel=\ref[src]" - .["Toggle Build Mode"] = "?_src_=vars;[HrefToken()];build_mode=\ref[src]" - .["Assume Direct Control"] = "?_src_=vars;[HrefToken()];direct_control=\ref[src]" - .["Offer Control to Ghosts"] = "?_src_=vars;[HrefToken()];offer_control=\ref[src]" + .["Gib"] = "?_src_=vars;[HrefToken()];gib=[REF(src)]" + .["Give Spell"] = "?_src_=vars;[HrefToken()];give_spell=[REF(src)]" + .["Remove Spell"] = "?_src_=vars;[HrefToken()];remove_spell=[REF(src)]" + .["Give Disease"] = "?_src_=vars;[HrefToken()];give_disease=[REF(src)]" + .["Toggle Godmode"] = "?_src_=vars;[HrefToken()];godmode=[REF(src)]" + .["Drop Everything"] = "?_src_=vars;[HrefToken()];drop_everything=[REF(src)]" + .["Regenerate Icons"] = "?_src_=vars;[HrefToken()];regenerateicons=[REF(src)]" + .["Make Space Ninja"] = "?_src_=vars;[HrefToken()];ninja=[REF(src)]" + .["Show player panel"] = "?_src_=vars;[HrefToken()];mob_player_panel=[REF(src)]" + .["Toggle Build Mode"] = "?_src_=vars;[HrefToken()];build_mode=[REF(src)]" + .["Assume Direct Control"] = "?_src_=vars;[HrefToken()];direct_control=[REF(src)]" + .["Offer Control to Ghosts"] = "?_src_=vars;[HrefToken()];offer_control=[REF(src)]" /mob/vv_get_var(var_name) switch(var_name) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 5260ace246..497f0536a0 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -46,6 +46,7 @@ var/slurring = 0 //Carbon var/cultslurring = 0 //Carbon var/real_name = null + var/spacewalk = FALSE var/druggy = 0 //Carbon var/confused = 0 //Carbon var/resting = 0 //Carbon diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 9b31b2a1cb..8dff2bc3b8 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -398,7 +398,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp if(flashwindow) window_flash(O.client) if(source) - var/obj/screen/alert/notify_action/A = O.throw_alert("\ref[source]_notify_action", /obj/screen/alert/notify_action) + var/obj/screen/alert/notify_action/A = O.throw_alert("[REF(source)]_notify_action", /obj/screen/alert/notify_action) if(A) if(O.client.prefs && O.client.prefs.UI_style) A.icon = ui_style2icon(O.client.prefs.UI_style) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index e99a4e0ae8..ad38ba98ac 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -297,7 +297,7 @@ ///For moving in space ///return TRUE for movement 0 for none /mob/Process_Spacemove(movement_dir = 0) - if(..()) + if(spacewalk || ..()) return TRUE var/atom/movable/backup = get_spacemove_backup() if(backup) diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm index 0562bf700d..88f322328f 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/card.dm @@ -331,7 +331,7 @@ "desc_close" = status_close["desc"]))) data["slots"] = pos - data["src"] = "\ref[src]" + data["src"] = "[REF(src)]" data["station_name"] = station_name() diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index f56a1a3f1b..d9d220b0ef 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -1,122 +1,122 @@ -/obj/item/clipboard - name = "clipboard" - icon = 'icons/obj/bureaucracy.dmi' - icon_state = "clipboard" - item_state = "clipboard" - throwforce = 0 - w_class = WEIGHT_CLASS_SMALL - throw_speed = 3 - throw_range = 7 - var/obj/item/pen/haspen //The stored pen. - var/obj/item/paper/toppaper //The topmost piece of paper. - slot_flags = SLOT_BELT - resistance_flags = FLAMMABLE - -/obj/item/clipboard/Initialize() - update_icon() - . = ..() - -/obj/item/clipboard/Destroy() - QDEL_NULL(haspen) - QDEL_NULL(toppaper) //let movable/Destroy handle the rest - return ..() - -/obj/item/clipboard/update_icon() - cut_overlays() - if(toppaper) - add_overlay(toppaper.icon_state) - copy_overlays(toppaper) - if(haspen) - add_overlay("clipboard_pen") - add_overlay("clipboard_over") - - -/obj/item/clipboard/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/paper)) - if(!user.transferItemToLoc(W, src)) - return - toppaper = W - to_chat(user, "You clip the paper onto \the [src].") - update_icon() - else if(toppaper) - toppaper.attackby(user.get_active_held_item(), user) - update_icon() - - -/obj/item/clipboard/attack_self(mob/user) - var/dat = "Clipboard" - if(haspen) - dat += "Remove Pen


    " - else - dat += "Add Pen

    " - - //The topmost paper. You can't organise contents directly in byond, so this is what we're stuck with. -Pete - if(toppaper) - var/obj/item/paper/P = toppaper - dat += "Write Remove - [P.name]

    " - - for(P in src) - if(P == toppaper) - continue - dat += "Write Remove Move to top - [P.name]
    " - user << browse(dat, "window=clipboard") - onclose(user, "clipboard") - add_fingerprint(usr) - - -/obj/item/clipboard/Topic(href, href_list) - ..() - if(usr.stat || usr.restrained()) - return - - if(usr.contents.Find(src)) - - if(href_list["pen"]) - if(haspen) - haspen.loc = usr.loc - usr.put_in_hands(haspen) - haspen = null - - if(href_list["addpen"]) - if(!haspen) - var/obj/item/held = usr.get_active_held_item() - if(istype(held, /obj/item/pen)) - var/obj/item/pen/W = held - if(!usr.transferItemToLoc(W, src)) - return - haspen = W - to_chat(usr, "You slot [W] into [src].") - - if(href_list["write"]) - var/obj/item/P = locate(href_list["write"]) - if(istype(P) && P.loc == src) - if(usr.get_active_held_item()) - P.attackby(usr.get_active_held_item(), usr) - - if(href_list["remove"]) - var/obj/item/P = locate(href_list["remove"]) - if(istype(P) && P.loc == src) - P.loc = usr.loc - usr.put_in_hands(P) - if(P == toppaper) - toppaper = null - var/obj/item/paper/newtop = locate(/obj/item/paper) in src - if(newtop && (newtop != P)) - toppaper = newtop - else - toppaper = null - - if(href_list["read"]) - var/obj/item/paper/P = locate(href_list["read"]) - if(istype(P) && P.loc == src) - usr.examinate(P) - - if(href_list["top"]) - var/obj/item/P = locate(href_list["top"]) - if(istype(P) && P.loc == src) - toppaper = P - to_chat(usr, "You move [P.name] to the top.") - - //Update everything - attack_self(usr) - update_icon() +/obj/item/clipboard + name = "clipboard" + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "clipboard" + item_state = "clipboard" + throwforce = 0 + w_class = WEIGHT_CLASS_SMALL + throw_speed = 3 + throw_range = 7 + var/obj/item/pen/haspen //The stored pen. + var/obj/item/paper/toppaper //The topmost piece of paper. + slot_flags = SLOT_BELT + resistance_flags = FLAMMABLE + +/obj/item/clipboard/Initialize() + update_icon() + . = ..() + +/obj/item/clipboard/Destroy() + QDEL_NULL(haspen) + QDEL_NULL(toppaper) //let movable/Destroy handle the rest + return ..() + +/obj/item/clipboard/update_icon() + cut_overlays() + if(toppaper) + add_overlay(toppaper.icon_state) + copy_overlays(toppaper) + if(haspen) + add_overlay("clipboard_pen") + add_overlay("clipboard_over") + + +/obj/item/clipboard/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/paper)) + if(!user.transferItemToLoc(W, src)) + return + toppaper = W + to_chat(user, "You clip the paper onto \the [src].") + update_icon() + else if(toppaper) + toppaper.attackby(user.get_active_held_item(), user) + update_icon() + + +/obj/item/clipboard/attack_self(mob/user) + var/dat = "Clipboard" + if(haspen) + dat += "Remove Pen

    " + else + dat += "Add Pen

    " + + //The topmost paper. You can't organise contents directly in byond, so this is what we're stuck with. -Pete + if(toppaper) + var/obj/item/paper/P = toppaper + dat += "Write Remove - [P.name]

    " + + for(P in src) + if(P == toppaper) + continue + dat += "Write Remove Move to top - [P.name]
    " + user << browse(dat, "window=clipboard") + onclose(user, "clipboard") + add_fingerprint(usr) + + +/obj/item/clipboard/Topic(href, href_list) + ..() + if(usr.stat || usr.restrained()) + return + + if(usr.contents.Find(src)) + + if(href_list["pen"]) + if(haspen) + haspen.loc = usr.loc + usr.put_in_hands(haspen) + haspen = null + + if(href_list["addpen"]) + if(!haspen) + var/obj/item/held = usr.get_active_held_item() + if(istype(held, /obj/item/pen)) + var/obj/item/pen/W = held + if(!usr.transferItemToLoc(W, src)) + return + haspen = W + to_chat(usr, "You slot [W] into [src].") + + if(href_list["write"]) + var/obj/item/P = locate(href_list["write"]) + if(istype(P) && P.loc == src) + if(usr.get_active_held_item()) + P.attackby(usr.get_active_held_item(), usr) + + if(href_list["remove"]) + var/obj/item/P = locate(href_list["remove"]) + if(istype(P) && P.loc == src) + P.loc = usr.loc + usr.put_in_hands(P) + if(P == toppaper) + toppaper = null + var/obj/item/paper/newtop = locate(/obj/item/paper) in src + if(newtop && (newtop != P)) + toppaper = newtop + else + toppaper = null + + if(href_list["read"]) + var/obj/item/paper/P = locate(href_list["read"]) + if(istype(P) && P.loc == src) + usr.examinate(P) + + if(href_list["top"]) + var/obj/item/P = locate(href_list["top"]) + if(istype(P) && P.loc == src) + toppaper = P + to_chat(usr, "You move [P.name] to the top.") + + //Update everything + attack_self(usr) + update_icon() diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index f9d0faa16e..72dce2b8d2 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -76,7 +76,7 @@ var/i for(i=contents.len, i>=1, i--) var/obj/item/P = contents[i] - dat += "
    " + dat += "" dat += "

    Name

    Status

    Location

    Control

    [bot_mode][bot_area.name]InterfaceCallInterfaceCall
    [P.name]
    [P.name]
    " user << browse("[name][dat]", "window=filingcabinet;size=350x300") diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index d8d4fef0f8..3221a2c8db 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -46,7 +46,7 @@ var/dat = "[name]" for(var/obj/item/I in src) - dat += "Remove - [I.name]
    " + dat += "Remove - [I.name]
    " user << browse(dat, "window=folder") onclose(user, "folder") add_fingerprint(usr) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index ae6751f526..1fb1846f4c 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -175,8 +175,8 @@ /obj/item/paper/proc/updateinfolinks() info_links = info for(var/i in 1 to min(fields, 15)) - addtofield(i, "write", 1) - info_links = info_links + "write" + addtofield(i, "write", 1) + info_links = info_links + "write" /obj/item/paper/proc/clearpaper() @@ -277,7 +277,7 @@ else info += t // Oh, he wants to edit to the end of the file, let him. updateinfolinks() - usr << browse("[name][info_links]
    [stamps]", "window=[name]") // Update the window + usr << browse("[name][info_links]
    [stamps]", "window=[name]") // Update the window update_icon() @@ -292,7 +292,7 @@ if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) if(user.is_literate()) - user << browse("[name][info_links]
    [stamps]", "window=[name]") + user << browse("[name][info_links]
    [stamps]", "window=[name]") return else to_chat(user, "You don't know how to read or write.") diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index d4e78c4ef3..20038f5745 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -41,18 +41,18 @@ var/dat = "Photocopier

    " if(copy || photocopy || doccopy || (ass && (ass.loc == src.loc))) - dat += "Remove Paper
    " + dat += "Remove Paper
    " if(toner) - dat += "Copy
    " + dat += "Copy
    " dat += "Printing: [copies] copies." - dat += "- " - dat += "+

    " + dat += "- " + dat += "+

    " if(photocopy) - dat += "Printing in [greytoggle]

    " + dat += "Printing in [greytoggle]

    " else if(toner) dat += "Please insert paper to copy.

    " if(isAI(user)) - dat += "Print photo from database

    " + dat += "Print photo from database

    " dat += "Current toner level: [toner]" if(!toner) dat +="
    Please insert a new toner cartridge!" diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index 29e7b53cd2..a37344d635 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -293,28 +293,28 @@ var/dat = "" dat += "AntiMatter Control Panel
    " - dat += "Close
    " - dat += "Refresh
    " - dat += "Force Shielding Update

    " + dat += "Close
    " + dat += "Refresh
    " + dat += "Force Shielding Update

    " dat += "Status: [(active?"Injecting":"Standby")]
    " - dat += "Toggle Status
    " + dat += "Toggle Status
    " dat += "Stability: [stability]%
    " dat += "Reactor parts: [linked_shielding.len]
    "//TODO: perhaps add some sort of stability check dat += "Cores: [linked_cores.len]

    " dat += "-Current Efficiency: [reported_core_efficiency]
    " - dat += "-Average Stability: [stored_core_stability] (update)
    " + dat += "-Average Stability: [stored_core_stability] (update)
    " dat += "Last Produced: [DisplayPower(stored_power)]
    " dat += "Fuel: " if(!fueljar) dat += "
    No fuel receptacle detected." else - dat += "Eject
    " + dat += "Eject
    " dat += "- [fueljar.fuel]/[fueljar.fuel_max] Units
    " dat += "- Injecting: [fuel_injection] units
    " - dat += "- --|++

    " + dat += "- --|++

    " user << browse(dat, "window=AMcontrol;size=420x500") diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index 6aeaff9477..5369686b31 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -166,7 +166,7 @@ else t += "Unable to locate all parts!" if(include_link) - t += "
    Close" + t += "
    Close" return t diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index b98ea7f6c9..e19f152a75 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -233,9 +233,9 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne return var/dat = "Gravity Generator Breaker: " if(breaker) - dat += "ON OFF" + dat += "ON OFF" else - dat += "ON OFF " + dat += "ON OFF " dat += "
    Generator Status:
    " if(charging_state != POWER_IDLE) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 6031f6edab..73f48a2b28 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -235,16 +235,16 @@ var/dat = text("[name]
    ") if (active) - dat += text("Generator: On
    ") + dat += text("Generator: On
    ") else - dat += text("Generator: Off
    ") - dat += text("[capitalize(sheet_name)]: [sheets] - Eject
    ") + dat += text("Generator: Off
    ") + dat += text("[capitalize(sheet_name)]: [sheets] - Eject
    ") var/stack_percent = round(sheet_left * 100, 1) dat += text("Current stack: [stack_percent]%
    ") - dat += text("Power output: - [power_gen * power_output] +
    ") + dat += text("Power output: - [power_gen * power_output] +
    ") dat += text("Power current: [(powernet == null ? "Unconnected" : "[DisplayPower(avail())]")]
    ") dat += text("Heat: [current_heat]
    ") - dat += "
    Close" + dat += "
    Close" user << browse(dat, "window=port_gen") onclose(user, "port_gen") diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 2e92aa92aa..0ede336ef6 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -37,6 +37,8 @@ eject() else loaded_tank.air_contents.gases[/datum/gas/plasma][MOLES] -= 0.001*drainratio + ASSERT_GAS(/datum/gas/tritium,loaded_tank.air_contents) + loaded_tank.air_contents.gases[/datum/gas/tritium][MOLES] += 0.001*drainratio loaded_tank.air_contents.garbage_collect() var/power_produced = min(last_power, (last_power*RAD_COLLECTOR_STORED_OUT)+1000) //Produces at least 1000 watts if it has more than that stored diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index dd98f092ea..266e5b22f5 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -232,11 +232,11 @@ user.set_machine(src) var/dat = "" - dat += "Close

    " + dat += "Close

    " dat += "

    Status

    " if(!assembled) dat += "Unable to detect all parts!
    " - dat += "Run Scan

    " + dat += "Run Scan

    " else dat += "All parts in place.

    " dat += "Power:" @@ -244,9 +244,9 @@ dat += "On
    " else dat += "Off
    " - dat += "Toggle Power

    " + dat += "Toggle Power

    " dat += "Particle Strength: [strength] " - dat += "--|++

    " + dat += "--|++

    " var/datum/browser/popup = new(user, "pacontrol", name, 420, 300) popup.set_content(dat) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index ee531697aa..76145466da 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -276,9 +276,9 @@ t += "Turbine: [round(compressor.rpm)] RPM
    " - t += "Starter: [ compressor.starter ? "Off On" : "Off On"]" + t += "Starter: [ compressor.starter ? "Off On" : "Off On"]" - t += "
    Close" + t += "
    Close" t += "" var/datum/browser/popup = new(user, "turbine", name) @@ -334,18 +334,18 @@ if(compressor.stat || compressor.turbine.stat) dat += "[compressor.stat ? "Compressor is inoperable
    " : "Turbine is inoperable"]" else - dat += {"Turbine status: [ src.compressor.starter ? "Off On" : "Off On"] + dat += {"Turbine status: [ src.compressor.starter ? "Off On" : "Off On"] \n
    \nTurbine speed: [src.compressor.rpm]rpm
    \nPower currently being generated: [DisplayPower(src.compressor.turbine.lastgen)]
    \nInternal gas temperature: [src.compressor.gas_contained.temperature]K
    - \n
    Close + \n
    Close \n
    \n"} else dat += "There is [!compressor ? "no compressor" : " compressor[!compressor.turbine ? " but no turbine" : ""]"].
    " if(!compressor) - dat += "Search for compressor" + dat += "Search for compressor" var/datum/browser/popup = new(user, "turbinecomputer", name) popup.set_content(dat) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 57960fcea7..3037d8690c 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -307,7 +307,7 @@ var/mob/living/simple_animal/hostile/statue/S = new(P.loc, owner) S.name = "statue of [L.name]" if(owner) - S.faction = list("\ref[owner]") + S.faction = list("[REF(owner)]") S.icon = P.icon S.icon_state = P.icon_state S.copy_overlays(P, TRUE) diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index eb1ee87df9..77fcd50306 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -248,14 +248,14 @@ "} if (is_beaker_ready) if(!is_chamber_empty && !(stat & (NOPOWER|BROKEN))) - dat += "Grind the reagents
    " - dat += "Juice the reagents

    " + dat += "Grind the reagents
    " + dat += "Juice the reagents

    " else if (beaker.reagents.total_volume) - dat += "Mix the reagents

    " + dat += "Mix the reagents

    " if(length(holdingitems)) - dat += "Eject the reagents
    " + dat += "Eject the reagents
    " if(beaker) - dat += "Detach the beaker
    " + dat += "Detach the beaker
    " else dat += "Please wait..." diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 428c10e24a..aaa070703f 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -37,7 +37,7 @@ var/turf/T = get_turf(A) var/area/my_area = get_area(T) var/message = "A [reaction_name] reaction has occurred in [my_area.name] [ADMIN_COORDJMP(T)]" - message += " (VV)" + message += " (VV)" var/mob/M = get(A, /mob) if(M) diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index c0cd009104..d6fad81f64 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -73,8 +73,8 @@ list_reagents = list("chloralhydrate" = 15) /obj/item/reagent_containers/glass/bottle/charcoal - name = "antitoxin bottle" - desc = "A small bottle of charcoal." + name = "charcoal bottle" + desc = "A small bottle of charcoal, which removes toxins and other chemicals from the bloodstream." list_reagents = list("charcoal" = 30) /obj/item/reagent_containers/glass/bottle/mutagen diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 4b7ba22574..80efa8e293 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -217,7 +217,7 @@ list_reagents = list("silver_sulfadiazine" = 50) /obj/item/reagent_containers/glass/beaker/large/charcoal - name = "antitoxin reserve tank" + name = "charcoal reserve tank" list_reagents = list("charcoal" = 50) /obj/item/reagent_containers/glass/beaker/large/epinephrine diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 1ab1a46723..6d541dad1a 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -17,7 +17,7 @@ var/list/affecting // the list of all items that will be moved this ptick var/id = "" // the control ID - must match controller ID var/verted = 1 // set to -1 to have the conveyour belt be inverted, so you can use the other corner icons - speed_process = 1 + speed_process = TRUE /obj/machinery/conveyor/centcom_auto id = "round_end_belt" @@ -208,7 +208,7 @@ var/list/conveyors // the list of converyors that are controlled by this switch anchored = TRUE - speed_process = 1 + speed_process = TRUE diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index bb18ea187c..0bafcba54d 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -154,7 +154,7 @@ dat += "" for (var/i = 1, i <= GLOB.TAGGERLOCATIONS.len, i++) - dat += "" + dat += "" if(i%4==0) dat += "" diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 2fe94933d7..14346ee13b 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -315,13 +315,21 @@ category = list ("Misc. Machinery") /datum/design/board/processor - name = "Machine Design (Processor Board)" - desc = "The circuit board for a processor." + name = "Machine Design (Food Processor Board)" + desc = "The circuit board for a food processor." id = "processor" req_tech = list("programming" = 1) build_path = /obj/item/circuitboard/machine/processor category = list ("Misc. Machinery") +/datum/design/board/slimeprocessor + name = "Machine Design (Slime Processor Board)" + desc = "The circuit board for a slime processor." + id = "slimeprocessor" + req_tech = list("programming" = 1, "plasmatech" = 1) + build_path = /obj/item/circuitboard/machine/processor/slime + category = list ("Misc. Machinery") + /datum/design/board/recycler name = "Machine Design (Recycler Board)" desc = "The circuit board for a recycler." diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 4ba8925df6..4cf711bbee 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -138,7 +138,7 @@ user.set_machine(src) var/dat = "
    " if(!linked_console) - dat += "Scan for R&D Console
    " + dat += "Scan for R&D Console
    " if(loaded_item) dat += "Loaded Item: [loaded_item]
    " dat += "Technology:
    " @@ -146,19 +146,19 @@ for(var/T in D) dat += "[T]
    " dat += "

    Available tests:" - dat += "
    Poke" - dat += "
    Irradiate" - dat += "
    Gas" - dat += "
    Burn" - dat += "
    Freeze" - dat += "
    Destroy
    " + dat += "
    Poke" + dat += "
    Irradiate" + dat += "
    Gas" + dat += "
    Burn" + dat += "
    Freeze" + dat += "
    Destroy
    " if(istype(loaded_item, /obj/item/relic)) - dat += "
    Discover
    " - dat += "
    Eject" + dat += "
    Discover
    " + dat += "
    Eject" else dat += "Nothing loaded." - dat += "
    Refresh
    " - dat += "
    Close
    " + dat += "
    Refresh
    " + dat += "
    Close
    " var/datum/browser/popup = new(user, "experimentor","Experimentor", 700, 400, src) popup.set_content(dat) popup.open() diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 0cef65c07c..295dd4429a 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -19,7 +19,7 @@ GLOBAL_LIST_INIT(message_servers, list()) /datum/data_pda_msg/proc/get_photo_ref() if(photo) - return "(Photo)" + return "(Photo)" return "" /datum/data_pda_msg/Topic(href,href_list) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index d912bc908e..e02eb4a970 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -662,7 +662,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(0.2) dat += "
    SYSTEM LOCKED
    " - dat += "Unlock" + dat += "Unlock" if(0.3) dat += "
    Constructing Prototype. Please Wait...
    " @@ -673,30 +673,30 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(1.0) //Main Menu dat += "
    " dat += "

    Main Menu:


    " - dat += "Current Research Levels
    " + dat += "Current Research Levels
    " if(t_disk) - dat += "Disk Operations
    " + dat += "Disk Operations
    " else if(d_disk) - dat += "Disk Operations
    " + dat += "Disk Operations
    " else dat += "Disk Operations
    " if(linked_destroy) - dat += "Destructive Analyzer Menu
    " + dat += "Destructive Analyzer Menu
    " else dat += "Destructive Analyzer Menu
    " if(linked_lathe) - dat += "Protolathe Construction Menu
    " + dat += "Protolathe Construction Menu
    " else dat += "Protolathe Construction Menu
    " if(linked_imprinter) - dat += "Circuit Construction Menu
    " + dat += "Circuit Construction Menu
    " else dat += "Circuit Construction Menu
    " - dat += "Settings" + dat += "Settings" dat += "
    " if(1.1) //Research viewer - dat += "Main Menu" + dat += "Main Menu" dat += "

    Current Research Levels:


    " for(var/v in files.known_tech) var/datum/tech/T = files.known_tech[v] @@ -708,8 +708,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "
    " if(1.2) //Technology Disk Menu - dat += "Main Menu
    " - dat += "Disk Operations: Clear DiskUpload AllEject Disk" + dat += "Main Menu
    " + dat += "Disk Operations: Clear DiskUpload AllEject Disk" for(var/i in 1 to t_disk.max_tech_stored) dat += "
    " if(t_disk.tech_stored[i]) @@ -717,25 +717,25 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Name: [tech.name]
    " dat += "Level: [tech.level]
    " dat += "Description: [tech.desc]
    " - dat += "Operations: Upload to DatabaseClear Slot" + dat += "Operations: Upload to DatabaseClear Slot" else - dat += "Empty Slot
    Operations: Load Tech to Slot" + dat += "Empty Slot
    Operations: Load Tech to Slot" dat += "
    " if(1.3) //Technology Disk submenu - dat += "Main Menu" - dat += "Return to Disk Operations
    " + dat += "Main Menu" + dat += "Return to Disk Operations
    " dat += "

    Load Technology to Disk:


    " for(var/v in files.known_tech) var/datum/tech/T = files.known_tech[v] if(T.level <= 0) continue dat += "[T.name]" - dat += "Copy to Disk
    " + dat += "Copy to Disk
    " dat += "
    " if(1.4) //Design Disk menu. - dat += "Main Menu
    " - dat += "Disk Operations: Clear DiskUpload AllEject Disk" + dat += "Main Menu
    " + dat += "Disk Operations: Clear DiskUpload AllEject Disk" for(var/i in 1 to d_disk.max_blueprints) dat += "
    " if(d_disk.blueprints[i]) @@ -761,66 +761,66 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/all_mats = D.materials + D.reagents_list for(var/M in all_mats) dat += "* [CallMaterialName(M)] x [all_mats[M]]
    " - dat += "Operations: Upload to Database Clear Slot" + dat += "Operations: Upload to Database Clear Slot" else - dat += "Empty Slot
    Operations: Load Design to Slot" + dat += "Empty Slot
    Operations: Load Design to Slot" dat += "
    " if(1.5) //Design disk submenu - dat += "Main Menu" - dat += "Return to Disk Operations
    " + dat += "Main Menu" + dat += "Return to Disk Operations
    " dat += "

    Load Design to Disk:


    " for(var/v in files.known_designs) var/datum/design/D = files.known_designs[v] dat += "[D.name] " - dat += "Copy to Disk
    " + dat += "Copy to Disk
    " dat += "
    " if(1.6) //R&D console settings - dat += "Main Menu
    " + dat += "Main Menu
    " dat += "

    R&D Console Setting:


    " if(sync) - dat += "Sync Database with Network
    " + dat += "Sync Database with Network
    " dat += "Connect to Research Network
    " - dat += "Disconnect from Research Network
    " + dat += "Disconnect from Research Network
    " else dat += "Sync Database with Network
    " - dat += "Connect to Research Network
    " + dat += "Connect to Research Network
    " dat += "Disconnect from Research Network
    " - dat += "Device Linkage Menu
    " - dat += "Lock Console
    " - dat += "Reset R&D Database
    " + dat += "Device Linkage Menu
    " + dat += "Lock Console
    " + dat += "Reset R&D Database
    " if(1.7) //R&D device linkage - dat += "Main Menu" - dat += "Settings Menu
    " + dat += "Main Menu" + dat += "Settings Menu
    " dat += "

    R&D Console Device Linkage Menu:


    " - dat += "Re-sync with Nearby Devices

    " + dat += "Re-sync with Nearby Devices

    " dat += "

    Linked Devices:


    " if(linked_destroy) - dat += "* Destructive Analyzer Disconnect
    " + dat += "* Destructive Analyzer Disconnect
    " else dat += "* No Destructive Analyzer Linked
    " if(linked_lathe) - dat += "* Protolathe Disconnect
    " + dat += "* Protolathe Disconnect
    " else dat += "* No Protolathe Linked
    " if(linked_imprinter) - dat += "* Circuit Imprinter Disconnect
    " + dat += "* Circuit Imprinter Disconnect
    " else dat += "* No Circuit Imprinter Linked
    " dat += "
    " ////////////////////DESTRUCTIVE ANALYZER SCREENS//////////////////////////// if(2.0) - dat += "Main Menu" + dat += "Main Menu" dat += "
    NO DESTRUCTIVE ANALYZER LINKED TO CONSOLE
    " if(2.1) - dat += "Main Menu" + dat += "Main Menu" dat += "
    No Item Loaded. Standing-by...
    " if(2.2) - dat += "Main Menu
    " + dat += "Main Menu
    " dat += "

    Deconstruction Menu


    " dat += "Name: [linked_destroy.loaded_item.name]
    " dat += "Origin Tech:
    " @@ -833,27 +833,27 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "
    " dat += "
    Options: " - dat += "Deconstruct Item" - dat += "Eject Item" + dat += "Deconstruct Item" + dat += "Eject Item" if(2.3) - dat += "Main Menu" + dat += "Main Menu" dat += "
    Item is neither reliable enough or broken enough to learn from.
    " /////////////////////PROTOLATHE SCREENS///////////////////////// if(3.0) - dat += "Main Menu
    " + dat += "Main Menu
    " dat += "
    NO PROTOLATHE LINKED TO CONSOLE
    " if(3.1) - dat += "Main Menu " - dat += "Material Storage" - dat += "Chemical Storage
    " + dat += "Main Menu " + dat += "Material Storage" + dat += "Chemical Storage
    " dat += "

    Protolathe Menu:


    " dat += "Material Amount: [linked_materials.total_amount] / [linked_materials.max_amount]
    " dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
    " - dat += "\ - \ + dat += "\ + \ \ \ \ @@ -864,8 +864,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, //Grouping designs by categories, to improve readability if(3.15) - dat += "Main Menu" - dat += "Protolathe Menu" + dat += "Main Menu" + dat += "Protolathe Menu" dat += "

    Browsing [selected_category]:


    " dat += "Material Amount: [linked_materials.total_amount] / [linked_materials.max_amount]
    " dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
    " @@ -890,11 +890,11 @@ won't update every console in existence) but it's more of a hassle to do. Also, c = min(c,t) if (c >= 1) - dat += "[D.name]" + dat += "[D.name]" if(c >= 5) - dat += "x5" + dat += "x5" if(c >= 10) - dat += "x10" + dat += "x10" dat += "[temp_material]" else dat += "[D.name][temp_material]" @@ -902,8 +902,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "
    " if(3.17) //Display search result - dat += "Main Menu" - dat += "Protolathe Menu" + dat += "Main Menu" + dat += "Protolathe Menu" dat += "

    Search results:


    " dat += "Material Amount: [linked_materials.total_amount] / [linked_materials.max_amount]
    " dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
    " @@ -924,11 +924,11 @@ won't update every console in existence) but it's more of a hassle to do. Also, c = min(c,t) if (c >= 1) - dat += "[D.name]" + dat += "[D.name]" if(c >= 5) - dat += "x5" + dat += "x5" if(c >= 10) - dat += "x10" + dat += "x10" dat += "[temp_material]" else dat += "[D.name][temp_material]" @@ -936,8 +936,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "
    " if(3.2) //Protolathe Material Storage Sub-menu - dat += "Main Menu" - dat += "Protolathe Menu
    " + dat += "Main Menu" + dat += "Protolathe Menu
    " dat += "

    Material Storage:



    " if(!linked_lathe) dat += "ERROR: Protolathe connection failed." @@ -946,38 +946,38 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/datum/material/M = linked_materials.materials[mat_id] dat += "* [M.amount] of [M.name]: " if(M.amount >= MINERAL_MATERIAL_AMOUNT) - dat += "Eject " + dat += "Eject " if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) - dat += "5x " + dat += "5x " if(M.amount >= MINERAL_MATERIAL_AMOUNT) - dat += "All" + dat += "All" dat += "
    " dat += "
    " if(3.3) - dat += "Main Menu" - dat += "Protolathe Menu" - dat += "Disposal All Chemicals in Storage
    " + dat += "Main Menu" + dat += "Protolathe Menu" + dat += "Disposal All Chemicals in Storage
    " dat += "

    Chemical Storage:



    " for(var/datum/reagent/R in linked_lathe.reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
    " + dat += "Purge
    " ///////////////////CIRCUIT IMPRINTER SCREENS//////////////////// if(4.0) - dat += "Main Menu
    " + dat += "Main Menu
    " dat += "
    NO CIRCUIT IMPRINTER LINKED TO CONSOLE
    " if(4.1) - dat += "Main Menu" - dat += "Material Storage" - dat += "Chemical Storage
    " + dat += "Main Menu" + dat += "Material Storage" + dat += "Chemical Storage
    " dat += "

    Circuit Imprinter Menu:


    " dat += "Material Amount: [imprinter_materials.total_amount]
    " dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
    " - dat += "\ - \ + dat += "\ + \ \ \ \ @@ -987,8 +987,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += list_categories(linked_imprinter.categories, 4.15) if(4.15) - dat += "Main Menu" - dat += "Circuit Imprinter Menu" + dat += "Main Menu" + dat += "Circuit Imprinter Menu" dat += "

    Browsing [selected_category]:


    " dat += "Material Amount: [imprinter_materials.total_amount]
    " dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
    " @@ -1011,14 +1011,14 @@ won't update every console in existence) but it's more of a hassle to do. Also, else temp_materials += " [all_materials[M]/coeff] [CallMaterialName(M)]" if (check_materials) - dat += "[D.name][temp_materials]
    " + dat += "[D.name][temp_materials]
    " else dat += "[D.name][temp_materials]
    " dat += "
    " if(4.17) - dat += "Main Menu" - dat += "Circuit Imprinter Menu" + dat += "Main Menu" + dat += "Circuit Imprinter Menu" dat += "

    Search results:


    " dat += "Material Amount: [imprinter_materials.total_amount]
    " dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
    " @@ -1036,23 +1036,23 @@ won't update every console in existence) but it's more of a hassle to do. Also, else temp_materials += " [all_materials[M]/coeff] [CallMaterialName(M)]" if (check_materials) - dat += "[D.name][temp_materials]
    " + dat += "[D.name][temp_materials]
    " else dat += "[D.name][temp_materials]
    " dat += "
    " if(4.2) //Circuit Imprinter Material Storage Sub-menu - dat += "Main Menu" - dat += "Circuit Imprinter Menu" - dat += "Disposal All Chemicals in Storage
    " + dat += "Main Menu" + dat += "Circuit Imprinter Menu" + dat += "Disposal All Chemicals in Storage
    " dat += "

    Chemical Storage:



    " for(var/datum/reagent/R in linked_imprinter.reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
    " + dat += "Purge
    " if(4.3) - dat += "Main Menu" - dat += "Circuit Imprinter Menu
    " + dat += "Main Menu" + dat += "Circuit Imprinter Menu
    " dat += "

    Material Storage:



    " if(!linked_imprinter) dat += "ERROR: Protolathe connection failed." @@ -1061,11 +1061,11 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/datum/material/M = imprinter_materials.materials[mat_id] dat += "* [M.amount] of [M.name]: " if(M.amount >= MINERAL_MATERIAL_AMOUNT) - dat += "Eject " + dat += "Eject " if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) - dat += "5x " + dat += "5x " if(M.amount >= MINERAL_MATERIAL_AMOUNT) - dat += "All" + dat += "All" dat += "
    " dat += "
    " @@ -1087,7 +1087,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "
    " line_length = 1 - dat += "" + dat += "" line_length++ dat += "
    [GLOB.TAGGERLOCATIONS[i]][GLOB.TAGGERLOCATIONS[i]]
    [C][C]
    " diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 98f5fef616..61f5a12a81 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -253,10 +253,10 @@ if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin) continue dat += "[S.name] || " - dat += "Access Rights | " - dat += "Data Management" + dat += "Access Rights | " + dat += "Data Management" if(badmin) - dat += " | Server-to-Server Transfer" + dat += " | Server-to-Server Transfer" dat += "
    " if(1) //Access rights menu @@ -264,7 +264,7 @@ dat += "Consoles with Upload Access
    " for(var/obj/machinery/computer/rdconsole/C in consoles) var/turf/console_turf = get_turf(C) - dat += "* [console_turf.loc]" //FYI, these are all numeric ids, eventually. + dat += "* [console_turf.loc]" //FYI, these are all numeric ids, eventually. if(C.id in temp_server.id_with_upload) dat += " (Remove)
    " else @@ -272,12 +272,12 @@ dat += "Consoles with Download Access
    " for(var/obj/machinery/computer/rdconsole/C in consoles) var/turf/console_turf = get_turf(C) - dat += "* [console_turf.loc]" + dat += "* [console_turf.loc]" if(C.id in temp_server.id_with_download) dat += " (Remove)
    " else dat += " (Add)
    " - dat += "
    Main Menu" + dat += "
    Main Menu" if(2) //Data Management menu dat += "[temp_server.name] Data ManagementP

    " @@ -287,20 +287,20 @@ if(T.level <= 0) continue dat += "* [T.name] " - dat += "(Reset)
    " //FYI, these are all strings. + dat += "(Reset)
    " //FYI, these are all strings. dat += "Known Designs
    " for(var/v in temp_server.files.known_designs) var/datum/design/D = temp_server.files.known_designs[v] dat += "* [D.name] " - dat += "(Delete)
    " - dat += "
    Main Menu" + dat += "(Delete)
    " + dat += "
    Main Menu" if(3) //Server Data Transfer dat += "[temp_server.name] Server to Server Transfer

    " dat += "Send Data to what server?
    " for(var/obj/machinery/r_n_d/server/S in servers) - dat += "[S.name] (Transfer)
    " - dat += "
    Main Menu" + dat += "[S.name] (Transfer)
    " + dat += "
    Main Menu" user << browse("R&D Server Control
    [dat]", "window=server_control;size=575x400") onclose(user, "server_control") return diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index cca88a0dda..83957a7285 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -196,6 +196,7 @@ to_chat(SM, "All at once it makes sense: you know what you are and who you are! Self awareness is yours!") to_chat(SM, "You are grateful to be self aware and owe [user.real_name] a great debt. Serve [user.real_name], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") to_chat(user, "[SM] accepts [src] and suddenly becomes attentive and aware. It worked!") + SM.copy_known_languages_from(user, TRUE) qdel(src) else to_chat(user, "[SM] looks interested for a moment, but then looks back down. Maybe you should try again later.") diff --git a/code/modules/shuttle/assault_pod.dm b/code/modules/shuttle/assault_pod.dm index 5b21d22d19..4b55a5b155 100644 --- a/code/modules/shuttle/assault_pod.dm +++ b/code/modules/shuttle/assault_pod.dm @@ -43,7 +43,7 @@ if(!T) return var/obj/docking_port/stationary/landing_zone = new /obj/docking_port/stationary(T) - landing_zone.id = "assault_pod(\ref[src])" + landing_zone.id = "assault_pod([REF(src)])" landing_zone.name = "Landing Zone" landing_zone.dwidth = dwidth landing_zone.dheight = dheight diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index 47ceaef99e..94cf55e0a0 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -26,13 +26,13 @@ if(!M.check_dock(S)) continue destination_found = 1 - dat += "Send to [S.name]
    " + dat += "Send to [S.name]
    " if(!destination_found) dat += "Shuttle Locked
    " if(admin_controlled) dat += "Authorized personnel only
    " - dat += "Request Authorization
    " - dat += "Close" + dat += "Request Authorization
    " + dat += "Close" var/datum/browser/popup = new(user, "computer", M ? M.name : "shuttle", 300, 200) popup.set_content("
    [dat]
    ") diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index c3549abc4d..d573f9ce13 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -144,8 +144,8 @@ var/time = TIME_LEFT message_admins("[key_name_admin(user.client)] \ - (?) \ - (FLW) \ + (?) \ + (FLW) \ has emagged the emergency shuttle [time] seconds before launch.", 0, 1) log_game("[key_name(user)] has emagged the emergency shuttle in \ [COORD(src)] [time] seconds before launch.") diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 6af111506d..7f99829843 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -64,7 +64,7 @@ var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj user.client.images += the_eye.placement_images user.client.images += the_eye.placed_images - user.client.view = view_range + user.client.change_view(view_range) /obj/machinery/computer/camera_advanced/shuttle_docker/remove_eye_control(mob/living/user) ..() @@ -72,7 +72,7 @@ var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj user.client.images -= the_eye.placement_images user.client.images -= the_eye.placed_images - user.client.view = world.view + user.client.change_view(world.view) /obj/machinery/computer/camera_advanced/shuttle_docker/proc/placeLandingSpot() if(!checkLandingSpot()) diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm index f7e555ab44..d991a3df9c 100644 --- a/code/modules/spells/spell_types/lichdom.dm +++ b/code/modules/spells/spell_types/lichdom.dm @@ -133,7 +133,7 @@ mind.transfer_to(lich) mind.grab_ghost(force=TRUE) lich.hardset_dna(null,null,lich.real_name,null, new /datum/species/skeleton) - to_chat(lich, "Your bones clatter and shutter as you are pulled back into this world!") + to_chat(lich, "Your bones clatter and shudder as you are pulled back into this world!") var/turf/body_turf = get_turf(old_body) lich.Knockdown(200 + 200*resurrections) resurrections++ diff --git a/code/modules/spells/spell_types/shapeshift.dm b/code/modules/spells/spell_types/shapeshift.dm index 853aab8b9b..4ee1b678f0 100644 --- a/code/modules/spells/spell_types/shapeshift.dm +++ b/code/modules/spells/spell_types/shapeshift.dm @@ -11,9 +11,10 @@ invocation_type = "shout" action_icon_state = "shapeshift" + var/revert_on_death = TRUE + var/die_with_shapeshifted_form = TRUE + var/shapeshift_type - var/list/current_shapes = list() - var/list/current_casters = list() var/list/possible_shapes = list(/mob/living/simple_animal/mouse,\ /mob/living/simple_animal/pet/dog/corgi,\ /mob/living/simple_animal/hostile/carp/ranged/chaos,\ @@ -40,46 +41,33 @@ if(!shapeshift_type) //If you aren't gonna decide I am! shapeshift_type = pick(animal_list) shapeshift_type = animal_list[shapeshift_type] - if(M in current_shapes) + + var/obj/shapeshift_holder/S = locate() in M + if(S) Restore(M) else Shapeshift(M) + /obj/effect/proc_holder/spell/targeted/shapeshift/proc/Shapeshift(mob/living/caster) - for(var/mob/living/M in caster) - if(M.status_flags & GODMODE) - to_chat(caster, "You're already shapeshifted!") - return + var/obj/shapeshift_holder/H = locate() in caster + if(H) + to_chat(caster, "You're already shapeshifted!") + return var/mob/living/shape = new shapeshift_type(caster.loc) - caster.loc = shape - caster.status_flags |= GODMODE - - current_shapes |= shape - current_casters |= caster + H = new(shape,src,caster) clothes_req = 0 human_req = 0 - caster.mind.transfer_to(shape) - /obj/effect/proc_holder/spell/targeted/shapeshift/proc/Restore(mob/living/shape) - var/mob/living/caster - for(var/mob/living/M in shape) - if(M in current_casters) - caster = M - break - if(!caster) - return - caster.loc = shape.loc - caster.status_flags &= ~GODMODE + var/obj/shapeshift_holder/H = locate() in shape + if(!H) + return + H.restore() clothes_req = initial(clothes_req) human_req = initial(human_req) - current_casters.Remove(caster) - current_shapes.Remove(shape) - - shape.mind.transfer_to(caster) - qdel(shape) //Gib it maybe ? /obj/effect/proc_holder/spell/targeted/shapeshift/dragon name = "Dragon Form" @@ -87,6 +75,85 @@ invocation = "RAAAAAAAAWR!" shapeshift_type = /mob/living/simple_animal/hostile/megafauna/dragon/lesser - list/current_shapes = list(/mob/living/simple_animal/hostile/megafauna/dragon/lesser) - list/current_casters = list() - list/possible_shapes = list(/mob/living/simple_animal/hostile/megafauna/dragon/lesser) + + +/obj/shapeshift_holder + name = "Shapeshift holder" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF + var/mob/living/stored + var/mob/living/shape + var/restoring = FALSE + var/datum/soullink/shapeshift/slink + var/obj/effect/proc_holder/spell/targeted/shapeshift/source + +/obj/shapeshift_holder/Initialize(mapload,obj/effect/proc_holder/spell/targeted/shapeshift/source,mob/living/caster) + . = ..() + src.source = source + shape = loc + if(!istype(shape)) + CRASH("shapeshift holder created outside mob/living") + stored = caster + if(stored.mind) + stored.mind.transfer_to(shape) + stored.forceMove(src) + stored.notransform = TRUE + slink = soullink(/datum/soullink/shapeshift, stored , shape) + slink.source = src + +/obj/shapeshift_holder/Destroy() + if(!restoring) + restore() + stored = null + shape = null + . = ..() + +/obj/shapeshift_holder/Moved() + . = ..() + if(!restoring || QDELETED(src)) + restore() + +/obj/shapeshift_holder/handle_atom_del(atom/A) + if(A == stored && !restoring) + restore() + +/obj/shapeshift_holder/Exited(atom/movable/AM) + if(AM == stored && !restoring) + restore() + +/obj/shapeshift_holder/proc/casterDeath() + //Something kills the stored caster through direct damage. + if(source.revert_on_death) + restore(death=TRUE) + else + shape.death() + +/obj/shapeshift_holder/proc/shapeDeath() + //Shape dies. + if(source.die_with_shapeshifted_form) + if(source.revert_on_death) + restore(death=TRUE) + else + restore() + +/obj/shapeshift_holder/proc/restore(death=FALSE) + restoring = TRUE + qdel(slink) + stored.forceMove(get_turf(src)) + stored.notransform = FALSE + if(shape.mind) + shape.mind.transfer_to(stored) + if(death) + stored.death() + qdel(shape) + qdel(src) + +/datum/soullink/shapeshift + var/obj/shapeshift_holder/source + +/datum/soullink/shapeshift/ownerDies(gibbed, mob/living/owner) + if(source) + source.casterDeath(gibbed) + +/datum/soullink/shapeshift/sharerDies(gibbed, mob/living/sharer) + if(source) + source.shapeDeath(gibbed) diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index d13ab3f329..1fbdfb6fb8 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -126,7 +126,6 @@ desc = "Long range bluespace artillery." icon = 'icons/obj/lavaland/cannon.dmi' icon_state = "orbital_cannon1" - unsecuring_tool = null var/static/mutable_appearance/top_layer var/ex_power = 3 var/power_used_per_shot = 2000000 //enough to kil standard apc - todo : make this use wires instead and scale explosion power with it diff --git a/code/modules/stock_market/computer.dm b/code/modules/stock_market/computer.dm index 3422145ec3..a6429834be 100644 --- a/code/modules/stock_market/computer.dm +++ b/code/modules/stock_market/computer.dm @@ -68,8 +68,8 @@ a.updated { var/list/LR = GLOB.stockExchange.last_read[S] if (!(logged_in in LR)) LR[logged_in] = 0 - dat += "View mode: [vmode ? "Compact" : "Full"] " - dat += "Stock Transaction Log: Check
    " + dat += "View mode: [vmode ? "Compact" : "Full"] " + dat += "Stock Transaction Log: Check
    " dat += "This is a work in progress. Certain features may not be available." @@ -83,12 +83,12 @@ a.updated { dat += "
    [S.name] ([S.short_name])[S.bankrupt ? " BANKRUPT" : null]
    " if (S.last_unification) dat += "Unified shares [DisplayTimeText(world.time - S.last_unification)] ago.
    " - dat += "Current value per share: [S.current_value] | View history

    " + dat += "Current value per share: [S.current_value] | View history

    " dat += "You currently own [mystocks] shares in this company. There are [S.available_shares] purchasable shares on the market currently.
    " if (S.bankrupt) dat += "You cannot buy or sell shares in a bankrupt company!

    " else - dat += "Buy shares | Sell shares

    " + dat += "Buy shares | Sell shares

    " dat += "Prominent products:
    " for (var/prod in S.products) dat += "[prod]
    " @@ -105,7 +105,7 @@ a.updated { if (E.last_change > lrt && !E.hidden) news = 1 break - dat += "View news archives[news ? " (updated)" : null]
    " + dat += "View news archives[news ? " (updated)" : null]" else if (vmode == 1) dat += "Actions: + Buy, - Sell, (A)rchives, (H)istory

    " dat += "" @@ -159,8 +159,8 @@ a.updated { if (S.bankrupt) dat += "+- " else - dat += "+- " - dat += "(A)(H)" + dat += "+- " + dat += "(A)(H)" dat += "" @@ -275,7 +275,7 @@ a.updated { sell_some_shares(S, usr) if (href_list["show_logs"]) - var/dat = "Stock Transaction Logs

    Stock Transaction Logs


    " + var/dat = "Stock Transaction Logs

    Stock Transaction Logs


    " for(var/D in GLOB.stockExchange.logs) var/datum/stock_log/L = D if(istype(L, /datum/stock_log/buy)) @@ -297,7 +297,7 @@ a.updated { if (logged_in && logged_in != "") var/list/LR = GLOB.stockExchange.last_read[S] LR[logged_in] = world.time - var/dat = "News feed for [S.name]

    News feed for [S.name]

    " + var/dat = "News feed for [S.name]

    News feed for [S.name]

    " dat += "

    Events

    " var/p = 0 for (var/datum/stockEvent/E in S.events) diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm index 8bad429102..0d13e81188 100644 --- a/code/modules/surgery/cavity_implant.dm +++ b/code/modules/surgery/cavity_implant.dm @@ -17,6 +17,11 @@ var/obj/item/bodypart/chest/CH = target.get_bodypart("chest") IC = CH.cavity_item if(tool) + if(istype(tool, /obj/item/surgical_drapes) || istype(tool, /obj/item/bedsheet)) + var/obj/item/inactive = user.get_inactive_held_item() + if(istype(inactive, /obj/item/cautery) || istype(inactive, /obj/item/screwdriver) || iscyborg(user)) + attempt_cancel_surgery(surgery, tool, target, user) + return -1 user.visible_message("[user] begins to insert [tool] into [target]'s [target_zone].", "You begin to insert [tool] into [target]'s [target_zone]...") else user.visible_message("[user] checks for items in [target]'s [target_zone].", "You check for items in [target]'s [target_zone]...") diff --git a/code/modules/surgery/eye_surgery.dm b/code/modules/surgery/eye_surgery.dm index 9099489420..6c340b61f5 100644 --- a/code/modules/surgery/eye_surgery.dm +++ b/code/modules/surgery/eye_surgery.dm @@ -14,7 +14,7 @@ /datum/surgery/eye_surgery/can_start(mob/user, mob/living/carbon/target) var/obj/item/organ/eyes/E = target.getorganslot(ORGAN_SLOT_EYES) if(!E) - to_chat(user, "It's hard to do surgery on someones eyes when they don't have any.") + to_chat(user, "It's hard to do surgery on someone's eyes when they don't have any.") return FALSE /datum/surgery_step/fix_eyes/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index a4e9b16989..d37b17ae35 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -1,173 +1,171 @@ -/proc/attempt_initiate_surgery(obj/item/I, mob/living/M, mob/user) - if(!istype(M)) - return - - var/mob/living/carbon/C - var/obj/item/bodypart/affecting - var/selected_zone = user.zone_selected - - if(iscarbon(M)) - C = M - affecting = C.get_bodypart(check_zone(selected_zone)) - - if(!M.lying && !isslime(M)) //if they're prone or a slime - return - - var/datum/surgery/current_surgery - - for(var/datum/surgery/S in M.surgeries) - if(S.location == selected_zone) - current_surgery = S - - if(!current_surgery) - var/list/all_surgeries = GLOB.surgeries_list.Copy() - var/list/available_surgeries = list() - - for(var/datum/surgery/S in all_surgeries) - if(!S.possible_locs.Find(selected_zone)) - continue - if(affecting) - if(!S.requires_bodypart) - continue - if(S.requires_bodypart_type && affecting.status == BODYPART_ROBOTIC) - continue - if(S.requires_real_bodypart && affecting.is_pseudopart) - continue - else if(C && S.requires_bodypart) //mob with no limb in surgery zone when we need a limb - continue - if(!S.can_start(user, M)) - continue - for(var/path in S.species) - if(istype(M, path)) - available_surgeries[S.name] = S - break - - var/P = input("Begin which procedure?", "Surgery", null, null) as null|anything in available_surgeries - if(P && user && user.Adjacent(M) && (I in user)) - var/datum/surgery/S = available_surgeries[P] - - for(var/datum/surgery/other in M.surgeries) - if(other.location == S.location) - return //during the input() another surgery was started at the same location. - - //we check that the surgery is still doable after the input() wait. - if(C) - affecting = C.get_bodypart(check_zone(selected_zone)) - if(affecting) - if(!S.requires_bodypart) - return - if(S.requires_bodypart_type && affecting.status == BODYPART_ROBOTIC) - return - else if(C && S.requires_bodypart) - return - if(!S.can_start(user, M)) - return - - if(S.ignore_clothes || get_location_accessible(M, selected_zone)) - var/datum/surgery/procedure = new S.type(M, selected_zone, affecting) - user.visible_message("[user] drapes [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].", \ - "You drape [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].") - - add_logs(user, M, "operated", addition="Operation type: [procedure.name], location: [selected_zone]") - else - to_chat(user, "You need to expose [M]'s [parse_zone(selected_zone)] first!") - - else if(!current_surgery.step_in_progress) - if(current_surgery.status == 1) - M.surgeries -= current_surgery - user.visible_message("[user] removes the drapes from [M]'s [parse_zone(selected_zone)].", \ - "You remove the drapes from [M]'s [parse_zone(selected_zone)].") - qdel(current_surgery) - else if(current_surgery.can_cancel) - if(current_surgery.requires_bodypart_type == BODYPART_ORGANIC) - if(istype(user.get_inactive_held_item(), /obj/item/cautery)) - M.surgeries -= current_surgery - user.visible_message("[user] mends the incision and removes the drapes from [M]'s [parse_zone(selected_zone)].", \ - "You mend the incision and remove the drapes from [M]'s [parse_zone(selected_zone)].") - qdel(current_surgery) - else - to_chat(user, "You need to hold a cautery in inactive hand to stop [M]'s surgery!") - else if(current_surgery.requires_bodypart_type == BODYPART_ROBOTIC) - if(istype(user.get_inactive_held_item(), /obj/item/screwdriver)) - M.surgeries -= current_surgery - user.visible_message("[user] screw the shell and removes the drapes from [M]'s [parse_zone(selected_zone)].", \ - "You screw the shell and remove the drapes from [M]'s [parse_zone(selected_zone)].") - qdel(current_surgery) - else - to_chat(user, "You need to hold a screwdriver in inactive hand to stop [M]'s surgery!") - - return 1 - - - -/proc/get_location_modifier(mob/M) - var/turf/T = get_turf(M) - if(locate(/obj/structure/table/optable, T)) - return 1 - else if(locate(/obj/structure/table, T)) - return 0.8 - else if(locate(/obj/structure/bed, T)) - return 0.7 - else - return 0.5 - - -/proc/get_location_accessible(mob/M, location) - var/covered_locations = 0 //based on body_parts_covered - var/face_covered = 0 //based on flags_inv - var/eyesmouth_covered = 0 //based on flags_cover - if(iscarbon(M)) - var/mob/living/carbon/C = M - for(var/obj/item/clothing/I in list(C.back, C.wear_mask, C.head)) - covered_locations |= I.body_parts_covered - face_covered |= I.flags_inv - eyesmouth_covered |= I.flags_cover - if(ishuman(C)) - var/mob/living/carbon/human/H = C - for(var/obj/item/I in list(H.wear_suit, H.w_uniform, H.shoes, H.belt, H.gloves, H.glasses, H.ears)) - covered_locations |= I.body_parts_covered - face_covered |= I.flags_inv - eyesmouth_covered |= I.flags_cover - - switch(location) - if("head") - if(covered_locations & HEAD) - return 0 - if("eyes") - if(covered_locations & HEAD || face_covered & HIDEEYES || eyesmouth_covered & GLASSESCOVERSEYES) - return 0 - if("mouth") - if(covered_locations & HEAD || face_covered & HIDEFACE || eyesmouth_covered & MASKCOVERSMOUTH || eyesmouth_covered & HEADCOVERSMOUTH) - return 0 - if("chest") - if(covered_locations & CHEST) - return 0 - if("groin") - if(covered_locations & GROIN) - return 0 - if("l_arm") - if(covered_locations & ARM_LEFT) - return 0 - if("r_arm") - if(covered_locations & ARM_RIGHT) - return 0 - if("l_leg") - if(covered_locations & LEG_LEFT) - return 0 - if("r_leg") - if(covered_locations & LEG_RIGHT) - return 0 - if("l_hand") - if(covered_locations & HAND_LEFT) - return 0 - if("r_hand") - if(covered_locations & HAND_RIGHT) - return 0 - if("l_foot") - if(covered_locations & FOOT_LEFT) - return 0 - if("r_foot") - if(covered_locations & FOOT_RIGHT) - return 0 - - return 1 +/proc/attempt_initiate_surgery(obj/item/I, mob/living/M, mob/user) + if(!istype(M)) + return + + var/mob/living/carbon/C + var/obj/item/bodypart/affecting + var/selected_zone = user.zone_selected + + if(iscarbon(M)) + C = M + affecting = C.get_bodypart(check_zone(selected_zone)) + + if(!M.lying && !isslime(M)) //if they're prone or a slime + return + + var/datum/surgery/current_surgery + + for(var/datum/surgery/S in M.surgeries) + if(S.location == selected_zone) + current_surgery = S + + if(!current_surgery) + var/list/all_surgeries = GLOB.surgeries_list.Copy() + var/list/available_surgeries = list() + + for(var/datum/surgery/S in all_surgeries) + if(!S.possible_locs.Find(selected_zone)) + continue + if(affecting) + if(!S.requires_bodypart) + continue + if(S.requires_bodypart_type && affecting.status != S.requires_bodypart_type) + continue + if(S.requires_real_bodypart && affecting.is_pseudopart) + continue + else if(C && S.requires_bodypart) //mob with no limb in surgery zone when we need a limb + continue + if(!S.can_start(user, M)) + continue + for(var/path in S.species) + if(istype(M, path)) + available_surgeries[S.name] = S + break + + var/P = input("Begin which procedure?", "Surgery", null, null) as null|anything in available_surgeries + if(P && user && user.Adjacent(M) && (I in user)) + var/datum/surgery/S = available_surgeries[P] + + for(var/datum/surgery/other in M.surgeries) + if(other.location == S.location) + return //during the input() another surgery was started at the same location. + + //we check that the surgery is still doable after the input() wait. + if(C) + affecting = C.get_bodypart(check_zone(selected_zone)) + if(affecting) + if(!S.requires_bodypart) + return + if(S.requires_bodypart_type && affecting.status != S.requires_bodypart_type) + return + else if(C && S.requires_bodypart) + return + if(!S.can_start(user, M)) + return + + if(S.ignore_clothes || get_location_accessible(M, selected_zone)) + var/datum/surgery/procedure = new S.type(M, selected_zone, affecting) + user.visible_message("[user] drapes [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].", \ + "You drape [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].") + + add_logs(user, M, "operated", addition="Operation type: [procedure.name], location: [selected_zone]") + else + to_chat(user, "You need to expose [M]'s [parse_zone(selected_zone)] first!") + + else if(!current_surgery.step_in_progress) + attempt_cancel_surgery(current_surgery, I, M, user) + + return 1 + +/proc/attempt_cancel_surgery(datum/surgery/S, obj/item/I, mob/living/M, mob/user) + var/selected_zone = user.zone_selected + if(S.status == 1) + M.surgeries -= S + user.visible_message("[user] removes [I] from [M]'s [parse_zone(selected_zone)].", \ + "You remove [I] from [M]'s [parse_zone(selected_zone)].") + qdel(S) + else if(S.can_cancel) + var/close_tool_type = /obj/item/cautery + var/obj/item/close_tool = user.get_inactive_held_item() + var/is_robotic = S.requires_bodypart_type == BODYPART_ROBOTIC + if(is_robotic) + close_tool_type = /obj/item/screwdriver + if(istype(close_tool, close_tool_type) || iscyborg(user)) + M.surgeries -= S + user.visible_message("[user] closes [M]'s [parse_zone(selected_zone)] with [close_tool] and removes [I].", \ + "You close [M]'s [parse_zone(selected_zone)] with [close_tool] and remove [I].") + qdel(S) + else + to_chat(user, "You need to hold a [is_robotic ? "screwdriver" : "cautery"] in your inactive hand to stop [M]'s surgery!") + +/proc/get_location_modifier(mob/M) + var/turf/T = get_turf(M) + if(locate(/obj/structure/table/optable, T)) + return 1 + else if(locate(/obj/structure/table, T)) + return 0.8 + else if(locate(/obj/structure/bed, T)) + return 0.7 + else + return 0.5 + + +/proc/get_location_accessible(mob/M, location) + var/covered_locations = 0 //based on body_parts_covered + var/face_covered = 0 //based on flags_inv + var/eyesmouth_covered = 0 //based on flags_cover + if(iscarbon(M)) + var/mob/living/carbon/C = M + for(var/obj/item/clothing/I in list(C.back, C.wear_mask, C.head)) + covered_locations |= I.body_parts_covered + face_covered |= I.flags_inv + eyesmouth_covered |= I.flags_cover + if(ishuman(C)) + var/mob/living/carbon/human/H = C + for(var/obj/item/I in list(H.wear_suit, H.w_uniform, H.shoes, H.belt, H.gloves, H.glasses, H.ears)) + covered_locations |= I.body_parts_covered + face_covered |= I.flags_inv + eyesmouth_covered |= I.flags_cover + + switch(location) + if("head") + if(covered_locations & HEAD) + return 0 + if("eyes") + if(covered_locations & HEAD || face_covered & HIDEEYES || eyesmouth_covered & GLASSESCOVERSEYES) + return 0 + if("mouth") + if(covered_locations & HEAD || face_covered & HIDEFACE || eyesmouth_covered & MASKCOVERSMOUTH || eyesmouth_covered & HEADCOVERSMOUTH) + return 0 + if("chest") + if(covered_locations & CHEST) + return 0 + if("groin") + if(covered_locations & GROIN) + return 0 + if("l_arm") + if(covered_locations & ARM_LEFT) + return 0 + if("r_arm") + if(covered_locations & ARM_RIGHT) + return 0 + if("l_leg") + if(covered_locations & LEG_LEFT) + return 0 + if("r_leg") + if(covered_locations & LEG_RIGHT) + return 0 + if("l_hand") + if(covered_locations & HAND_LEFT) + return 0 + if("r_hand") + if(covered_locations & HAND_RIGHT) + return 0 + if("l_foot") + if(covered_locations & FOOT_LEFT) + return 0 + if("r_foot") + if(covered_locations & FOOT_RIGHT) + return 0 + + return 1 diff --git a/code/modules/tgui/subsystem.dm b/code/modules/tgui/subsystem.dm index c44c91c92b..f70eb87b0c 100644 --- a/code/modules/tgui/subsystem.dm +++ b/code/modules/tgui/subsystem.dm @@ -43,7 +43,7 @@ * return datum/tgui The found UI. **/ /datum/controller/subsystem/tgui/proc/get_open_ui(mob/user, datum/src_object, ui_key) - var/src_object_key = "\ref[src_object]" + var/src_object_key = "[REF(src_object)]" if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) return null // No UIs open. else if(isnull(open_uis[src_object_key][ui_key]) || !istype(open_uis[src_object_key][ui_key], /list)) @@ -65,7 +65,7 @@ * return int The number of UIs updated. **/ /datum/controller/subsystem/tgui/proc/update_uis(datum/src_object) - var/src_object_key = "\ref[src_object]" + var/src_object_key = "[REF(src_object)]" if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) return 0 // Couldn't find any UIs for this object. @@ -87,7 +87,7 @@ * return int The number of UIs closed. **/ /datum/controller/subsystem/tgui/proc/close_uis(datum/src_object) - var/src_object_key = "\ref[src_object]" + var/src_object_key = "[REF(src_object)]" if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) return 0 // Couldn't find any UIs for this object. @@ -168,7 +168,7 @@ * required ui datum/tgui The UI to be added. **/ /datum/controller/subsystem/tgui/proc/on_open(datum/tgui/ui) - var/src_object_key = "\ref[ui.src_object]" + var/src_object_key = "[REF(ui.src_object)]" if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) open_uis[src_object_key] = list(ui.ui_key = list()) // Make a list for the ui_key and src_object. else if(isnull(open_uis[src_object_key][ui.ui_key]) || !istype(open_uis[src_object_key][ui.ui_key], /list)) @@ -190,7 +190,7 @@ * return bool If the UI was removed or not. **/ /datum/controller/subsystem/tgui/proc/on_close(datum/tgui/ui) - var/src_object_key = "\ref[ui.src_object]" + var/src_object_key = "[REF(ui.src_object)]" if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) return 0 // It wasn't open. else if(isnull(open_uis[src_object_key][ui.ui_key]) || !istype(open_uis[src_object_key][ui.ui_key], /list)) diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index e427cfa0d1..b1275cf00f 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -1,377 +1,377 @@ - /** - * tgui - * - * /tg/station user interface library - **/ - - /** - * tgui datum (represents a UI). - **/ -/datum/tgui - var/mob/user // The mob who opened/is using the UI. - var/datum/src_object // The object which owns the UI. - var/title // The title of te UI. - var/ui_key // The ui_key of the UI. This allows multiple UIs for one src_object. - var/window_id // The window_id for browse() and onclose(). - var/width = 0 // The window width. - var/height = 0 // The window height - var/window_options = list( // Extra options to winset(). - "focus" = FALSE, - "titlebar" = TRUE, - "can_resize" = TRUE, - "can_minimize" = TRUE, - "can_maximize" = FALSE, - "can_close" = TRUE, - "auto_format" = FALSE - ) - var/style = "nanotrasen" // The style to be used for this UI. - var/interface // The interface (template) to be used for this UI. - var/autoupdate = TRUE // Update the UI every MC tick. - var/initialized = FALSE // If the UI has been initialized yet. - var/list/initial_data // The data (and datastructure) used to initialize the UI. - var/status = UI_INTERACTIVE // The status/visibility of the UI. - var/datum/ui_state/state = null // Topic state used to determine status/interactability. - var/datum/tgui/master_ui // The parent UI. - var/list/datum/tgui/children = list() // Children of this UI. - var/titlebar = TRUE - var/custom_browser_id = FALSE - - /** - * public - * - * Create a new UI. - * - * required user mob The mob who opened/is using the UI. - * required src_object datum The object or datum which owns the UI. - * required ui_key string The ui_key of the UI. - * required interface string The interface used to render the UI. - * optional title string The title of the UI. - * optional width int The window width. - * optional height int The window height. - * optional master_ui datum/tgui The parent UI. - * optional state datum/ui_state The state used to determine status. - * - * return datum/tgui The requested UI. - **/ -/datum/tgui/New(mob/user, datum/src_object, ui_key, interface, title, width = 0, height = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state, browser_id = null) - src.user = user - src.src_object = src_object - src.ui_key = ui_key - src.window_id = browser_id ? browser_id : "\ref[src_object]-[ui_key]" - src.custom_browser_id = browser_id ? TRUE : FALSE - - set_interface(interface) - - if(title) - src.title = sanitize(title) - if(width) - src.width = width - if(height) - src.height = height - - src.master_ui = master_ui - if(master_ui) - master_ui.children += src - src.state = state - - var/datum/asset/assets = get_asset_datum(/datum/asset/simple/tgui) - assets.send(user) - - /** - * public - * - * Open this UI (and initialize it with data). - **/ -/datum/tgui/proc/open() - if(!user.client) - return // Bail if there is no client. - - update_status(push = 0) // Update the window status. - if(status < UI_UPDATE) - return // Bail if we're not supposed to open. - - if(!initial_data) - set_initial_data(src_object.ui_data(user)) // Get the UI data. - - var/window_size = "" - if(width && height) // If we have a width and height, use them. - window_size = "size=[width]x[height];" - - var/debugable = check_rights_for(user.client, R_DEBUG) - user << browse(get_html(debugable), "window=[window_id];[window_size][list2params(window_options)]") // Open the window. - if (!custom_browser_id) - winset(user, window_id, "on-close=\"uiclose \ref[src]\"") // Instruct the client to signal UI when the window is closed. - SStgui.on_open(src) - - /** - * public - * - * Reinitialize the UI. - * (Possibly with a new interface and/or data). - * - * optional template string The name of the new interface. - * optional data list The new initial data. - **/ -/datum/tgui/proc/reinitialize(interface, list/data) - if(interface) - set_interface(interface) // Set a new interface. - if(data) - set_initial_data(data) // Replace the initial_data. - open() - - /** - * public - * - * Close the UI, and all its children. - **/ -/datum/tgui/proc/close() - user << browse(null, "window=[window_id]") // Close the window. - SStgui.on_close(src) - for(var/datum/tgui/child in children) // Loop through and close all children. - child.close() - children.Cut() - state = null - master_ui = null - qdel(src) - - /** - * public - * - * Sets the browse() window options for this UI. - * - * required window_options list The window options to set. - **/ -/datum/tgui/proc/set_window_options(list/window_options) - src.window_options = window_options - - /** - * public - * - * Set the style for this UI. - * - * required style string The new UI style. - **/ -/datum/tgui/proc/set_style(style) - src.style = lowertext(style) - - /** - * public - * - * Set the interface (template) for this UI. - * - * required interface string The new UI interface. - **/ -/datum/tgui/proc/set_interface(interface) - src.interface = lowertext(interface) - - /** - * public - * - * Enable/disable auto-updating of the UI. - * - * required state bool Enable/disable auto-updating. - **/ -/datum/tgui/proc/set_autoupdate(state = 1) - autoupdate = state - - /** - * private - * - * Set the data to initialize the UI with. - * The datastructure cannot be changed by subsequent updates. - * - * optional data list The data/datastructure to initialize the UI with. - **/ -/datum/tgui/proc/set_initial_data(list/data) - initial_data = data - - /** - * private - * - * Generate HTML for this UI. - * - * optional bool inline If the JSON should be inlined into the HTML (for debugging). - * - * return string UI HTML output. - **/ -/datum/tgui/proc/get_html(var/inline) - var/html - // Poplate HTML with JSON if we're supposed to inline. - if(inline) - html = replacetextEx(SStgui.basehtml, "{}", get_json(initial_data)) - else - html = SStgui.basehtml - html = replacetextEx(html, "\[ref]", "\ref[src]") - html = replacetextEx(html, "\[style]", style) - return html - - /** - * private - * - * Get the config data/datastructure to initialize the UI with. - * - * return list The config data. - **/ -/datum/tgui/proc/get_config_data() - var/list/config_data = list( - "title" = title, - "status" = status, - "screen" = src_object.ui_screen, - "style" = style, - "interface" = interface, - "fancy" = user.client.prefs.tgui_fancy, - "locked" = user.client.prefs.tgui_lock && !custom_browser_id, - "window" = window_id, - "ref" = "\ref[src]", - "user" = list( - "name" = user.name, - "ref" = "\ref[user]" - ), - "srcObject" = list( - "name" = "[src_object]", - "ref" = "\ref[src_object]" - ), - "titlebar" = titlebar - ) - return config_data - - /** - * private - * - * Package the data to send to the UI, as JSON. - * This includes the UI data and config_data. - * - * return string The packaged JSON. - **/ -/datum/tgui/proc/get_json(list/data) - var/list/json_data = list() - - json_data["config"] = get_config_data() - if(!isnull(data)) - json_data["data"] = data - - // Generate the JSON. - var/json = json_encode(json_data) - // Strip #255/improper. - json = replacetext(json, "\proper", "") - json = replacetext(json, "\improper", "") - return json - - /** - * private - * - * Handle clicks from the UI. - * Call the src_object's ui_act() if status is UI_INTERACTIVE. - * If the src_object's ui_act() returns 1, update all UIs attacked to it. - **/ -/datum/tgui/Topic(href, href_list) - if(user != usr) - return // Something is not right here. - - var/action = href_list["action"] - var/params = href_list; params -= "action" - - switch(action) - if("tgui:initialize") - user << output(url_encode(get_json(initial_data)), "[custom_browser_id ? window_id : "[window_id].browser"]:initialize") - initialized = TRUE - if("tgui:view") - if(params["screen"]) - src_object.ui_screen = params["screen"] - SStgui.update_uis(src_object) - if("tgui:link") - user << link(params["url"]) - if("tgui:fancy") - user.client.prefs.tgui_fancy = TRUE - if("tgui:nofrills") - user.client.prefs.tgui_fancy = FALSE - else - update_status(push = 0) // Update the window state. - if(src_object.ui_act(action, params, src, state)) // Call ui_act() on the src_object. - SStgui.update_uis(src_object) // Update if the object requested it. - - /** - * private - * - * Update the UI. - * Only updates the data if update is true, otherwise only updates the status. - * - * optional force bool If the UI should be forced to update. - **/ -/datum/tgui/process(force = 0) - var/datum/host = src_object.ui_host() - if(!src_object || !host || !user) // If the object or user died (or something else), abort. - close() - return - - if(status && (force || autoupdate)) - update() // Update the UI if the status and update settings allow it. - else - update_status(push = 1) // Otherwise only update status. - - /** - * private - * - * Push data to an already open UI. - * - * required data list The data to send. - * optional force bool If the update should be sent regardless of state. - **/ -/datum/tgui/proc/push_data(data, force = 0) - update_status(push = 0) // Update the window state. - if(!initialized) - return // Cannot update UI if it is not set up yet. - if(status <= UI_DISABLED && !force) - return // Cannot update UI, we have no visibility. - - // Send the new JSON to the update() Javascript function. - user << output(url_encode(get_json(data)), "[custom_browser_id ? window_id : "[window_id].browser"]:update") - - /** - * private - * - * Updates the UI by interacting with the src_object again, which will hopefully - * call try_ui_update on it. - * - * optional force_open bool If force_open should be passed to ui_interact. - **/ + /** + * tgui + * + * /tg/station user interface library + **/ + + /** + * tgui datum (represents a UI). + **/ +/datum/tgui + var/mob/user // The mob who opened/is using the UI. + var/datum/src_object // The object which owns the UI. + var/title // The title of te UI. + var/ui_key // The ui_key of the UI. This allows multiple UIs for one src_object. + var/window_id // The window_id for browse() and onclose(). + var/width = 0 // The window width. + var/height = 0 // The window height + var/window_options = list( // Extra options to winset(). + "focus" = FALSE, + "titlebar" = TRUE, + "can_resize" = TRUE, + "can_minimize" = TRUE, + "can_maximize" = FALSE, + "can_close" = TRUE, + "auto_format" = FALSE + ) + var/style = "nanotrasen" // The style to be used for this UI. + var/interface // The interface (template) to be used for this UI. + var/autoupdate = TRUE // Update the UI every MC tick. + var/initialized = FALSE // If the UI has been initialized yet. + var/list/initial_data // The data (and datastructure) used to initialize the UI. + var/status = UI_INTERACTIVE // The status/visibility of the UI. + var/datum/ui_state/state = null // Topic state used to determine status/interactability. + var/datum/tgui/master_ui // The parent UI. + var/list/datum/tgui/children = list() // Children of this UI. + var/titlebar = TRUE + var/custom_browser_id = FALSE + + /** + * public + * + * Create a new UI. + * + * required user mob The mob who opened/is using the UI. + * required src_object datum The object or datum which owns the UI. + * required ui_key string The ui_key of the UI. + * required interface string The interface used to render the UI. + * optional title string The title of the UI. + * optional width int The window width. + * optional height int The window height. + * optional master_ui datum/tgui The parent UI. + * optional state datum/ui_state The state used to determine status. + * + * return datum/tgui The requested UI. + **/ +/datum/tgui/New(mob/user, datum/src_object, ui_key, interface, title, width = 0, height = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state, browser_id = null) + src.user = user + src.src_object = src_object + src.ui_key = ui_key + src.window_id = browser_id ? browser_id : "[REF(src_object)]-[ui_key]" + src.custom_browser_id = browser_id ? TRUE : FALSE + + set_interface(interface) + + if(title) + src.title = sanitize(title) + if(width) + src.width = width + if(height) + src.height = height + + src.master_ui = master_ui + if(master_ui) + master_ui.children += src + src.state = state + + var/datum/asset/assets = get_asset_datum(/datum/asset/simple/tgui) + assets.send(user) + + /** + * public + * + * Open this UI (and initialize it with data). + **/ +/datum/tgui/proc/open() + if(!user.client) + return // Bail if there is no client. + + update_status(push = 0) // Update the window status. + if(status < UI_UPDATE) + return // Bail if we're not supposed to open. + + if(!initial_data) + set_initial_data(src_object.ui_data(user)) // Get the UI data. + + var/window_size = "" + if(width && height) // If we have a width and height, use them. + window_size = "size=[width]x[height];" + + var/debugable = check_rights_for(user.client, R_DEBUG) + user << browse(get_html(debugable), "window=[window_id];[window_size][list2params(window_options)]") // Open the window. + if (!custom_browser_id) + winset(user, window_id, "on-close=\"uiclose [REF(src)]\"") // Instruct the client to signal UI when the window is closed. + SStgui.on_open(src) + + /** + * public + * + * Reinitialize the UI. + * (Possibly with a new interface and/or data). + * + * optional template string The name of the new interface. + * optional data list The new initial data. + **/ +/datum/tgui/proc/reinitialize(interface, list/data) + if(interface) + set_interface(interface) // Set a new interface. + if(data) + set_initial_data(data) // Replace the initial_data. + open() + + /** + * public + * + * Close the UI, and all its children. + **/ +/datum/tgui/proc/close() + user << browse(null, "window=[window_id]") // Close the window. + SStgui.on_close(src) + for(var/datum/tgui/child in children) // Loop through and close all children. + child.close() + children.Cut() + state = null + master_ui = null + qdel(src) + + /** + * public + * + * Sets the browse() window options for this UI. + * + * required window_options list The window options to set. + **/ +/datum/tgui/proc/set_window_options(list/window_options) + src.window_options = window_options + + /** + * public + * + * Set the style for this UI. + * + * required style string The new UI style. + **/ +/datum/tgui/proc/set_style(style) + src.style = lowertext(style) + + /** + * public + * + * Set the interface (template) for this UI. + * + * required interface string The new UI interface. + **/ +/datum/tgui/proc/set_interface(interface) + src.interface = lowertext(interface) + + /** + * public + * + * Enable/disable auto-updating of the UI. + * + * required state bool Enable/disable auto-updating. + **/ +/datum/tgui/proc/set_autoupdate(state = 1) + autoupdate = state + + /** + * private + * + * Set the data to initialize the UI with. + * The datastructure cannot be changed by subsequent updates. + * + * optional data list The data/datastructure to initialize the UI with. + **/ +/datum/tgui/proc/set_initial_data(list/data) + initial_data = data + + /** + * private + * + * Generate HTML for this UI. + * + * optional bool inline If the JSON should be inlined into the HTML (for debugging). + * + * return string UI HTML output. + **/ +/datum/tgui/proc/get_html(var/inline) + var/html + // Poplate HTML with JSON if we're supposed to inline. + if(inline) + html = replacetextEx(SStgui.basehtml, "{}", get_json(initial_data)) + else + html = SStgui.basehtml + html = replacetextEx(html, "\[ref]", "[REF(src)]") + html = replacetextEx(html, "\[style]", style) + return html + + /** + * private + * + * Get the config data/datastructure to initialize the UI with. + * + * return list The config data. + **/ +/datum/tgui/proc/get_config_data() + var/list/config_data = list( + "title" = title, + "status" = status, + "screen" = src_object.ui_screen, + "style" = style, + "interface" = interface, + "fancy" = user.client.prefs.tgui_fancy, + "locked" = user.client.prefs.tgui_lock && !custom_browser_id, + "window" = window_id, + "ref" = "[REF(src)]", + "user" = list( + "name" = user.name, + "ref" = "[REF(user)]" + ), + "srcObject" = list( + "name" = "[src_object]", + "ref" = "[REF(src_object)]" + ), + "titlebar" = titlebar + ) + return config_data + + /** + * private + * + * Package the data to send to the UI, as JSON. + * This includes the UI data and config_data. + * + * return string The packaged JSON. + **/ +/datum/tgui/proc/get_json(list/data) + var/list/json_data = list() + + json_data["config"] = get_config_data() + if(!isnull(data)) + json_data["data"] = data + + // Generate the JSON. + var/json = json_encode(json_data) + // Strip #255/improper. + json = replacetext(json, "\proper", "") + json = replacetext(json, "\improper", "") + return json + + /** + * private + * + * Handle clicks from the UI. + * Call the src_object's ui_act() if status is UI_INTERACTIVE. + * If the src_object's ui_act() returns 1, update all UIs attacked to it. + **/ +/datum/tgui/Topic(href, href_list) + if(user != usr) + return // Something is not right here. + + var/action = href_list["action"] + var/params = href_list; params -= "action" + + switch(action) + if("tgui:initialize") + user << output(url_encode(get_json(initial_data)), "[custom_browser_id ? window_id : "[window_id].browser"]:initialize") + initialized = TRUE + if("tgui:view") + if(params["screen"]) + src_object.ui_screen = params["screen"] + SStgui.update_uis(src_object) + if("tgui:link") + user << link(params["url"]) + if("tgui:fancy") + user.client.prefs.tgui_fancy = TRUE + if("tgui:nofrills") + user.client.prefs.tgui_fancy = FALSE + else + update_status(push = 0) // Update the window state. + if(src_object.ui_act(action, params, src, state)) // Call ui_act() on the src_object. + SStgui.update_uis(src_object) // Update if the object requested it. + + /** + * private + * + * Update the UI. + * Only updates the data if update is true, otherwise only updates the status. + * + * optional force bool If the UI should be forced to update. + **/ +/datum/tgui/process(force = 0) + var/datum/host = src_object.ui_host() + if(!src_object || !host || !user) // If the object or user died (or something else), abort. + close() + return + + if(status && (force || autoupdate)) + update() // Update the UI if the status and update settings allow it. + else + update_status(push = 1) // Otherwise only update status. + + /** + * private + * + * Push data to an already open UI. + * + * required data list The data to send. + * optional force bool If the update should be sent regardless of state. + **/ +/datum/tgui/proc/push_data(data, force = 0) + update_status(push = 0) // Update the window state. + if(!initialized) + return // Cannot update UI if it is not set up yet. + if(status <= UI_DISABLED && !force) + return // Cannot update UI, we have no visibility. + + // Send the new JSON to the update() Javascript function. + user << output(url_encode(get_json(data)), "[custom_browser_id ? window_id : "[window_id].browser"]:update") + + /** + * private + * + * Updates the UI by interacting with the src_object again, which will hopefully + * call try_ui_update on it. + * + * optional force_open bool If force_open should be passed to ui_interact. + **/ /datum/tgui/proc/update(force_open = FALSE) - src_object.ui_interact(user, ui_key, src, force_open, master_ui, state) - - /** - * private - * - * Update the status/visibility of the UI for its user. - * - * optional push bool Push an update to the UI (an update is always sent for UI_DISABLED). - **/ -/datum/tgui/proc/update_status(push = 0) - var/status = src_object.ui_status(user, state) - if(master_ui) - status = min(status, master_ui.status) - - set_status(status, push) - if(status == UI_CLOSE) - close() - - /** - * private - * - * Set the status/visibility of the UI. - * - * required status int The status to set (UI_CLOSE/UI_DISABLED/UI_UPDATE/UI_INTERACTIVE). - * optional push bool Push an update to the UI (an update is always sent for UI_DISABLED). - **/ -/datum/tgui/proc/set_status(status, push = 0) - if(src.status != status) // Only update if status has changed. - if(src.status == UI_DISABLED) - src.status = status - if(push) - update() - else - src.status = status - if(status == UI_DISABLED || push) // Update if the UI just because disabled, or a push is requested. - push_data(null, force = 1) - -/datum/tgui/proc/set_titlebar(value) - titlebar = value + src_object.ui_interact(user, ui_key, src, force_open, master_ui, state) + + /** + * private + * + * Update the status/visibility of the UI for its user. + * + * optional push bool Push an update to the UI (an update is always sent for UI_DISABLED). + **/ +/datum/tgui/proc/update_status(push = 0) + var/status = src_object.ui_status(user, state) + if(master_ui) + status = min(status, master_ui.status) + + set_status(status, push) + if(status == UI_CLOSE) + close() + + /** + * private + * + * Set the status/visibility of the UI. + * + * required status int The status to set (UI_CLOSE/UI_DISABLED/UI_UPDATE/UI_INTERACTIVE). + * optional push bool Push an update to the UI (an update is always sent for UI_DISABLED). + **/ +/datum/tgui/proc/set_status(status, push = 0) + if(src.status != status) // Only update if status has changed. + if(src.status == UI_DISABLED) + src.status = status + if(push) + update() + else + src.status = status + if(status == UI_DISABLED || push) // Update if the UI just because disabled, or a push is requested. + push_data(null, force = 1) + +/datum/tgui/proc/set_titlebar(value) + titlebar = value diff --git a/config/config.txt b/config/config.txt index 168f5202ac..9aae4a789c 100644 --- a/config/config.txt +++ b/config/config.txt @@ -358,8 +358,6 @@ MINUTE_TOPIC_LIMIT 100 ## Allow admin hrefs that don't use the new token system, will eventually be removed DEBUG_ADMIN_HREFS -<<<<<<< HEAD -======= ###Master Controller High Pop Mode### @@ -380,4 +378,6 @@ HIGH_POP_MC_MODE_AMOUNT 65 ##Disengage high pop mode if player count drops below this DISABLE_HIGH_POP_MC_MODE_AMOUNT 60 ->>>>>>> bc4d4e7... Merge pull request #31374 from MrStonedOne/highpopmode + +## Uncomment to prevent the world from sleeping while no players are connected after initializations +#RESUME_AFTER_INITIALIZATIONS diff --git a/html/changelog.html b/html/changelog.html index a4b13b52cf..45dfe57b20 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -1,7 +1,7 @@ - /tg/ Station 13 Changelog + Citadel Station 13 Changelog