diff --git a/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm index 125dd2c1d928..893390b5251e 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm @@ -1,5404 +1,8077 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/turf/template_noop, -/area/template_noop) "ab" = ( /turf/simulated/mineral/random/low_chance, /area/ruin/space/unpowered) "ac" = ( -/turf/simulated/wall/mineral/iron, -/area/ruin/space/unpowered) -"ad" = ( -/obj/structure/closet/cardboard, -/obj/item/stack/sheet/mineral/silver, -/obj/item/stack/sheet/mineral/gold, -/obj/item/stack/sheet/mineral/silver, -/obj/item/stack/sheet/mineral/silver, -/obj/item/stack/sheet/mineral/gold, -/obj/item/stack/sheet/mineral/gold, +/obj/structure/chair{ + dir = 1 + }, /turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"ad" = ( +/obj/structure/railing, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) "ae" = ( -/obj/structure/closet/cardboard, -/obj/item/storage/box/monkeycubes, -/obj/item/storage/box/monkeycubes, -/obj/item/storage/box/monkeycubes, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/mechanical, -/turf/simulated/floor/plasteel, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "af" = ( -/obj/structure/closet/cardboard, -/obj/item/stack/sheet/cardboard, -/obj/item/stack/cable_coil, -/obj/item/stack/sheet/wood, -/obj/item/stack/packageWrap, -/turf/simulated/floor/plasteel, +/obj/effect/turf_decal/box, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; + dir = 5 + }, /area/ruin/space/unpowered) "ag" = ( -/obj/structure/closet/cardboard, -/obj/item/storage/box/mousetraps, -/obj/item/storage/box/mousetraps, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/zipties, -/obj/item/kitchen/knife/combat, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) -"ah" = ( -/obj/structure/closet/cardboard, -/obj/item/stack/sheet/metal{ - amount = 50; - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/stack/sheet/metal{ - amount = 50; - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/stack/sheet/metal{ - amount = 50; - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/stack/sheet/metal{ - amount = 50; - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/stack/rods{ - amount = 50 - }, -/obj/item/stack/rods{ - amount = 50 - }, -/obj/item/stack/rods{ - amount = 50 - }, -/obj/item/stack/rods{ - amount = 50 +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" }, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) +"ah" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) "ai" = ( -/obj/structure/closet/cardboard, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/shoes/combat, -/turf/simulated/floor/plasteel, +/turf/simulated/wall/indestructible/rock, /area/ruin/space/unpowered) "aj" = ( -/obj/structure/closet/cardboard, -/obj/machinery/light{ - dir = 8 +/obj/structure/railing{ + dir = 4 }, -/obj/item/flashlight/flare, -/obj/item/flashlight/flare, -/obj/item/flashlight/flare, -/obj/item/flashlight/flare, -/obj/item/flashlight/flare, -/obj/item/flashlight/flare, -/obj/item/flashlight, -/obj/item/flashlight, -/obj/item/flashlight, -/obj/item/shovel, -/turf/simulated/floor/plasteel, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "ak" = ( -/obj/structure/closet/cardboard, -/obj/item/flashlight/lantern, -/obj/item/flashlight/lantern, -/obj/item/flashlight/lantern, -/obj/item/tape/random, -/obj/item/tape/random, -/obj/item/tape/random, -/obj/item/storage/box/rxglasses, -/obj/item/extinguisher, -/obj/item/extinguisher, -/obj/item/clothing/glasses/night, -/obj/item/clothing/glasses/night, -/turf/simulated/floor/plasteel, +/obj/structure/railing{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "al" = ( -/obj/structure/closet/cardboard, -/obj/item/storage/box/syringes, -/obj/item/storage/box/syringes, -/obj/item/storage/box/beakers, -/obj/item/storage/box/beakers, -/obj/item/storage/fancy/matches, -/obj/item/storage/box/bodybags, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/machinery/atmospherics/air_sensor, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) "am" = ( -/obj/structure/closet/cardboard, -/obj/item/kitchen/knife, -/obj/item/kitchen/knife, -/obj/item/hatchet, -/obj/item/kitchen/rollingpin, -/obj/item/cultivator, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/machinery/light/small, +/turf/simulated/floor/chasm/space_ruin/airless, +/area/ruin/space/powered) "an" = ( -/obj/structure/closet/cardboard, -/obj/item/defibrillator, -/obj/item/storage/box/autoinjectors, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/structure/flora/junglebush/large, +/turf/simulated/floor/grass/jungle/no_creep, +/area/ruin/space/deepstorage) "ao" = ( -/obj/structure/closet/cardboard, -/obj/machinery/light{ - dir = 4 +/obj/structure/window/reinforced{ + dir = 8 }, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_y = 4 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) "ap" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/iv_bag/blood/OMinus, -/obj/item/reagent_containers/iv_bag/blood/OMinus, -/obj/item/reagent_containers/iv_bag/blood/OMinus, -/obj/item/reagent_containers/iv_bag/blood/OMinus, -/obj/item/reagent_containers/iv_bag/blood/OMinus, -/obj/item/reagent_containers/iv_bag/blood/random, -/obj/item/reagent_containers/iv_bag/blood/random, -/obj/item/reagent_containers/iv_bag/blood/random, -/obj/item/reagent_containers/iv_bag/blood/random, -/obj/item/reagent_containers/iv_bag/blood/random, -/obj/item/reagent_containers/iv_bag/blood/random, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/machinery/power/apc/off_station/empty_charge/directional/north{ + cell_type = 15000 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "browncorner" + }, +/area/ruin/space/deepstorage) "aq" = ( -/obj/machinery/iv_drip, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) "ar" = ( -/turf/simulated/floor/plasteel, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; + dir = 10 + }, /area/ruin/space/unpowered) "as" = ( -/obj/machinery/atmospherics/portable/canister/oxygen, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) -"at" = ( -/obj/machinery/atmospherics/portable/canister/air, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/structure/blob/normal/deepstorage, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) "au" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Bunker" - }, -/turf/simulated/floor/plasteel, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) "av" = ( -/obj/structure/toilet{ +/obj/structure/railing/corner{ dir = 4 }, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/ruin/space/unpowered) +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/deepstorage) "aw" = ( -/obj/structure/mirror{ - pixel_x = 30 - }, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 +/obj/structure/window/reinforced/survival_pod{ + dir = 1 }, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" +/obj/structure/window/reinforced/survival_pod{ + dir = 4 }, +/obj/structure/girder/reinforced, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "ax" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/obj/item/flashlight, -/obj/item/flashlight, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) "ay" = ( -/obj/structure/table, -/obj/item/gun/projectile/automatic/wt550{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/item/gun/projectile/automatic/wt550{ - pixel_x = 2 +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/dark{ + dir = 1 }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = 30 +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) "az" = ( -/obj/structure/table, -/obj/item/storage/backpack/duffel/security{ - pixel_y = 6 +/obj/structure/fence/door/opened{ + dir = 4 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/plating/asteroid/basalt/airless, /area/ruin/space/unpowered) "aA" = ( -/obj/structure/table, -/obj/item/radio{ - pixel_x = -4 +/obj/structure/railing{ + dir = 4 }, -/obj/item/radio, -/obj/item/radio{ - pixel_x = 4 +/turf/simulated/floor/plasteel/airless{ + icon_state = "stairs" }, -/turf/simulated/floor/plasteel, /area/ruin/space/unpowered) "aB" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50; - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/stack/rods{ - amount = 50 - }, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass/no_creep, +/area/ruin/space/deepstorage) "aC" = ( -/obj/structure/table, -/obj/item/storage/firstaid/brute{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/firstaid/brute, -/turf/simulated/floor/plasteel, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) "aD" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/firstaid/regular, -/obj/machinery/light/small{ - dir = 4 +/obj/effect/spawner/window/plastitanium, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "DS_mostfrontshutter" }, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) -"aE" = ( -/obj/structure/closet/crate/radiation, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) "aF" = ( -/obj/structure/closet/cardboard, -/obj/item/food/beans, -/obj/item/food/beans, -/obj/item/food/beans, -/obj/item/food/beans, -/obj/item/food/beans, -/turf/simulated/floor/plasteel, +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "stairs"; + dir = 8 + }, /area/ruin/space/unpowered) "aG" = ( -/obj/structure/closet/cardboard, -/obj/item/reagent_containers/drinks/cans/cola, -/obj/item/reagent_containers/drinks/cans/cola, -/obj/item/reagent_containers/drinks/cans/cola, -/obj/item/reagent_containers/drinks/cans/cola, -/obj/item/reagent_containers/drinks/cans/cola, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) "aH" = ( -/obj/machinery/economy/vending/clothing, -/turf/simulated/floor/wood{ - icon_state = "wood-broken" +/obj/machinery/light/small{ + dir = 1 }, -/area/ruin/space/unpowered) +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/powered) "aI" = ( -/turf/simulated/floor/wood{ - icon_state = "wood-broken2" +/obj/machinery/light/small{ + dir = 4 }, -/area/ruin/space/unpowered) +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/deepstorage) "aJ" = ( -/obj/structure/bed, -/turf/simulated/floor/wood, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "aK" = ( +/obj/structure/blob/normal/deepstorage, /turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" + icon_state = "dark" }, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) "aL" = ( -/obj/machinery/light/small{ - dir = 4; - pixel_y = -8 +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/bed{ + dir = 1 }, /turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" + icon_state = "whiteredcorner"; + dir = 1 }, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) "aM" = ( -/obj/structure/table, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/turf/simulated/floor/plasteel, +/turf/simulated/mineral, /area/ruin/space/unpowered) "aN" = ( -/obj/structure/table, -/obj/item/reagent_scanner/adv, -/obj/item/healthanalyzer, -/obj/item/healthanalyzer, -/obj/item/stack/medical/bruise_pack, -/obj/item/stack/medical/bruise_pack, -/turf/simulated/floor/plasteel, +/obj/structure/railing{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/chair/office{ + dir = 1 + }, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "aO" = ( -/obj/structure/closet/radiation, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel, +/obj/effect/decal/remains/human, +/turf/simulated/floor/plating/asteroid/basalt/airless, /area/ruin/space/unpowered) "aP" = ( -/obj/structure/closet/cardboard, -/obj/item/reagent_containers/drinks/cans/cola, -/obj/item/reagent_containers/drinks/cans/cola, -/obj/item/reagent_containers/drinks/cans/cola, -/obj/item/reagent_containers/drinks/cans/cola, -/obj/item/reagent_containers/drinks/cans/cola, -/obj/machinery/light{ - dir = 4 +/obj/effect/turf_decal/box, +/obj/structure/cable/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "brown" }, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) "aQ" = ( -/obj/structure/closet/wardrobe/pink, -/turf/simulated/floor/wood{ - icon_state = "wood-broken2" - }, -/area/ruin/space/unpowered) +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) "aR" = ( -/turf/simulated/floor/wood, -/area/ruin/space/unpowered) +/obj/machinery/door/airlock/highsecurity{ + req_access_txt = "512" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) "aS" = ( -/obj/structure/bed, -/turf/simulated/floor/wood{ - icon_state = "wood-broken" +/obj/structure/railing/cap, +/turf/simulated/floor/plasteel/airless{ + icon_state = "stairs"; + dir = 1 }, /area/ruin/space/unpowered) "aT" = ( -/obj/machinery/shower{ +/obj/structure/table/reinforced, +/obj/item/kitchen/knife/combat/survival, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; dir = 4 }, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" - }, /area/ruin/space/unpowered) "aU" = ( -/obj/machinery/shower{ - dir = 8 +/obj/structure/chair{ + dir = 1 }, /turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" + icon_state = "dark" }, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) "aV" = ( -/obj/machinery/light/small{ - dir = 8 +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" }, -/obj/structure/table, -/obj/item/storage/firstaid/toxin, -/obj/item/storage/firstaid/toxin, -/obj/item/storage/pill_bottle/charcoal, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/machinery/computer/monitor, +/obj/machinery/door_control{ + pixel_y = 25; + id = "DS_Rad"; + name = "Generator Storage" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "browncorner" + }, +/area/ruin/space/deepstorage) "aW" = ( -/obj/structure/table, -/obj/item/flashlight/flare, -/obj/item/flashlight/flare, -/obj/item/flashlight/flare, -/obj/item/flashlight/flare, -/obj/item/flashlight/flare, -/obj/item/crowbar/red, -/turf/simulated/floor/plasteel, +/obj/structure/railing/corner, +/obj/effect/turf_decal/stripes/corner, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "aX" = ( -/obj/machinery/suit_storage_unit, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) "aY" = ( -/obj/structure/closet/wardrobe/pink, -/obj/machinery/light/small{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" }, -/turf/simulated/floor/wood, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) "aZ" = ( -/turf/simulated/floor/wood{ - icon_state = "wood-broken" +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "ba" = ( -/obj/structure/bed, -/turf/simulated/floor/wood{ - icon_state = "wood-broken2" +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/flashlight, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; + dir = 8 }, /area/ruin/space/unpowered) "bb" = ( -/obj/machinery/shower{ - dir = 4 - }, -/obj/item/soap, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/ruin/space/unpowered) +/obj/structure/flora/junglebush/large, +/turf/simulated/floor/grass/no_creep, +/area/ruin/space/deepstorage) "bc" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) "bd" = ( -/obj/structure/closet/cardboard, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/turf/simulated/floor/plasteel, +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) "be" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Bunker" - }, +/obj/structure/table/glass, /turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" + dir = 5; + icon_state = "vault" }, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) "bf" = ( -/obj/structure/closet/fireaxecabinet{ - icon_state = "fireaxe0130"; - pixel_y = 28 +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "black" }, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) "bg" = ( -/obj/machinery/sleeper{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 8 +/obj/structure/ore_box, +/obj/effect/turf_decal/box, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; + dir = 9 }, -/turf/simulated/floor/plasteel, /area/ruin/space/unpowered) "bh" = ( -/obj/machinery/light/small{ - dir = 1 +/obj/structure/railing{ + dir = 4 }, -/turf/simulated/floor/plasteel, +/obj/structure/dispenser/oxygen, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) "bi" = ( -/obj/machinery/light/small{ - dir = 4; - pixel_y = -8 +/obj/structure/railing{ + dir = 1 }, -/turf/simulated/floor/plasteel, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/chair{ + pixel_y = -5; + pixel_x = -2 + }, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "bj" = ( -/obj/machinery/sleeper{ - dir = 4 +/obj/effect/turf_decal/box, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; + dir = 8 }, -/turf/simulated/floor/plasteel, /area/ruin/space/unpowered) "bk" = ( -/obj/machinery/processor{ - name = "processor" +/obj/structure/railing/corner{ + dir = 8 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) "bl" = ( -/obj/structure/table, -/obj/item/storage/fancy/matches, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) "bm" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder, -/turf/simulated/floor/plasteel, +/obj/structure/fence{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/airless, /area/ruin/space/unpowered) "bn" = ( -/obj/structure/table, -/obj/machinery/recharger, -/turf/simulated/floor/plasteel, +/obj/structure/flora/ash/rock/style_random, +/turf/simulated/floor/plating/asteroid/basalt/airless, /area/ruin/space/unpowered) "bo" = ( -/obj/machinery/hydroponics/constructable{ - pixel_y = 9 - }, -/turf/simulated/floor/light, -/area/ruin/space/unpowered) +/obj/machinery/light/small, +/obj/structure/rack, +/obj/item/stack/cable_coil/yellow, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) "bp" = ( -/obj/machinery/hydroponics/constructable{ - pixel_y = 9 - }, -/obj/machinery/light{ - dir = 1 +/obj/structure/rack, +/obj/item/pickaxe, +/obj/machinery/light/small{ + dir = 8 }, -/turf/simulated/floor/light, -/area/ruin/space/unpowered) +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/powered) "br" = ( -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/power/port_gen/pacman, -/turf/simulated/floor/plasteel, +/obj/structure/table/reinforced, +/obj/item/t_scanner/adv_mining_scanner, +/turf/simulated/floor/plasteel/airless, /area/ruin/space/unpowered) "bs" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/power/smes, -/turf/simulated/floor/plasteel, +/obj/structure/rack, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/turf/simulated/floor/plasteel/airless, /area/ruin/space/unpowered) "bu" = ( -/obj/machinery/light/small{ - dir = 1 +/obj/structure/railing{ + dir = 6 }, -/obj/structure/dispenser/oxygen, -/turf/simulated/floor/plasteel, +/obj/structure/table, +/obj/item/storage/firstaid/regular{ + pixel_y = 0 + }, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) "bv" = ( -/obj/machinery/biogenerator, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/structure/railing, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/airless, +/area/ruin/space/deepstorage) "bw" = ( -/obj/machinery/light, -/obj/machinery/hydroponics/constructable{ - pixel_y = 9 - }, -/turf/simulated/floor/light, +/turf/simulated/floor/chasm/space_ruin/airless, /area/ruin/space/unpowered) "bx" = ( -/obj/machinery/autolathe, -/turf/simulated/floor/plasteel, +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; + dir = 8 + }, /area/ruin/space/unpowered) "by" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/power/terminal{ - dir = 1 +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution" }, -/turf/simulated/floor/plasteel, /area/ruin/space/unpowered) "bz" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/simulated/floor/plasteel, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/atmospherics/portable/canister/oxygen, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) "bA" = ( -/obj/structure/table, -/obj/machinery/kitchen_machine/microwave, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, +/obj/structure/flora/rock, +/turf/simulated/floor/plating/asteroid/basalt/airless, /area/ruin/space/unpowered) "bB" = ( -/turf/simulated/floor/plasteel{ - icon_state = "bar" +/obj/machinery/light/small{ + dir = 4 }, -/area/ruin/space/unpowered) +/turf/simulated/floor/chasm/space_ruin, +/area/ruin/space/powered) "bC" = ( -/obj/structure/table, -/obj/item/storage/box/donkpockets, -/turf/simulated/floor/plasteel{ - icon_state = "bar" +/obj/machinery/light/small, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/area/ruin/space/unpowered) +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) "bD" = ( -/obj/structure/table, -/obj/item/food/beans, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, +/turf/simulated/floor/plating/asteroid/basalt/airless, /area/ruin/space/unpowered) "bE" = ( -/obj/structure/chair{ - dir = 8 +/obj/structure/railing{ + dir = 6 }, -/turf/simulated/floor/plasteel{ - icon_state = "bar" +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "bF" = ( -/obj/machinery/seed_extractor, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) -"bG" = ( -/obj/machinery/power/apc/off_station/directional/west{ - keep_preset_name = 1; - name = "Bunker APC" +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" +/obj/structure/railing{ + dir = 1 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"bG" = ( +/obj/structure/railing/cap, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) "bH" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/turf/simulated/floor/plasteel/airless{ + icon_state = "stairs" }, -/turf/simulated/floor/plasteel, /area/ruin/space/unpowered) "bI" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" +/obj/structure/rack, +/obj/item/pickaxe, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; + dir = 4 }, -/turf/simulated/floor/plasteel, /area/ruin/space/unpowered) "bJ" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) -"bK" = ( -/obj/structure/table, -/obj/item/kitchen/knife, -/turf/simulated/floor/plasteel{ - icon_state = "bar" +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/window/reinforced, +/obj/machinery/light/small{ + dir = 1 }, -/area/ruin/space/unpowered) +/turf/simulated/floor/grass/no_creep, +/area/ruin/space/deepstorage) +"bK" = ( +/obj/effect/spawner/window/plastitanium, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) "bL" = ( -/obj/structure/table, -/turf/simulated/floor/plasteel{ - icon_state = "bar" +/obj/structure/railing/cap{ + dir = 4 }, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) "bM" = ( -/obj/structure/table, -/obj/item/kitchen/utensil/fork, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) "bN" = ( -/obj/machinery/economy/vending/hydronutrients, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "bO" = ( -/obj/machinery/space_heater, -/turf/simulated/floor/plasteel, +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/chair/office{ + dir = 1 + }, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) "bP" = ( -/obj/structure/chair/office/dark{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/mob/living/simple_animal/hostile/pirate, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) "bQ" = ( -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel, +/obj/item/stack/ore/glass/basalt{ + pixel_y = 8; + pixel_x = 5 + }, +/turf/simulated/floor/plating/asteroid/basalt/airless, /area/ruin/space/unpowered) "bR" = ( -/obj/machinery/smartfridge, -/turf/simulated/floor/plasteel{ - icon_state = "bar" +/obj/machinery/light/small{ + dir = 1 }, -/area/ruin/space/unpowered) +/turf/simulated/floor/chasm/space_ruin/airless, +/area/ruin/space/powered) "bS" = ( -/obj/machinery/light/small, -/turf/simulated/floor/plasteel{ - icon_state = "bar" +/obj/structure/flora/rock/jungle, +/obj/structure/window/reinforced{ + dir = 4 }, -/area/ruin/space/unpowered) +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/grass/no_creep, +/area/ruin/space/deepstorage) "bT" = ( -/obj/machinery/economy/vending/hydroseeds{ - slogan_delay = 700 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) "bU" = ( -/obj/machinery/light/small{ +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"bV" = ( +/obj/structure/railing{ dir = 8 }, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) -"bV" = ( -/obj/structure/chair/office/dark, -/mob/living/simple_animal/hostile/pirate, -/turf/simulated/floor/plasteel, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "bW" = ( -/obj/structure/computerframe, -/turf/simulated/floor/plasteel, +/obj/structure/railing/corner, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "bX" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - dir = 1; - name = "Bunker Entrance"; - network = list("Bunker1"); - pixel_y = 2 +/obj/structure/railing, +/obj/effect/turf_decal/stripes/line, +/turf/simulated/floor/engine/airless, +/area/ruin/space/deepstorage) +"bY" = ( +/obj/structure/railing, +/obj/structure/chair/office{ + dir = 1 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/catwalk/airless, /area/ruin/space/unpowered) -"bY" = ( +"bZ" = ( /obj/structure/table/reinforced, /obj/machinery/door_control{ - id = "bunker1"; - name = "Inner Doors"; - pixel_y = 6 - }, -/obj/machinery/door_control{ - id = "bunker2"; - name = "Outer Doors"; - pixel_y = -4 + pixel_y = 7; + pixel_x = 4; + id = "DS_mostfrontshutter"; + name = "emergency shutters" }, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) -"bZ" = ( -/obj/machinery/door/poddoor{ - id_tag = "bunker1"; - name = "Bunker Door"; - tag = "inner" +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" }, -/turf/simulated/floor/plating, -/area/ruin/space/unpowered) +/area/ruin/space/deepstorage) "ca" = ( -/turf/simulated/floor/plating, -/area/ruin/space/unpowered) -"cb" = ( -/obj/machinery/camera{ - network = list("Bunker1") +/obj/structure/closet/crate/radiation, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/light/small{ + dir = 1 }, -/turf/simulated/floor/plating, -/area/ruin/space/unpowered) +/obj/item/stack/sheet/mineral/uranium{ + amount = 20 + }, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"cb" = ( +/obj/structure/flora/grass/jungle, +/turf/simulated/floor/grass/jungle/no_creep, +/area/ruin/space/deepstorage) "cc" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/flora/rock/jungle, /obj/machinery/light/small{ - dir = 4 + dir = 1 }, -/turf/simulated/floor/plating, -/area/ruin/space/unpowered) +/turf/simulated/floor/grass/jungle/no_creep, +/area/ruin/space/deepstorage) "cd" = ( -/obj/machinery/door/poddoor{ - id_tag = "bunker2"; - name = "Bunker Door"; - tag = "outer" +/obj/structure/railing{ + dir = 4 }, -/turf/simulated/floor/plating, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "ce" = ( -/turf/simulated/floor/plating/asteroid/airless, -/area/ruin/space/unpowered) -"cZ" = ( -/obj/effect/decal/remains/robot, -/turf/simulated/floor/plating/asteroid/airless, -/area/ruin/space/unpowered) -"iZ" = ( -/turf/simulated/mineral/random/high_chance, -/area/ruin/space/unpowered) -"kM" = ( -/obj/structure/spawner/mining/hivelord, -/turf/simulated/floor/plating/asteroid/airless, -/area/ruin/space/unpowered) -"mL" = ( -/obj/machinery/tcomms/relay/ruskie{ - network_id = "STORAGE-RELAY" +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/simulated/floor/engine/airless, +/area/ruin/space/deepstorage) +"ch" = ( +/obj/structure/table/reinforced, +/obj/item/paper/fluff/ruins/deepstorage/log3, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"cj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"ck" = ( +/obj/structure/railing/cap{ + dir = 10 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "stairs"; + dir = 1 }, -/turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) -"pv" = ( -/obj/machinery/porta_turret/syndicate, -/turf/simulated/floor/plating/asteroid/airless, -/area/ruin/space/unpowered) -"qn" = ( -/obj/effect/decal/remains/human, -/turf/simulated/floor/plating/asteroid/airless, /area/ruin/space/unpowered) -"rb" = ( -/mob/living/simple_animal/hostile/pirate/ranged, +"cm" = ( +/obj/structure/railing/cap{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "stairs" + }, +/area/ruin/space/deepstorage) +"cn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"co" = ( +/obj/machinery/door/airlock/hatch{ + req_access_txt = "512" + }, +/obj/structure/barricade/wooden/crude{ + layer = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"cs" = ( +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + dir = 6; + pixel_y = 4; + pixel_x = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"ct" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"cx" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"cA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + icon_state = "whitered"; + dir = 5 + }, +/area/ruin/space/deepstorage) +"cE" = ( +/obj/structure/morgue{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"cJ" = ( +/obj/structure/filingcabinet, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"cN" = ( +/obj/item/trash/tastybread, /turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) -"yU" = ( -/obj/structure/spawner/mining/goliath, -/turf/simulated/floor/plating/asteroid/airless, -/area/ruin/space/unpowered) -"zk" = ( +/area/ruin/space/deepstorage) +"cP" = ( +/obj/item/kirbyplants/plant27, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"cR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"cT" = ( +/obj/item/kirbyplants/plant21, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"cU" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"cX" = ( /obj/structure/chair{ dir = 8 }, -/mob/living/simple_animal/hostile/pirate/ranged, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"cY" = ( +/obj/structure/railing, /turf/simulated/floor/plasteel{ - icon_state = "bar" + icon_state = "dark" }, +/area/ruin/space/deepstorage) +"cZ" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) -"KB" = ( -/obj/structure/spawner/mining/basilisk, -/turf/simulated/floor/plating/asteroid/airless, -/area/ruin/space/unpowered) -"Pm" = ( -/obj/effect/mine/explosive, -/turf/simulated/floor/plating/asteroid/airless, -/area/ruin/space/unpowered) -"SX" = ( -/obj/structure/flora/ash/rock/style_random, -/turf/simulated/floor/plating/asteroid/airless, -/area/ruin/space/unpowered) -"To" = ( -/mob/living/simple_animal/hostile/pirate, +"dd" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"dg" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/item/kirbyplants/plant21, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"dh" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"dj" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"dk" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "DS_Quartermaster" + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"dn" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/simulated/floor/plasteel, -/area/ruin/space/unpowered) - -(1,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(2,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(3,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(4,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(5,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -iZ -iZ -iZ -iZ -iZ -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(6,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(7,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(8,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -iZ -iZ -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(9,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ce -ce -ab -ce -ab -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -"} -(10,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ce -ce -ab -ab -ce -ce -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -"} -(11,1,1) = {" -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -aa -aa -aa -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -"} -(12,1,1) = {" -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -SX -SX -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -"} -(13,1,1) = {" -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -SX -ce -ce -ce -qn -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -kM -ab -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(14,1,1) = {" -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -qn -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -aa -"} -(15,1,1) = {" -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -yU -ce -SX -ce -ce -ce -ab -ce -ce -ce -ab -ab -ab -ce -ce -ce -ce -qn -ce -ce -ce -ce -SX -ce -ce -ce -ab -ce -ce -ce -ce -qn -ce -SX -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(16,1,1) = {" -aa -aa -ab -ab -ab -ab -iZ -iZ -ab -iZ -iZ -ab -ab -ab -ce -ce -ce -ce -ce -ce -ab -ab -ce -ce -ce -ce -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -SX -ce -ce -ce -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -iZ -ab -ab -iZ -ab -ab -aa -"} -(17,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ab -ce -ce -ce -ce -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ce -ce -ce -yU -ce -ce -SX -ce -ce -ce -ab -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -SX -SX -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(18,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -ab -ce -ce -ab -ce -ce -ce -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ce -ab -ce -ce -kM -ab -ce -ce -ce -SX -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(19,1,1) = {" -ab -ab -ab -ab -ab -ab -iZ -iZ -iZ -iZ -ab -ab -ab -ce -ce -ce -ce -ce -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -"} -(20,1,1) = {" -ab -ab -ab -ab -iZ -iZ -iZ -iZ -iZ -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -"} -(21,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ce -ab -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -"} -(22,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -iZ -ab -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -cZ -ab -ab -ab -ab -ab -ab -ab -ab -"} -(23,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -kM -ce -ce -SX -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -"} -(24,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ce -SX -ce -ce -ab -ab -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ab -ce -ce -ce -ce -Pm -ce -ce -ce -ab -ab -ab -"} -(25,1,1) = {" -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ab -ab -ce -ce -qn -ce -ab -ab -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ac -bg -bj -ac -bx -ar -bG -bO -bU -ar -bZ -ca -ca -ac -ce -ce -Pm -ce -ce -ce -ce -cZ -ce -ce -ab -ab -"} -(26,1,1) = {" -ab -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ab -ab -ce -ab -ce -ce -ce -ce -ce -ab -ab -ab -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -ar -ar -ac -br -ar -bH -ar -ar -ar -bZ -ca -ca -ac -pv -ce -ce -ce -cZ -ce -ce -ce -ce -ce -ce -ce -"} -(27,1,1) = {" -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ab -ce -ce -ce -ce -ab -ce -ce -ab -ab -iZ -iZ -iZ -iZ -ab -ab -ab -ab -ab -ab -ac -ac -ac -ac -ac -ac -au -ac -bs -by -bI -ar -ar -ar -ac -ca -ca -ac -ce -ce -ce -ce -ce -Pm -ce -ce -ce -Pm -ce -ce -"} -(28,1,1) = {" -ab -ab -ab -iZ -iZ -iZ -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ab -ab -ce -ce -ab -ab -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ab -ac -aH -aQ -aY -ac -ar -ar -ac -mL -ar -ar -ar -ar -bX -ac -cb -ca -cd -ce -ce -Pm -ce -ce -ce -ce -ce -ce -ce -ce -ce -"} -(29,1,1) = {" -ab -ab -ab -iZ -iZ -ab -ab -ab -ce -ce -ce -ce -ce -yU -ce -qn -ce -ce -ce -ce -ce -ab -ab -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -aI -aR -aZ -au -ar -ar -ac -ar -ar -ar -ar -bV -bW -ac -cc -ca -cd -ce -ce -ce -ce -ce -ce -ce -ab -ce -ce -ce -ce -"} -(30,1,1) = {" -ab -ab -ab -iZ -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ab -ce -ab -ab -ab -ab -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -aJ -aS -ba -ac -ar -ar -au -ar -ar -ar -bP -ar -bY -ac -ac -ac -ac -ce -ce -ab -ab -ce -ce -ab -ab -ab -ab -ce -ce -"} -(31,1,1) = {" -ab -ab -ab -iZ -iZ -ab -ab -ab -ab -ce -ce -ce -ce -ce -SX -SX -ce -ce -ab -ce -ab -ab -ab -ab -ce -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ac -ac -ac -ac -ac -ac -bh -ar -ac -bu -bz -bJ -bQ -bW -bQ -ac -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -ab -"} -(32,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -SX -SX -ce -ce -ce -ce -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -ac -av -aK -aT -bb -ac -ar -ar -ac -ac -ac -ac -ac -ac -ac -ac -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -ab -"} -(33,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ce -ce -ce -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -ac -aw -aL -aU -aU -be -ar -ar -ar -ar -bA -bK -bR -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -aa -"} -(34,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -iZ -iZ -iZ -iZ -ab -ab -ab -ac -ac -ac -ac -ac -ac -ar -ar -ar -ar -bB -bB -bS -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -aa -"} -(35,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ac -ax -aM -aV -ac -bf -ar -bk -ac -ar -bC -bL -bB -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -aa -"} -(36,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ce -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ac -ay -ar -ar -bc -ar -ar -bl -ac -ar -bD -bM -bB -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -aa -"} -(37,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ab -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -az -ar -ar -bc -ar -rb -bm -ac -ar -bE -zk -bB -ac -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -aa -"} -(38,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -aA -ar -To -au -ar -ar -bn -ac -ar -ar -ar -ar -ac -ab -ab -ab -iZ -iZ -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -aa -"} -(39,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -aB -ar -ar -bc -ar -ar -ar -ar -ar -ar -ar -ar -ac -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -aa -aa -"} -(40,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -aC -ar -ar -bc -ar -bi -ar -ar -bv -bF -bN -bT -ac -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -aa -aa -"} -(41,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ce -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ac -ac -ac -ac -ac -aD -aN -aW -ac -au -ac -ac -au -ac -ac -ac -ac -ac -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -aa -aa -"} -(42,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ac -ad -aj -ap -ac -ac -ac -ac -ac -ar -ac -bp -ar -bw -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -ab -aa -"} -(43,1,1) = {" -aa -aa -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ab -ce -ce -ab -ab -ab -ab -ab -ab -ac -ae -ak -aq -ac -aE -aO -aX -aX -ar -ac -bo -ar -bo -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -ab -aa -"} -(44,1,1) = {" -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ab -ab -ce -ce -ab -ab -ab -ab -ab -ac -af -al -ar -au -ar -ar -ar -ar -ar -ac -bo -ar -bo -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -aa -"} -(45,1,1) = {" -aa -aa -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -ab -ab -ab -ce -ce -SX -ce -ce -ce -ab -ab -ce -ce -ab -ab -ab -ab -ab -ac -ag -am -ar -ac -aF -aF -aF -ar -To -ac -bp -ar -bw -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -aa -"} -(46,1,1) = {" -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -SX -SX -ce -ce -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ac -ah -an -as -ac -aF -aF -aF -bd -bd -ac -ac -ac -ac -ac -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -ce -ce -ce -ab -ab -ab -iZ -iZ -ab -ab -aa -"} -(47,1,1) = {" -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -qn -ce -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ac -ai -ao -at -ac -aG -aG -aG -bd -bd -ac -ab -ab -ab -ab -ab -iZ -iZ -iZ -iZ -iZ -ab -ab -ab -ce -ce -ab -ab -iZ -iZ -iZ -iZ -ab -ab -aa -"} -(48,1,1) = {" -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ac -ac -ac -ac -ac -aG -aP -aG -bd -bd -ac -ab -ab -ab -ab -ab -iZ -iZ -iZ -iZ -ab -ab -ab -ce -ce -ce -ab -ab -ab -iZ -iZ -iZ -ab -ab -aa -"} -(49,1,1) = {" -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -yU -ce -ce -ab -ab -ab -ab -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ac -ac -ac -ac -ac -ac -ac -ab -ab -ab -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(50,1,1) = {" -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -qn -ce -ce -ce -ce -ab -ab -ab -ab -ab -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(51,1,1) = {" -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(52,1,1) = {" -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(53,1,1) = {" -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ce -SX -SX -ce -ce -ab -ab -ab -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -"} -(54,1,1) = {" -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -SX -ce -ce -ce -ce -ab -ab -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ce -ce -ce -SX -SX -SX -ce -ab -ab -ab -ab -iZ -ab -iZ -iZ -ab -ab -ab -ab -"} -(55,1,1) = {" -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -iZ -iZ -iZ -iZ -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ab -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -iZ -iZ -iZ -iZ -iZ -ab -ab -ab -"} -(56,1,1) = {" -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ce -ce -ce -ce -ce -ce -ab -ab -iZ -ab -ab -ab -ab -ab -ce -ce -qn -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -ab -"} -(57,1,1) = {" -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -SX -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -KB -ce -ce -ce -SX -ce -ce -ce -ce -ab -ab -ab -ab -iZ -iZ -iZ -ab -ab -ab -ab -aa -"} -(58,1,1) = {" -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab -ab -ce -ce -ce -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -SX -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -SX -SX -SX -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -iZ -iZ -ab -ab -ab -aa -"} -(59,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ce -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -SX -SX -ce -ce -ce -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(60,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ce -ce -ce -KB -ce -ce -SX -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ce -qn -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -"} -(61,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -KB -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -"} -(62,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ce -ce -ab -ce -ab -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -qn -ce -ce -ab -ab -ab -ce -ce -ce -ce -ce -ce -ce -ce -ce -ab -ab -ce -ce -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -"} -(63,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ce -ab -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ce -ce -ce +/area/ruin/space/deepstorage) +"dt" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"dA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/clothing/head/welding, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"dC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/chair, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"dJ" = ( +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"dL" = ( +/turf/simulated/floor/plasteel{ + icon_state = "whitered" + }, +/area/ruin/space/deepstorage) +"dO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"dR" = ( +/obj/machinery/constructable_frame/machine_frame, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"dT" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/salvage/ruin/pirate, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"dX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/filingcabinet, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"ee" = ( +/obj/machinery/door/window/survival_pod{ + dir = 4; + name = "lift doors" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"eh" = ( +/obj/effect/landmark/damageturf, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"em" = ( +/turf/simulated/floor/plasteel{ + icon_state = "stairs"; + dir = 8 + }, +/area/ruin/space/deepstorage) +"eq" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + req_access_txt = "512" + }, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"es" = ( +/obj/machinery/door/poddoor/shutters/radiation{ + id_tag = "DS_Rad" + }, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"et" = ( +/obj/structure/table/tray, +/obj/item/scalpel{ + pixel_y = 16 + }, +/obj/item/circular_saw{ + pixel_y = 5 + }, +/obj/item/lighter{ + pixel_y = 1; + pixel_x = 8 + }, +/obj/structure/window/reinforced/tinted, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"eu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"ew" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"eB" = ( +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"eF" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"eI" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"eN" = ( +/obj/structure/grille/broken, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"eP" = ( +/obj/structure/railing/cap{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/unpowered) +"eS" = ( +/obj/structure/railing/cap{ + dir = 9 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"eZ" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"ff" = ( +/obj/machinery/computer/nonfunctional, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"fi" = ( +/obj/structure/blob/normal/deepstorage, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/mineral/plastitanium, +/area/ruin/space/deepstorage) +"fj" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"fk" = ( +/obj/machinery/hydroponics/constructable{ + pixel_y = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"fn" = ( +/obj/item/reagent_containers/glass/beaker/waterbottle/empty, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"fp" = ( +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + dir = 10; + pixel_y = 4; + pixel_x = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"ft" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"fw" = ( +/obj/item/chair{ + pixel_y = -5; + pixel_x = -2 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"fD" = ( +/obj/structure/sink{ + dir = 1; + pixel_y = -4 + }, +/obj/structure/mirror{ + broken = 1; + desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!"; + icon_state = "mirror_broke"; + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"fF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"fK" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"fN" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"fS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/obj/item/organ/internal/kidneys, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"fU" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass/jungle/no_creep, +/area/ruin/space/deepstorage) +"fV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"fX" = ( +/obj/item/chair{ + pixel_y = -5; + pixel_x = -2; + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"fZ" = ( +/obj/structure/rack, +/obj/structure/window/reinforced/polarized{ + dir = 4 + }, +/obj/machinery/light/small, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"ge" = ( +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"gp" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 1 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"gq" = ( +/obj/structure/rack, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"gr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/obj/item/organ/internal/lungs, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"gC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/kirbyplants/plant18, +/turf/simulated/floor/plasteel{ + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"gE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/chair{ + pixel_y = -5; + pixel_x = -2; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"gF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"gJ" = ( +/obj/item/chair, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"gK" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"gO" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/window/reinforced, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/grass/jungle/no_creep, +/area/ruin/space/deepstorage) +"gP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/railing{ + dir = 5 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"gS" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/glass, +/obj/effect/landmark/damageturf, +/obj/item/shard, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"gZ" = ( +/obj/structure/closet/crate, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"hd" = ( +/obj/structure/chair/sofa/bench{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"hg" = ( +/obj/item/kirbyplants/plant27, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"hh" = ( +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + dir = 4; + pixel_y = 4; + pixel_x = 1 + }, +/obj/effect/landmark/damageturf, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"hj" = ( +/obj/structure/filingcabinet, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"hk" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/chasm/space_ruin/airless, +/area/ruin/space/powered) +"hm" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"hn" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"ho" = ( +/obj/effect/spawner/window/reinforced/grilled, +/obj/machinery/door/poddoor/shutters{ + dir = 2; + id_tag = "DS_Medbay" + }, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"hp" = ( +/obj/machinery/door/airlock/hatch{ + req_access_txt = "512"; + name = "Guard Wing" + }, +/obj/structure/barricade/wooden/crude{ + layer = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"ht" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"hu" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"hz" = ( +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner" + }, +/area/ruin/space/deepstorage) +"hB" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/toxin, +/obj/item/storage/firstaid/toxin, +/obj/item/storage/pill_bottle/charcoal, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"hH" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"hK" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/sign/poster/contraband/power{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"hN" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/mineral/plastitanium, +/area/ruin/space/deepstorage) +"hU" = ( +/obj/structure/chair/sofa/bench{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"hV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"hW" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/multi_tile/impassable{ + id_tag = "DS_Tram" + }, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"hY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/bed, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"hZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/cardboard, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"ia" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/head/helmet/swat, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"ic" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"if" = ( +/obj/structure/girder/reinforced, +/obj/structure/window/reinforced/survival_pod{ + dir = 4 + }, +/obj/structure/window/reinforced/survival_pod, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"ih" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"im" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/structure/window/reinforced/tinted, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"iq" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/ruin/space/deepstorage) +"ir" = ( +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/plasteel{ + icon_state = "whitered" + }, +/area/ruin/space/deepstorage) +"iu" = ( +/obj/structure/rack, +/obj/structure/window/reinforced/polarized{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"iG" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"iJ" = ( +/obj/machinery/atmospherics/air_sensor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"iK" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"iL" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"iM" = ( +/obj/machinery/atmospherics/air_sensor, +/turf/simulated/floor/engine/airless, +/area/ruin/space/deepstorage) +"iX" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/reinforced/normal{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"iZ" = ( +/turf/simulated/mineral/random/high_chance, +/area/ruin/space/unpowered) +"ja" = ( +/obj/machinery/light/small, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"je" = ( +/obj/structure/table, +/obj/item/fan{ + pixel_y = 4; + pixel_x = -2 + }, +/obj/item/salvage/ruin/nanotrasen, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"jf" = ( +/obj/effect/decal/remains/human, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"jj" = ( +/obj/machinery/door/airlock/highsecurity{ + req_access_txt = "512"; + name = "Guard Store Room" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"jn" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"jo" = ( +/obj/machinery/shower{ + dir = 8; + pixel_x = -4; + pixel_y = -4 + }, +/obj/structure/curtain/open/shower, +/obj/item/soap, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"jp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/iv_drip, +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + dir = 5; + pixel_y = 4; + pixel_x = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"jq" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"jr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"ju" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/cobweb2, +/obj/structure/sign/poster/contraband/missing_gloves{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"jv" = ( +/obj/machinery/economy/vending/snack, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"jy" = ( +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + dir = 10; + pixel_y = 4; + pixel_x = 1 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"jA" = ( +/obj/machinery/light/small, +/turf/simulated/floor/engine/airless, +/area/ruin/space/powered) +"jB" = ( +/turf/simulated/wall/indestructible/riveted, +/area/ruin/space/deepstorage) +"jF" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"jG" = ( +/obj/structure/filingcabinet, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"jM" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"jN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/survival_pod{ + dir = 4; + name = "lift doors" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"jO" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"jP" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/computer/nonfunctional, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"jT" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/vault{ + locked = 1; + req_access_txt = "512" + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"jZ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default/ranged, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"ka" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"kc" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/holosign/barrier/engineering, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"ke" = ( +/obj/structure/flora/rock/pile, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/unpowered) +"kh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/item/bedsheet, +/obj/effect/decal/remains/human, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"ko" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"kp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"kr" = ( +/obj/item/flashlight{ + pixel_y = -4; + pixel_x = 4 + }, +/obj/effect/decal/remains/human, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/unpowered) +"ks" = ( +/obj/structure/rack, +/obj/item/storage/box/donkpockets, +/obj/item/storage/box/donkpockets, +/obj/item/storage/box/donkpockets, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"ku" = ( +/obj/structure/rack, +/obj/structure/window/reinforced/polarized{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"kA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table_frame, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"kC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/shutters/radiation{ + id_tag = "DS_Rad" + }, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"kE" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"kG" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"kI" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"kM" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/railing, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"kR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"kY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/blob/normal/deepstorage, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"kZ" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"lb" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"lf" = ( +/obj/structure/table/glass/reinforced, +/obj/machinery/computer/med_data/laptop, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"lg" = ( +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"lh" = ( +/obj/effect/turf_decal/box, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"ll" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/cardboard, +/obj/item/stack/cable_coil, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"lm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/bedsheet, +/obj/effect/decal/remains/human, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"lo" = ( +/obj/item/bedsheet, +/obj/effect/decal/remains/human, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"lt" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"lE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"lH" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"lL" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"lO" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/item/trash/cheesie, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"lQ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/crematorium{ + dir = 4; + id = 123 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"lV" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"lY" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/chasm/space_ruin/airless, +/area/ruin/space/powered) +"mc" = ( +/obj/structure/barricade/wooden/crude{ + layer = 4 + }, +/obj/machinery/door/airlock/centcom{ + req_access_txt = "512" + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"mf" = ( +/obj/effect/spawner/window/plastitanium, +/obj/machinery/door/poddoor/shutters, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"mg" = ( +/turf/simulated/mineral/ancient, +/area/ruin/space/deepstorage) +"mu" = ( +/obj/structure/railing, +/obj/effect/turf_decal/stripes/line, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"mx" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"mA" = ( +/turf/simulated/floor/mineral/titanium/blue, +/area/ruin/space/deepstorage) +"mC" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/chasm/space_ruin, +/area/ruin/space/deepstorage) +"mE" = ( +/obj/machinery/door/airlock/hatch, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"mF" = ( +/obj/machinery/optable, +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"mG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"mI" = ( +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"mL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/airless, +/area/ruin/space/unpowered) +"mM" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"mN" = ( +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"mO" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/computer/nonfunctional{ + dir = 8; + name = "elevator controls" + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"mQ" = ( +/mob/living/simple_animal/hostile/spaceinfected/default/ranged, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"mR" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"mT" = ( +/obj/machinery/door/window/survival_pod{ + dir = 4; + name = "lift doors" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"mU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"na" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/firedoor, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"ne" = ( +/obj/machinery/economy/vending/cola, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"nh" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/can, +/obj/item/trash/waffles, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"nk" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"nl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/noticeboard{ + pixel_x = -32; + layer = 5 + }, +/obj/item/paper/fluff/ruins/deepstorage/log9, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"no" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/closet/cardboard, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"nt" = ( +/obj/structure/railing/cap{ + dir = 6 + }, +/obj/structure/railing/cap{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "stairs"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"nC" = ( +/obj/structure/railing, +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"nE" = ( +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"nF" = ( +/obj/item/chair/stool{ + pixel_y = -7 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"nG" = ( +/obj/structure/table/glass, +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"nJ" = ( +/obj/item/salvage/ruin/carp, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"nK" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"nM" = ( +/obj/item/kirbyplants/plant22, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"nN" = ( +/obj/structure/table/reinforced, +/obj/item/radio{ + pixel_y = 4; + pixel_x = 10 + }, +/obj/machinery/door_control{ + pixel_y = 7; + pixel_x = -6; + id = "DS_FrontGate"; + name = "front gate controls" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"nO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"nQ" = ( +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"nR" = ( +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + dir = 5; + pixel_y = 4; + pixel_x = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"nW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"ob" = ( +/obj/item/trash/tapetrash, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"oj" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"ol" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/chasm/space_ruin, +/area/ruin/space/deepstorage) +"on" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/regular{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/firstaid/regular, +/turf/simulated/floor/plasteel{ + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"or" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"os" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/port_gen/pacman/super, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"ou" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"oA" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/turf/simulated/floor/plasteel{ + icon_state = "darkred"; + dir = 9 + }, +/area/ruin/space/deepstorage) +"oB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"oE" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"oH" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"oI" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"oN" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/firedoor, +/obj/structure/railing, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"oO" = ( +/obj/item/reagent_containers/drinks/oilcan{ + pixel_y = 4 + }, +/obj/structure/table, +/obj/item/paper/fluff/ruins/deepstorage/log4{ + pixel_y = -5; + pixel_x = -8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"oP" = ( +/obj/structure/railing/corner, +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"oX" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/restraints/handcuffs/cable/zipties{ + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"pa" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2; + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"pc" = ( +/obj/structure/railing/cap{ + dir = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"pf" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/structure/table, +/obj/item/trash/syndi_cakes, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"pg" = ( +/obj/effect/spawner/window/reinforced/plasma/grilled, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"ph" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"pj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/damageturf, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"pk" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/salvage/ruin/russian, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"ps" = ( +/obj/structure/rack, +/obj/effect/turf_decal/delivery/hollow, +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"pv" = ( +/obj/structure/railing, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/unpowered) +"pz" = ( +/obj/machinery/door/airlock/command/glass{ + req_access_txt = "512"; + name = "Floor Administrator's Office" + }, +/obj/effect/mapping_helpers/airlock/polarized{ + id = "DScmoffice" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "DScmoffice1" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"pH" = ( +/obj/structure/chair/office, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"pJ" = ( +/obj/structure/reagent_dispensers/oil, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"pL" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"pP" = ( +/obj/effect/turf_decal/box, +/turf/simulated/floor/plasteel/airless, +/area/ruin/space/unpowered) +"pQ" = ( +/obj/effect/spawner/window/shuttle, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"pV" = ( +/obj/item/salvage/ruin/brick, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"pY" = ( +/obj/structure/barricade/wooden/crude{ + layer = 4 + }, +/obj/machinery/door/airlock/hatch{ + req_access_txt = "512" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"pZ" = ( +/obj/machinery/dna_scannernew, +/turf/simulated/floor/plasteel{ + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"qa" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"qc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/railing{ + dir = 10 + }, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"qm" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"qn" = ( +/turf/template_noop, +/area/space) +"qp" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"qt" = ( +/turf/simulated/floor/plasteel{ + icon_state = "black"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"qw" = ( +/mob/living/simple_animal/hostile/spaceinfected/gateopener, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/unpowered) +"qz" = ( +/obj/effect/turf_decal/delivery/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"qD" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"qF" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default/ranged, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"qG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"qK" = ( +/obj/item/chair{ + pixel_y = -5; + pixel_x = -2; + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"qQ" = ( +/obj/structure/closet/crate/can, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"qR" = ( +/obj/effect/decal/remains/human, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"qV" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"qZ" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/simulated/floor/mineral/titanium, +/area/ruin/space/deepstorage) +"rb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"re" = ( +/obj/item/kirbyplants/plant18, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"rf" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"rh" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"ri" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"rj" = ( +/turf/simulated/mineral, +/area/ruin/space/deepstorage) +"rp" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "DS_Quartermaster" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"rr" = ( +/obj/effect/turf_decal/delivery/partial, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"ru" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/powered) +"rx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/chair{ + dir = 4 + }, +/obj/item/trash/syndi_cakes, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"rA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "DS_Quartermaster" + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"rE" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred"; + dir = 8 + }, +/area/ruin/space/deepstorage) +"rI" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"rK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/hatch{ + req_access_txt = "512" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"rM" = ( +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + pixel_x = 1; + dir = 4; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"rP" = ( +/obj/structure/railing/cap{ + dir = 10 + }, +/obj/structure/railing/cap{ + dir = 1 + }, +/mob/living/simple_animal/hostile/spaceinfected/default/ranged, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"rQ" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"rS" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"rT" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"rZ" = ( +/obj/structure/table, +/obj/item/paper/fluff/ruins/deepstorage/log7, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"sc" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"sh" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/machinery/door_control{ + pixel_y = 7; + pixel_x = 4; + id = "DS_FrontGate"; + name = "Front Gate Controls" + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"sk" = ( +/turf/simulated/wall/indestructible/rock, +/area/ruin/space/deepstorage) +"sv" = ( +/obj/structure/railing{ + dir = 10 + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"sE" = ( +/obj/structure/table/glass/reinforced, +/obj/item/paper_bin, +/obj/item/pen/multi/fountain{ + pixel_x = -6 + }, +/obj/machinery/door_control{ + pixel_x = -7; + pixel_y = 10; + id = "DS_Medbay"; + name = "medical wing shutters" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"sG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"sH" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"sJ" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"sK" = ( +/obj/machinery/seed_extractor, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"sP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/structure/window/reinforced/polarized{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"sT" = ( +/obj/structure/crematorium{ + dir = 4; + id = 123 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"sV" = ( +/obj/structure/rack, +/obj/structure/window/reinforced/polarized{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"sY" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"sZ" = ( +/obj/effect/turf_decal/box, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; + dir = 1 + }, +/area/ruin/space/unpowered) +"ta" = ( +/obj/structure/table/glass, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner" + }, +/area/ruin/space/deepstorage) +"tb" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "stairs"; + dir = 4 + }, +/area/ruin/space/unpowered) +"tc" = ( +/obj/machinery/hydroponics/constructable{ + pixel_y = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"te" = ( +/obj/machinery/computer/nonfunctional, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"tf" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/suit/hooded/explorer, +/turf/simulated/floor/plasteel/airless, +/area/ruin/space/unpowered) +"tg" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"ti" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"tk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"tl" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"tm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"tp" = ( +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"tq" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default/ranged, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"tr" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"ts" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"tt" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"tu" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"tv" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"ty" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"tE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2 + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"tF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/economy/vending/coffee, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"tH" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"tJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/railing{ + dir = 10 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"tO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; + dir = 6 + }, +/area/ruin/space/unpowered) +"tP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/item/kirbyplants/plant22, +/obj/structure/sign/biohazard{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"tT" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"tU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"tY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/door/window/reinforced/normal{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"tZ" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"uf" = ( +/turf/simulated/floor/mineral/titanium, +/area/ruin/space/deepstorage) +"um" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"un" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"uo" = ( +/obj/effect/decal/cleanable/cobweb2, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"us" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/closet/body_bag, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"uu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "darkred"; + dir = 10 + }, +/area/ruin/space/deepstorage) +"uw" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"uz" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitegreencorner" + }, +/area/ruin/space/deepstorage) +"uC" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"uJ" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"uR" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"uT" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"uV" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"vc" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"vh" = ( +/obj/structure/sign/singulo{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"vi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"vo" = ( +/obj/item/salvage/ruin/russian, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"vq" = ( +/obj/machinery/door/airlock/highsecurity, +/obj/machinery/door/poddoor/shutters, +/turf/simulated/floor/mineral/plastitanium, +/area/ruin/space/deepstorage) +"vt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"vu" = ( +/obj/structure/falsewall/rock_ancient, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"vx" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"vA" = ( +/obj/machinery/light/small, +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"vC" = ( +/obj/structure/chair/office/dark, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"vF" = ( +/obj/structure/railing/cap, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"vG" = ( +/obj/structure/table/reinforced, +/obj/machinery/door_control{ + pixel_y = 7; + pixel_x = 6; + id = "DS_Tram"; + name = "tram lockdown" + }, +/obj/machinery/door_control{ + pixel_y = 7; + pixel_x = -5; + id = "DS_Quartermaster"; + name = "office lockdown" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"vH" = ( +/obj/machinery/computer/nonfunctional, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"vI" = ( +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"vL" = ( +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"vM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"vN" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"vO" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/closet/crate/can, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"vQ" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"vS" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/simulated/floor/mineral/titanium/blue, +/area/ruin/space/deepstorage) +"vX" = ( +/obj/effect/decal/cleanable/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/bed, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"vZ" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"wb" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/item/storage/box/bodybags, +/obj/structure/rack, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"wc" = ( +/obj/item/chair, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"we" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"wf" = ( +/obj/machinery/atmospherics/portable/canister/oxygen, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"wh" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"wi" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitegreencorner" + }, +/area/ruin/space/deepstorage) +"wj" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"wo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"wp" = ( +/obj/structure/table/reinforced, +/obj/item/radio{ + pixel_y = 4; + pixel_x = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"wu" = ( +/obj/structure/table, +/obj/item/mop, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"wv" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"ww" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"wz" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/ruin/space/deepstorage) +"wD" = ( +/obj/structure/sign/lifestar{ + pixel_x = -32 + }, +/turf/simulated/wall/indestructible/riveted, +/area/ruin/space/deepstorage) +"wH" = ( +/obj/machinery/door/airlock/hatch{ + req_access_txt = "512" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "DS_Quartermaster" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"wV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/nonfunctional{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"xg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/water_cooler, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"xn" = ( +/obj/structure/table/glass/reinforced, +/obj/machinery/button/windowtint{ + pixel_y = -1; + pixel_x = 7; + id = "DScmoffice" + }, +/obj/machinery/door_control{ + pixel_x = 7; + pixel_y = 8; + id = "DScmoffice1"; + name = "office shutters" + }, +/obj/item/paper/fluff/ruins/deepstorage/log5{ + pixel_x = -6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"xo" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/tray, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"xr" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default/ranged, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"xs" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"xw" = ( +/obj/structure/table/reinforced, +/obj/machinery/kitchen_machine/microwave, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"xC" = ( +/obj/machinery/door/airlock/highsecurity{ + req_access_txt = "512"; + name = "Interrogation Room" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"xF" = ( +/obj/machinery/atmospherics/unary/tank/oxygen{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"xM" = ( +/obj/machinery/door/poddoor/preopen, +/obj/machinery/door/airlock/glass{ + name = "Medical Wing"; + locked = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"xS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"xT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced, +/obj/structure/bed{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"xY" = ( +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/structure/rack, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/ruin/space/deepstorage) +"xZ" = ( +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"yb" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_ver{ + id_tag = "DS_BossStorage"; + name = "warehouse valuables storage blast door" + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"yd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/terminal, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"ye" = ( +/obj/structure/table/reinforced, +/obj/item/salvage/ruin/russian, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"yf" = ( +/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/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"yg" = ( +/obj/structure/railing, +/obj/structure/table/reinforced, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"yl" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/firedoor, +/obj/structure/railing/cap{ + dir = 8 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"ym" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"yp" = ( +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/obj/structure/railing{ + dir = 9 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"yt" = ( +/obj/structure/railing/cap{ + dir = 10 + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"yu" = ( +/obj/structure/table/reinforced, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; + dir = 4 + }, +/area/ruin/space/unpowered) +"yz" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"yB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/secure/loot, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"yC" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/powered) +"yL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution" + }, +/area/ruin/space/unpowered) +"yN" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"yP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/damageturf, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"yQ" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"yS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/chair, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"yU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/airless, +/area/ruin/space/deepstorage) +"yX" = ( +/obj/structure/railing, +/turf/simulated/floor/plasteel/airless{ + icon_state = "stairs"; + dir = 8 + }, +/area/ruin/space/unpowered) +"yY" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/chasm/space_ruin, +/area/ruin/space/powered) +"yZ" = ( +/obj/structure/railing/cap{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"zd" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/cobweb2, +/obj/item/defibrillator/loaded, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"zg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/mineral/titanium, +/area/ruin/space/deepstorage) +"zh" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Incinerator"; + req_access_txt = "512" + }, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"zj" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/closet/cardboard, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"zk" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/chasm/space_ruin, +/area/ruin/space/powered) +"zm" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"zs" = ( +/obj/structure/railing/cap, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal{ + dir = 4 + }, +/obj/item/paper/fluff/ruins/deepstorage/log6, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"zt" = ( +/obj/structure/ore_box, +/obj/effect/turf_decal/box, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; + dir = 1 + }, +/area/ruin/space/unpowered) +"zv" = ( +/obj/effect/spawner/window/reinforced/grilled, +/obj/machinery/door/poddoor/preopen, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"zy" = ( +/obj/machinery/door/airlock/vault{ + locked = 1; + req_access_txt = "512" + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"zz" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass/no_creep, +/area/ruin/space/deepstorage) +"zA" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 8 + }, +/area/ruin/space/deepstorage) +"zD" = ( +/obj/structure/barricade/wooden/crude{ + layer = 4 + }, +/obj/machinery/door/airlock/hatch{ + req_access_txt = "512" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"zG" = ( +/obj/machinery/recharge_station, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"zI" = ( +/obj/structure/blob/normal/deepstorage, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"zK" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/computer/nonfunctional, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"zL" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/table, +/obj/item/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"zN" = ( +/obj/item/paper/fluff/ruins/deepstorage/log2, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"zU" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"zX" = ( +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + dir = 4; + pixel_y = 4; + pixel_x = 1 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"zY" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Ad" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "stairs" + }, +/area/ruin/space/unpowered) +"Ai" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"Aj" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Al" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"Ao" = ( +/obj/structure/chair, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"Ap" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/deepstorage) +"As" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/vault{ + name = "Auxiliary Power Room"; + req_access_txt = "512" + }, +/obj/machinery/door/poddoor/multi_tile/impassable{ + id_tag = "DS_Engineering" + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Av" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/nonfunctional, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"Aw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/remains/human, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"Az" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"AA" = ( +/obj/machinery/door/airlock/highsecurity{ + req_access_txt = "512"; + name = "Evidence Storage" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"AB" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/powered) +"AC" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/item/radio{ + pixel_x = -4 + }, +/obj/item/radio, +/obj/item/radio{ + pixel_x = 4 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"AD" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/railing, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"AJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"AN" = ( +/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_ver{ + id_tag = "DS_FrontGate" + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/deepstorage) +"AP" = ( +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/storage/box/zipties, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"AT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"AV" = ( +/obj/effect/decal/cleanable/cobweb2, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/chair, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"AZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/light, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"Bf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner" + }, +/area/ruin/space/deepstorage) +"Bh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"Bi" = ( +/obj/structure/rack, +/obj/item/clothing/glasses/night, +/obj/item/clothing/glasses/night, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Bm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "black"; + dir = 8 + }, +/area/ruin/space/deepstorage) +"Br" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/constructable_frame/machine_frame, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"Bt" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"Bv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/blob/normal/deepstorage, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"By" = ( +/obj/effect/landmark/damageturf, +/obj/effect/landmark/damageturf, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"BB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"BC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"BE" = ( +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"BF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/kirbyplants/plant22, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"BH" = ( +/obj/item/trash/candy, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"BI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/glass/beaker/waterbottle/empty{ + pixel_y = 9; + pixel_x = -11 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"BL" = ( +/obj/effect/decal/cleanable/spiderling_remains, +/obj/machinery/iv_drip, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"BN" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/effect/turf_decal{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"BO" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"BS" = ( +/obj/structure/railing/cap{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"BU" = ( +/obj/machinery/computer/pandemic, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"BX" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/rack, +/obj/structure/window/reinforced/polarized{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/kitchen/knife/combat, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Cb" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Ce" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/backpack/explorer, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"Cf" = ( +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Ch" = ( +/obj/structure/railing, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Ci" = ( +/obj/structure/railing, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"Cj" = ( +/obj/structure/railing/cap{ + dir = 5 + }, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/unpowered) +"Ck" = ( +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"Cl" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Cm" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/firedoor, +/obj/structure/railing/cap{ + dir = 6 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Cn" = ( +/obj/structure/safe, +/obj/effect/turf_decal/delivery/hollow, +/obj/item/stack/spacecash/c500, +/obj/effect/spawner/random_spawners/ruin/deepstorage_award, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Cw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table_frame, +/obj/item/reagent_containers/drinks/sillycup{ + pixel_y = -6; + pixel_x = -6 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"CA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/bedsheet, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"CB" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/constructable_frame, +/turf/simulated/floor/mineral/titanium, +/area/ruin/space/deepstorage) +"CD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/sosjerky, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"CG" = ( +/obj/effect/landmark/damageturf, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"CI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet/royalblue, +/area/ruin/space/deepstorage) +"CO" = ( +/obj/item/chair{ + pixel_y = -5; + pixel_x = -2; + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"CP" = ( +/obj/item/reagent_containers/glass/beaker/waterbottle/empty{ + pixel_y = -5; + pixel_x = -10 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"CT" = ( +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"CV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"CY" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/hydroponics/constructable{ + pixel_y = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"CZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"Da" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"Db" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Dc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Dm" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/item/salvage/ruin/russian, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Dn" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/obj/effect/decal/cleanable/glass, +/obj/structure/blob/normal/deepstorage, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "DS_Quartermaster" + }, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"Do" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/blood/OMinus, +/obj/item/reagent_containers/iv_bag/blood/OMinus, +/obj/item/reagent_containers/iv_bag/blood/OMinus, +/obj/item/reagent_containers/iv_bag/blood/random, +/obj/item/reagent_containers/iv_bag/blood/random, +/obj/item/reagent_containers/iv_bag/blood/random, +/obj/item/reagent_containers/iv_bag/blood/random, +/obj/item/reagent_containers/iv_bag/blood/random, +/obj/item/reagent_containers/iv_bag/blood/vox, +/obj/item/reagent_containers/iv_bag/slime, +/obj/item/reagent_containers/iv_bag/salglu, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Dq" = ( +/obj/machinery/door/airlock/freezer{ + locked = 1; + name = "Medical Storage" + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"Dr" = ( +/obj/effect/turf_decal/box, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/airless, +/area/ruin/space/unpowered) +"Ds" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Dt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Du" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"Dx" = ( +/obj/structure/window/reinforced/tinted, +/obj/machinery/shower{ + dir = 8; + pixel_x = -4; + pixel_y = -4 + }, +/obj/structure/curtain/open/shower, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"Dy" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/carpet/royalblue, +/area/ruin/space/deepstorage) +"DC" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"DD" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/item/chair{ + pixel_y = -5; + pixel_x = -2 + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"DF" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/computer/nonfunctional, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"DH" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/sign/engineering{ + pixel_y = 32 + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"DJ" = ( +/obj/structure/table/glass, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"DK" = ( +/obj/machinery/light/small, +/turf/simulated/floor/chasm/space_ruin, +/area/ruin/space/deepstorage) +"DO" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/gun/energy/laser/retro, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"DR" = ( +/obj/structure/table/glass, +/obj/item/scalpel{ + pixel_y = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"DZ" = ( +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Ei" = ( +/obj/structure/table, +/obj/item/chair, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"Ej" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/bed{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"Ep" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/autolathe, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Es" = ( +/obj/machinery/biogenerator, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Eu" = ( +/obj/structure/window/reinforced/tinted, +/obj/machinery/shower{ + dir = 8; + pixel_x = -4; + pixel_y = -4 + }, +/obj/structure/curtain/open/shower, +/obj/item/bikehorn/rubberducky, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"Ew" = ( +/mob/living/simple_animal/hostile/spaceinfected/default/ranged, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Ey" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"Ez" = ( +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"EA" = ( +/obj/structure/table, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"EB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/nonfunctional, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"EI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + icon_state = "whitered"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"EJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/nonfunctional{ + dir = 4 + }, +/turf/simulated/floor/mineral/titanium, +/area/ruin/space/deepstorage) +"EL" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"EP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 8 + }, +/area/ruin/space/deepstorage) +"EX" = ( +/obj/item/gps/ruin{ + gpstag = "Bizarre Signal" + }, +/turf/simulated/wall/indestructible/riveted, +/area/ruin/space/deepstorage) +"EZ" = ( +/obj/structure/railing/cap{ + dir = 8 + }, +/obj/structure/railing/cap{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "stairs"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"Fi" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Fk" = ( +/turf/simulated/floor/chasm/space_ruin, +/area/ruin/space/deepstorage) +"Fr" = ( +/obj/effect/decal/cleanable/cobweb2, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Fw" = ( +/obj/machinery/door/airlock/glass{ + name = "Medical Wing"; + locked = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Fy" = ( +/obj/structure/rack, +/obj/item/storage/box/autoinjectors, +/obj/item/defibrillator, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"FC" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/engineeringcart, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"FE" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"FL" = ( +/obj/item/trash/cheesie, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"FN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"FS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/blob/normal/deepstorage, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"FY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Gb" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"Gg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/door_assembly/door_assembly_mhatch, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Gl" = ( +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/deepstorage) +"Gn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Gt" = ( +/obj/structure/closet/crate, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Gy" = ( +/obj/structure/railing{ + dir = 6 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"GA" = ( +/obj/item/bedsheet, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"GB" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"GD" = ( +/obj/structure/railing, +/obj/structure/table, +/obj/item/clothing/mask/gas/explorer, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"GE" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"GH" = ( +/obj/structure/table/glass, +/obj/item/toy/figure/crew/cmo{ + pixel_y = 2; + pixel_x = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"GI" = ( +/obj/structure/table/glass/reinforced, +/obj/machinery/computer/id_upgrader{ + access_to_give = list(512) + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"GJ" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"GL" = ( +/obj/structure/railing, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/powered) +"GM" = ( +/obj/machinery/deepstorage_teleporter, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"GN" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"GP" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"GR" = ( +/obj/structure/railing/corner, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"GS" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"GU" = ( +/obj/effect/decal/cleanable/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/nonfunctional{ + dir = 8 + }, +/turf/simulated/floor/mineral/titanium, +/area/ruin/space/deepstorage) +"GW" = ( +/obj/structure/railing, +/obj/structure/table/reinforced, +/obj/structure/window/reinforced, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"GX" = ( +/obj/structure/railing/cap{ + dir = 1 + }, +/obj/structure/railing/cap{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "stairs"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"Ha" = ( +/obj/item/kirbyplants/plant27, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Hj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 8 + }, +/area/ruin/space/deepstorage) +"Hl" = ( +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"Hx" = ( +/obj/machinery/door/airlock/hatch{ + req_access_txt = "512" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"HC" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"HE" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/reagent_dispensers/water_cooler, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"HK" = ( +/turf/simulated/floor/plasteel/airless, +/area/ruin/space/unpowered) +"HN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"HP" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/item/clothing/glasses/goggles, +/obj/item/reagent_containers/drinks/coffee{ + pixel_y = 14; + pixel_x = 8 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Id" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"Ik" = ( +/turf/simulated/floor/plasteel{ + icon_state = "stairs" + }, +/area/ruin/space/deepstorage) +"Ir" = ( +/obj/structure/door_assembly/door_assembly_mhatch, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Is" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/grassybush, +/turf/simulated/floor/grass/no_creep, +/area/ruin/space/deepstorage) +"Iv" = ( +/obj/structure/railing/cap{ + dir = 10 + }, +/obj/item/salvage/ruin/pirate, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"Iw" = ( +/obj/item/salvage/ruin/pirate, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"II" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default/ranged, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"IJ" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"IN" = ( +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"IP" = ( +/obj/effect/spawner/window/reinforced/grilled, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"IR" = ( +/obj/effect/turf_decal/delivery/hollow, +/obj/structure/safe, +/obj/item/stack/spacecash/c500, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"IY" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"Ja" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Je" = ( +/obj/structure/railing/corner, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/deepstorage) +"Jh" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Ji" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"Jl" = ( +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"Js" = ( +/obj/item/bedsheet, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Jx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/dark, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"Jy" = ( +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/ruin/space/deepstorage) +"JA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/railing{ + dir = 10 + }, +/obj/machinery/light, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"JF" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkred"; + dir = 6 + }, +/area/ruin/space/deepstorage) +"JH" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"JI" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"JK" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"JR" = ( +/obj/machinery/light/small, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"JU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/ruin/space/deepstorage) +"JV" = ( +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/obj/structure/railing/cap{ + dir = 9 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"JW" = ( +/obj/machinery/door/poddoor/preopen, +/obj/machinery/door/airlock/virology/glass{ + name = "Virology" + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"JZ" = ( +/obj/structure/chair, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Ka" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/table, +/obj/item/wrench, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + icon_state = "browncorner"; + dir = 8 + }, +/area/ruin/space/deepstorage) +"Kg" = ( +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"Kh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/closet/radiation, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "browncorner" + }, +/area/ruin/space/deepstorage) +"Kq" = ( +/obj/structure/railing/cap{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/unpowered) +"Kv" = ( +/obj/structure/table, +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"Kw" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Kx" = ( +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"Ky" = ( +/obj/machinery/computer/nonfunctional{ + dir = 8; + name = "elevator controls" + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"KB" = ( +/turf/simulated/floor/engine/airless, +/area/ruin/space/deepstorage) +"KD" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/mineral/titanium/blue, +/area/ruin/space/deepstorage) +"KE" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/mineral/titanium/blue, +/area/ruin/space/deepstorage) +"KI" = ( +/obj/structure/railing/cap{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "stairs"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"KP" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"KQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/noticeboard{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"KS" = ( +/obj/structure/sign/poster/official/safety_internals{ + pixel_x = 32 + }, +/obj/item/chair/stool{ + pixel_y = -7; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"KY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"La" = ( +/obj/machinery/door/window{ + dir = 4 + }, +/obj/item/salvage/ruin/brick, +/turf/simulated/floor/plasteel{ + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"Ld" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"Lf" = ( +/obj/effect/landmark/damageturf, +/obj/effect/decal/cleanable/molten_object/large, +/obj/effect/decal/cleanable/molten_object{ + pixel_y = 6; + pixel_x = -8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"Lh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/greencross{ + pixel_y = 32 + }, +/obj/effect/landmark/damageturf, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"Li" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/mineral/plastitanium, +/area/ruin/space/deepstorage) +"Lm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"Ln" = ( +/obj/structure/ore_box, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/unpowered) +"Lo" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"Lp" = ( +/obj/structure/flora/rock/jungle, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass/no_creep, +/area/ruin/space/deepstorage) +"Lq" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Lv" = ( +/obj/structure/railing, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Lz" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"LA" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"LE" = ( +/obj/item/reagent_containers/drinks/sillycup{ + pixel_y = 9; + pixel_x = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"LJ" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/multi_tile/impassable/three_tile_hor{ + id_tag = "DS_BossStorage"; + name = "warehouse blast doors" + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"LK" = ( +/obj/effect/spawner/window/reinforced/polarized/grilled{ + id = "DScmoffice" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "DScmoffice1" + }, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"LM" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"LR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/air_sensor, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"LT" = ( +/obj/item/kirbyplants/plant22, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"LX" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"LY" = ( +/obj/machinery/economy/vending/hydronutrients, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Ma" = ( +/obj/machinery/power/port_gen/pacman/super, +/turf/simulated/floor/engine, +/area/ruin/space/deepstorage) +"Mb" = ( +/obj/structure/railing, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Mf" = ( +/obj/structure/sign/atmosplaque{ + pixel_x = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Mh" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/hydroponics/constructable{ + pixel_y = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Mm" = ( +/obj/item/reagent_containers/glass/beaker/waterbottle/empty{ + pixel_y = 11; + pixel_x = 9 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Mn" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Mp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/fried_vox, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"Mr" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"MR" = ( +/obj/structure/rack, +/obj/item/paper/researchnotes, +/obj/effect/turf_decal/delivery/hollow, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"MS" = ( +/obj/machinery/light/small, +/turf/simulated/floor/chasm/space_ruin, +/area/ruin/space/powered) +"MU" = ( +/obj/effect/landmark/damageturf, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"MV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"MW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/obj/effect/landmark/damageturf, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"MZ" = ( +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 8 + }, +/area/ruin/space/deepstorage) +"Nc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "black"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"Ne" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Nh" = ( +/obj/machinery/economy/vending/hydroseeds{ + slogan_delay = 700 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"No" = ( +/obj/effect/turf_decal/stripes/line, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"Nq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/iv_drip, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Nv" = ( +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2; + dir = 1 + }, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"NI" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"NN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery/partial, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"NT" = ( +/obj/structure/closet, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"NV" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/grass/jungle/no_creep, +/area/ruin/space/deepstorage) +"NX" = ( +/obj/machinery/door_control{ + pixel_y = 24; + pixel_x = 1; + id = "DS_Storage"; + name = "storage room lockdown" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"NY" = ( +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"NZ" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"Ob" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"Od" = ( +/obj/machinery/light/small, +/turf/simulated/floor/chasm, +/area/ruin/space/deepstorage) +"Oe" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "stairs"; + dir = 8 + }, +/area/ruin/space/unpowered) +"Og" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/salvage/ruin/russian, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Oh" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Oi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/damageturf, +/obj/item/stack/sheet/metal, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"Ol" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"Oo" = ( +/obj/item/trash/chips, +/turf/simulated/floor/plasteel{ + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"Oq" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/structure/filingcabinet, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Or" = ( +/obj/structure/closet/crate, +/obj/effect/decal/cleanable/dirt, +/obj/item/t_scanner/adv_mining_scanner, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"Ot" = ( +/obj/structure/window/reinforced, +/obj/structure/bed, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"OA" = ( +/obj/structure/closet, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"OC" = ( +/obj/structure/flora/ash/rock/style_random, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"OO" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"OU" = ( +/turf/simulated/floor/plasteel{ + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"Pg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"Pi" = ( +/obj/structure/railing, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"Pl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/structure/window/reinforced/polarized{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Pm" = ( +/obj/machinery/computer/nonfunctional{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Po" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitegreencorner" + }, +/area/ruin/space/deepstorage) +"Pp" = ( +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/obj/item/organ/internal/heart, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"Pq" = ( +/obj/item/kirbyplants/plant29, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Pu" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"Px" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"PA" = ( +/obj/structure/rack, +/obj/item/grown/log{ + pixel_y = -2; + pixel_x = 2 + }, +/obj/item/grown/log{ + pixel_y = 2; + pixel_x = -2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"PC" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"PD" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"PE" = ( +/obj/structure/rack, +/obj/machinery/disco, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"PF" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"PG" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"PK" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"PR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"PU" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"PY" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + dir = 9; + pixel_y = -1; + pixel_x = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"PZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Qa" = ( +/mob/living/simple_animal/hostile/megafauna/fleshling, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"Qb" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"Qe" = ( +/obj/structure/rack, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Qh" = ( +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"Qi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/stool{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Qk" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"Qt" = ( +/obj/structure/filingcabinet, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Qx" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/chair, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Qy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/mineral/titanium/blue, +/area/ruin/space/deepstorage) +"QC" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"QD" = ( +/obj/machinery/economy/vending/medical, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"QE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"QF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"QJ" = ( +/obj/structure/table, +/obj/item/chair, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"QL" = ( +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"QN" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/simulated/floor/mineral/titanium, +/area/ruin/space/deepstorage) +"QQ" = ( +/obj/machinery/light/small{ + active_power_consumption = 0; + icon_state = "bulb-broken"; + status = 2 + }, +/turf/simulated/floor/mineral/plastitanium, +/area/ruin/space/deepstorage) +"QR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"Ra" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"Rc" = ( +/obj/structure/ore_box, +/obj/effect/turf_decal/box, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "caution"; + dir = 1 + }, +/area/ruin/space/powered) +"Rd" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"Ri" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Rj" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/grass/jungle/no_creep, +/area/ruin/space/deepstorage) +"Rl" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Rp" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/combat, +/turf/simulated/floor/plasteel{ + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Ru" = ( +/obj/structure/railing/corner, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/unpowered) +"Rw" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/closet/crate/trashcart, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Rx" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"Ry" = ( +/obj/structure/sign/custodian{ + pixel_x = 32 + }, +/mob/living/simple_animal/hostile/spaceinfected/default/ranged, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"RB" = ( +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + dir = 9; + pixel_y = -1; + pixel_x = 2 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"RC" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"RG" = ( +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"RH" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"RJ" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"RK" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"RQ" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"RY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/sofa/bench{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Sc" = ( +/obj/item/kirbyplants/plant18, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Sf" = ( +/obj/structure/door_assembly/door_assembly_hatch, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Sh" = ( +/obj/structure/table, +/obj/item/salvage/ruin/brick, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Sl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/fire{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner" + }, +/area/ruin/space/deepstorage) +"Sn" = ( +/obj/structure/table/glass, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Su" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/survival_pod{ + dir = 4; + name = "lift doors" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Sv" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Sw" = ( +/turf/simulated/floor/plasteel{ + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"Sy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Sz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"SC" = ( +/obj/machinery/door/airlock, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"SP" = ( +/obj/machinery/atmospherics/portable/canister/air, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"SX" = ( +/turf/simulated/floor/chasm/space_ruin/airless, +/area/ruin/space/deepstorage) +"SZ" = ( +/obj/item/stack/ore/glass/basalt{ + pixel_y = -9; + pixel_x = -4 + }, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/unpowered) +"Tb" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/storage/box/bodybags, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Te" = ( +/obj/structure/window/reinforced/polarized{ + dir = 4 + }, +/obj/structure/closet/crate/secure/loot, +/obj/structure/rack, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Tg" = ( +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"Th" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"Tk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/item/storage/fancy/vials, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitegreencorner" + }, +/area/ruin/space/deepstorage) +"Tl" = ( +/obj/structure/table, +/obj/item/restraints/handcuffs/cable/zipties{ + pixel_y = 6 + }, +/obj/item/radio{ + pixel_y = 4; + pixel_x = 8 + }, +/obj/structure/window/reinforced/tinted, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Tn" = ( +/obj/structure/chair/office/dark, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"To" = ( +/obj/machinery/door/airlock/centcom{ + req_access_txt = "512" + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Tq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"TE" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"TH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"TK" = ( +/obj/machinery/door/airlock/highsecurity{ + req_access_txt = "512" + }, +/obj/machinery/door/poddoor/multi_tile/impassable{ + id_tag = "DS_Storage" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"TL" = ( +/obj/item/chair{ + pixel_y = -5; + pixel_x = -2; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"TO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/filingcabinet, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"TQ" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"TT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"TW" = ( +/obj/item/trash/candy, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"TX" = ( +/obj/machinery/light/small{ + active_power_consumption = 0; + dir = 8; + icon_state = "bulb-broken"; + status = 2 + }, +/turf/simulated/floor/mineral/plastitanium, +/area/ruin/space/deepstorage) +"TY" = ( +/obj/machinery/porta_turret/syndicate/assault_pod, +/turf/simulated/floor/plasteel/airless{ + icon_state = "vault"; + dir = 8 + }, +/area/ruin/space/deepstorage) +"Ud" = ( +/obj/structure/railing/cap, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Ue" = ( +/obj/item/trash/syndi_cakes, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"Ug" = ( +/obj/structure/barricade/wooden/crude{ + layer = 4 + }, +/obj/machinery/door/airlock/highsecurity{ + req_access_txt = "512" + }, +/obj/machinery/door/poddoor/multi_tile/impassable{ + id_tag = "DS_Storage" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Uk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Us" = ( +/obj/structure/chair, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"Ut" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Uu" = ( +/obj/machinery/light/small, +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Uv" = ( +/obj/structure/sink{ + dir = 1; + pixel_y = -4 + }, +/obj/structure/mirror{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"UA" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing/cap{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"UB" = ( +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + dir = 6; + pixel_y = 4; + pixel_x = -3 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"UC" = ( +/turf/simulated/floor/mineral/plastitanium, +/area/ruin/space/deepstorage) +"UD" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"UF" = ( +/turf/simulated/wall/mineral/titanium, +/area/ruin/space/deepstorage) +"UK" = ( +/obj/structure/railing, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"UM" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"UO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"UR" = ( +/obj/effect/turf_decal/delivery/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"UT" = ( +/obj/machinery/economy/vending/coffee, +/turf/simulated/floor/plasteel{ + icon_state = "darkred"; + dir = 10 + }, +/area/ruin/space/deepstorage) +"Va" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"Vb" = ( +/obj/structure/railing{ + dir = 5 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Ve" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"Vs" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/mopbucket{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"Vu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Vv" = ( +/turf/simulated/floor/plasteel{ + icon_state = "black"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"Vw" = ( +/obj/structure/closet/body_bag, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"Vy" = ( +/obj/structure/noticeboard{ + pixel_x = 32; + layer = 5 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/item/paper/fluff/ruins/deepstorage/log8, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"VA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/closet/cardboard, +/obj/item/stack/sheet/metal{ + amount = 50; + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"VE" = ( +/obj/structure/closet/cardboard, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"VF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"VH" = ( +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"VL" = ( +/obj/structure/table/reinforced, +/obj/item/radio{ + pixel_y = 4; + pixel_x = 3 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"VP" = ( +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"VQ" = ( +/obj/structure/chair/stool, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"VS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/ruin/space/deepstorage) +"VU" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/deepstorage) +"VX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"VZ" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "whitered"; + dir = 6 + }, +/area/ruin/space/deepstorage) +"We" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Wi" = ( +/obj/structure/sign/radiation{ + pixel_x = -32 + }, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/smes{ + input_level = 10000; + inputting = 0; + output_level = 200000; + outputting = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/ruin/space/deepstorage) +"Wj" = ( +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"Wl" = ( +/obj/structure/railing{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Wn" = ( +/turf/simulated/floor/chasm, +/area/ruin/space/deepstorage) +"Wo" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Wq" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"Ww" = ( +/obj/item/kirbyplants/plant27, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Wz" = ( +/obj/effect/landmark/damageturf, +/obj/structure/holosign/barrier/engineering, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"WB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "browncorner"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"WG" = ( +/obj/machinery/door/window, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"WH" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner" + }, +/area/ruin/space/deepstorage) +"WI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"WJ" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"WL" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"WM" = ( +/obj/structure/table/glass, +/obj/item/paper_bin{ + pixel_y = 4 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"WX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whitered"; + dir = 10 + }, +/area/ruin/space/deepstorage) +"WY" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"Xa" = ( +/obj/machinery/computer/nonfunctional{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Xc" = ( +/obj/effect/spawner/window/plastitanium, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "DS_Quartermaster" + }, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"Xe" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/twimsts, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Xg" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Xj" = ( +/obj/item/kirbyplants/plant10, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Xo" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"Xp" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Xr" = ( +/obj/structure/sign/cargo{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Xt" = ( +/obj/structure/noticeboard{ + pixel_x = -32; + layer = 5 + }, +/obj/item/paper/fluff/ruins/deepstorage/log1, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/unpowered) +"Xu" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/item/food/beans, +/obj/item/food/beans, +/obj/item/food/beans, +/obj/item/food/beans, +/obj/item/food/beans, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Xy" = ( +/obj/structure/table/glass, +/obj/item/kirbyplants/plant15{ + pixel_y = 13 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"XD" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/storage/firstaid/brute{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/firstaid/brute, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"XF" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "black" + }, +/area/ruin/space/deepstorage) +"XH" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"XL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/tcomms/relay/ruskie{ + network_id = "STORAGE-RELAY" + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"XN" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"XO" = ( +/obj/structure/railing/cap{ + dir = 6 + }, +/turf/simulated/floor/catwalk/airless, +/area/ruin/space/unpowered) +"XQ" = ( +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + pixel_x = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"XS" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/restraints/handcuffs/cable/zipties{ + pixel_y = 6 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/deepstorage) +"Ya" = ( +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Yb" = ( +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Yc" = ( +/obj/structure/table/reinforced, +/obj/item/stack/tile/disco_light/thirty, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Ye" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Yk" = ( +/obj/structure/table/reinforced, +/obj/item/salvage/ruin/nanotrasen, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"Yo" = ( +/obj/structure/chair, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Yp" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/ruin/space/deepstorage) +"Yr" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/mineral/titanium, +/area/ruin/space/deepstorage) +"Yv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plating/asteroid/basalt/lowpressure, +/area/ruin/space/deepstorage) +"Yw" = ( +/obj/structure/rack, +/obj/item/stack/sheet/glass{ + amount = 50; + pixel_y = 2; + pixel_x = 2 + }, +/obj/item/stack/sheet/metal{ + amount = 50; + pixel_x = -2; + pixel_y = -2 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"Yy" = ( +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + icon_state = "white"; + dir = 1 + }, +/area/ruin/space/deepstorage) +"Yz" = ( +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/obj/structure/railing/cap{ + dir = 4 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"YA" = ( +/obj/structure/closet/crate, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"YB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whitered"; + dir = 9 + }, +/area/ruin/space/deepstorage) +"YE" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/airless, +/area/ruin/space/deepstorage) +"YN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/turf/simulated/floor/plating, +/area/ruin/space/deepstorage) +"YQ" = ( +/obj/effect/decal/cleanable/blood/splatter{ + color = "red" + }, +/turf/simulated/floor/chasm, +/area/ruin/space/deepstorage) +"YU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blackcorner" + }, +/area/ruin/space/deepstorage) +"Za" = ( +/obj/structure/table/tray, +/obj/item/storage/surgical_tray{ + pixel_y = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "white" + }, +/area/ruin/space/deepstorage) +"Zd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/blob/normal/deepstorage, +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/ruin/space/deepstorage) +"Zf" = ( +/turf/simulated/floor/plasteel{ + icon_state = "whiteredcorner" + }, +/area/ruin/space/deepstorage) +"Zp" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/deepstorage) +"Zt" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) +"Zx" = ( +/obj/structure/table/glass, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/ruin/space/deepstorage) +"Zy" = ( +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks" + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"ZA" = ( +/obj/item/chair{ + pixel_y = -5; + pixel_x = -2; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "vault" + }, +/area/ruin/space/deepstorage) +"ZH" = ( +/mob/living/simple_animal/hostile/spaceinfected/default, +/turf/simulated/floor/plating/asteroid/basalt/airless, +/area/ruin/space/unpowered) +"ZI" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/mineral/titanium/blue, +/area/ruin/space/deepstorage) +"ZJ" = ( +/obj/structure/railing, +/obj/structure/rack, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/shovel, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"ZM" = ( +/obj/machinery/dna_scannernew, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/ruin/space/deepstorage) +"ZN" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/carpet/royalblue, +/area/ruin/space/deepstorage) +"ZQ" = ( +/obj/effect/decal/cleanable/blood/tracks{ + color = "red"; + desc = "Your instincts say you shouldn't be following these."; + icon = 'icons/effects/blood.dmi'; + icon_state = "tracks"; + dir = 5; + pixel_y = 4; + pixel_x = 1 + }, +/turf/simulated/floor/catwalk, +/area/ruin/space/deepstorage) +"ZS" = ( +/obj/effect/decal/cleanable/cobweb2, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating/asteroid/basalt, +/area/ruin/space/deepstorage) +"ZU" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/simulated/floor/engine/airless, +/area/ruin/space/unpowered) +"ZW" = ( +/obj/machinery/door/airlock/hatch{ + req_access_txt = "512" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "podfloor" + }, +/area/ruin/space/deepstorage) + +(1,1,1) = {" +qn +qn +qn +qn +qn +qn +qn +qn qn -ce -ce -ab -ab -ab -ab -ab -ab -ab -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -"} -(64,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab ab +qn +qn +qn +qn +qn ab +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn ab +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn ab +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn ab ab -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn "} -(65,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ce -ce -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ce -ce -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +(2,1,1) = {" +qn +qn +qn +qn +qn +qn +qn ab +qn +qn ab ab -aa -aa -aa -"} -(66,1,1) = {" -aa -aa -aa -aa -aa -aa ab ab +qn +qn +qn ab +qn +qn +qn ab +qn +qn ab +qn +qn +qn +qn +qn +qn ab -ce -ce -ce +qn +qn +qn ab ab ab +qn +qn +ab +qn +qn +ab +qn +qn ab +qn +qn ab ab +qn +qn ab -iZ -iZ -iZ +qn +qn +qn +qn +qn ab +qn +qn ab +qn +qn +qn +qn +"} +(3,1,1) = {" +qn +qn +qn +qn +qn +qn ab ab ab @@ -5410,24 +8083,66 @@ ab ab ab ab +qn +qn +qn +qn +qn ab ab -ce -ce -ce ab ab ab +qn +qn ab +qn +qn +qn +qn +qn +qn ab ab ab +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn ab +qn +qn ab +qn +qn +qn +qn +qn +qn +qn +qn +qn +"} +(4,1,1) = {" +qn +qn +qn ab +qn +qn ab ab -iZ ab ab ab @@ -5436,19 +8151,9 @@ ab ab ab ab -aa -aa -aa -"} -(67,1,1) = {" -aa -aa -aa -aa -aa -aa ab ab +qn ab ab ab @@ -5458,7 +8163,22 @@ ab ab ab ab +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn ab +qn +qn ab ab ab @@ -5466,11 +8186,41 @@ ab iZ iZ ab +aM +aM +ab ab ab +qn +qn +qn +qn +qn ab +qn +qn +qn +qn +qn +"} +(5,1,1) = {" +qn +qn +qn +qn +qn +qn +qn ab ab +jB +jB +jB +jB +jB +jB +jB +jB ab ab ab @@ -5481,48 +8231,72 @@ ab ab ab ab -ce -ce -ce ab ab ab ab ab ab +qn ab ab ab +qn +qn +qn +qn +qn ab ab ab +aM iZ -ab iZ iZ ab +aM +aM +aM +aM ab +aM +aM ab +qn +qn +qn +qn +qn ab -ab -aa -aa -aa +qn +qn +qn "} -(68,1,1) = {" -aa -aa -aa -aa -aa +(6,1,1) = {" +qn +qn +qn +qn ab +qn +qn +qn ab +jB +TX +hN +hN +UC +UC +TX +jB ab ab ab ab ab ab +iZ ab ab ab @@ -5533,10 +8307,6 @@ ab ab ab ab -iZ -iZ -iZ -iZ ab ab ab @@ -5547,43 +8317,57 @@ ab ab ab ab +aM +aM +aM +aM ab -ce -ce -ce -ce ab ab +aM +aM ab ab +aM +aM +aM ab ab +qn +qn +qn +qn +qn +qn +qn +"} +(7,1,1) = {" +qn ab +qn +qn ab ab +qn ab ab -iZ +jB +hN +hN +BB +Bv +LR +hN +jB ab iZ iZ -iZ ab ab +iZ ab ab ab -aa -aa -aa -aa -"} -(69,1,1) = {" -aa -aa -aa -aa -aa ab ab ab @@ -5598,30 +8382,62 @@ ab ab ab ab +iZ +iZ ab +aM +aM +aM ab +bD +bD +bD ab ab +iZ ab +bD ab ab ab +iZ +iZ ab ab +qn +qn +qn +qn +qn +"} +(8,1,1) = {" +qn +qn +qn +qn ab ab +qn ab ab +jB +hN +fi +sG +GB +vx +hN +jB +iZ +iZ ab ab ab ab -ce -ce -ce -ce ab ab +iZ +iZ ab ab ab @@ -5629,65 +8445,127 @@ ab ab ab ab +iZ +iZ ab ab ab iZ iZ -iZ -iZ -ab ab ab +aM +bD +bD +bD +bD +ZH +bD +bD +iZ +iZ +bD +bD +bD +bD ab ab +iZ +iZ +iZ +aM ab -aa -aa -aa -aa +qn +qn +qn "} -(70,1,1) = {" -aa -aa -aa -aa -ab -ab +(9,1,1) = {" +qn +qn +qn +qn +qn +qn ab ab ab +jB +UC +hN +kY +FS +fV +hN +jB ab ab ab ab ab ab -ce -ce -ce ab +iZ +iZ +iZ ab ab ab ab ab ab +iZ +iZ +iZ +iZ ab +iZ +iZ +iZ ab +bD +bD +bD +bA +bD +bD +bD +bD +bD +iZ +iZ +bD +bD +bD +bD +bD +bD ab +aM +iZ +iZ ab ab +qn +qn +"} +(10,1,1) = {" +qn +qn ab ab ab ab ab ab -ce -ce -ce ab +jB +Li +UC +hN +hN +hN +QQ +jB ab ab ab @@ -5695,6 +8573,9 @@ ab ab ab ab +iZ +iZ +iZ ab ab ab @@ -5706,43 +8587,55 @@ iZ iZ iZ ab +iZ +iZ ab ab +bD +bD +bQ +bD +bD +bD +bD ab +aM +iZ ab ab -aa -aa -aa -aa -"} -(71,1,1) = {" -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab +bD +bD +ZH +bD +bD +aM +aM +iZ +iZ ab +qn +qn +qn +"} +(11,1,1) = {" +qn ab ab -ce -ce -ce -ce -ce -ce ab ab ab ab ab ab +jB +vq +jB +mf +Gb +mf +jB +jB +jB ab ab ab @@ -5751,97 +8644,147 @@ ab ab ab ab -ce -ce ab -ce ab ab ab ab ab ab +iZ +iZ +iZ ab ab ab ab +bD +bD +bD +bn +bD +bD +bD ab +aM ab +aM ab ab iZ iZ +bD +bD +bA +bD +bD ab iZ ab ab +qn ab +qn +"} +(12,1,1) = {" ab ab ab +jB +jB +jB +jB +jB +jB +jB +nk +tP +aq +nk +nk +Tn +wV +jB ab -aa -aa -aa -aa -"} -(72,1,1) = {" -aa -aa -aa -aa ab ab ab -iZ -iZ ab ab ab ab ab -ce -ce -ce -ce -ce -ce -ce -ce ab ab ab ab ab ab +iZ +iZ ab ab ab -ce -ce -ce -ce -ce -ce +bD +ZH +bD +bD +bD +bD +bD +bD +ab ab ab +iZ +ab +bD +bD ab ab ab +bD +bD +bD +bD ab ab ab ab +qn +qn ab +"} +(13,1,1) = {" ab ab +jB +jB +sT +xF +lQ +jB +jB +DJ +tT +hH +hH +hH +BF +nO +pZ +jB +jB +jB +jB +jB ab ab +iZ ab ab ab ab -iZ ab ab ab @@ -5849,781 +8792,4923 @@ ab ab ab ab -aa -aa -aa -aa -"} -(73,1,1) = {" -aa -aa -aa +bD +bD +bD +bD +bD +bD +bD +bD +bD +bD ab +iZ ab +bD +bD +bD ab iZ iZ iZ ab +bD +bD +bD +bD ab ab ab -ce -ce -ce -KB -ce qn -ce -ce -ce -ce -ce -ab -ab -ab -ab -ab -ce -ce -ce +qn +qn +"} +(14,1,1) = {" ab -ce -ce -ce ab +jB +pJ +Qh +Vw +Qh +wb +jB +ff +Pu +uz +hH +Jx +Tk +GR +jB +jB +Dt +hj +Qt +jB +jB +ab +ab +ab +sk +sk +sk +sk +sk +sk +sk ab ab ab +bD +bD +bD +bD +qw +bD +bD +bD ab +iZ +iZ +iZ ab +bD +bD ab ab iZ +iZ +iZ +iZ ab +bm +az +bm ab +aM ab +qn ab +qn +"} +(15,1,1) = {" +qn ab +jB +oO +us +Vw +Qh +cE +jB +zK +Po +TQ +hH +wi +ge +Pi +LK +Xy +LA +LA +LA +KQ +jB +ab +ab +sk +sk +Ol +Ol +zI +Ol +wv +sk +sk ab ab -ab -ab +bD +ZH +bD +bA +bD +bD +aM +aM ab iZ +iZ +aM +bD +bD +bD +bD +bn ab +iZ +iZ ab +bD +bD +bD +bD +bD +aM +aM ab -ab -ab -ab -ab -aa -aa -aa -aa +qn +qn "} -(74,1,1) = {" -aa -aa -aa +(16,1,1) = {" ab ab +jB +PA +Vw +Vw +Qh +cE +jB +Av +LX +hH +BU +DR +nQ +Pi +LK +GH +nK +ZN +lf +vh +jB +ab +sk +sk +Ol +zI +Ol +Ol +eB +un +tJ +sk ab +bD +bD +bD +bD +bD +bD +ZH +aM ab iZ iZ +aM +bA +bD +bD +bD +bD +bD ab ab ab +bD +bD +ZH +bD +bD +bD ab -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce +ab +qn +qn +qn +"} +(17,1,1) = {" ab ab +jB +VQ +Yp +Qh +Qh +cE +jB +ZM +Rd +BC +iL +Rd +wj +Ci +LK +Xj +wh +CI +xn +ft +jB +sk +sk +Ol +Ol +Ol +Ol +eB +eB +eB +AD +sk ab ab +bD +bD +bD +bn +bD +bD ab ab ab ab -iZ -iZ -iZ ab +bD +bD ab +bD +bD +bD +bD +bD +bD +bD +bD +bD +bD +bA +bD ab +iZ ab +qn +qn +"} +(18,1,1) = {" ab ab +jB +jB +jB +zh +jB +jB +jB +jB +zv +JW +zv +jB +jB +jB +jB +DF +Fi +Dy +GI +sE +sk +sk +Ol +Ol +Ol +eB +eB +eB +eB +eB +AD +sk ab ab ab +bD ab ab ab +bD +bD ab ab +bD +bD +bD ab ab ab -aa -aa -aa -aa -"} -(75,1,1) = {" -aa -aa -aa +bD +bD +bD +bD +bD +bD ab ab +bD +bD +bn +bD iZ iZ +qn +qn +"} +(19,1,1) = {" +qn ab -iZ ab +jB +ta +Zf +Sl +Bf +WH +Zf +Zf +Zf +Bf +Zf +Bf +Zf +pz +bP +aY +nK +We +sk +sk +Ol +Ol +eB +eB +eB +eB +eB +eB +eB +AD +sk +sk ab ab ab -ce -ce -SX -SX -ce -ce -ce -ce -ce +iZ +iZ +iZ +bD +bD +bD +bA +bD +bD +bD ab ab -ce -ce -ce -ce -ce -KB -ce -ce +iZ ab +bD +bD +bD +bD +aM +iZ +iZ ab +bD +bD +bD ab ab +qn +qn +"} +(20,1,1) = {" +qn ab ab +jB +Zx +qG +PR +nE +nE +nE +jZ +Ck +Ck +hu +tt +tt +jB +qQ +IJ +sk +sk +sk +Va +eB +eB +eB +eB +eB +eB +eB +oH +eB +ka +JA +sk ab ab ab ab +bD +bD +bD +bD +bD +bD +bD +bn ab iZ iZ iZ iZ -iZ -ab -ab ab +bD +ZH +bD +bD +bD +iZ +iZ +aM +bD ab ab ab +qn +qn +"} +(21,1,1) = {" +qn ab +jB +jB +jB +jB +xM +zv +xM +jB +jB +jB +jB +jB +jB +jB +jB +sk +sk +sk +Ol +eB +eB +eB +eB +eB +eB +eB +eB +NY +UB +eB +eB +AD +sk +sk ab +iZ +bD +bD +bD +bD +bD ab ab +iZ +iZ +iZ +iZ +iZ +iZ ab +bD +bD +bD +bD +bD +ZH +Ln ab +aM ab ab +qn ab -aa -aa -aa -aa +qn +qn "} -(76,1,1) = {" -aa -aa -aa -ab +(22,1,1) = {" ab ab +jB +Nv +hH +wD +YB +Jy +WX +jB +iK +Mr +GW +JU +GM +oP +jB +sk +Ol +Ol +eB +eB +eB +eB +eB +eB +eB +eB +eB +eB +eB +eB +eB +ka +tJ +sk ab +iZ +bD +bD +bD ab ab +iZ ab ab ab ab -ce -ce -ce -ce -ce -ce ab ab -ce -ce +iZ ab +bD +bD +bD ab +bD +bA +bD +bD ab ab +qn +qn +qn +qn +qn +"} +(23,1,1) = {" ab +jB +jB +hH +hH +jB +cn +Lm +Hj +jB +iK +vF +lH +kp +zs +BN +jB +jB +jB +Lz +NY +eB +eB +eB +eB +eB +eB +eB +eB +eB +eB +eB +NY +qR +AD +sk ab ab +bD +bD +bD +iZ ab ab +bp +Ce +Or +AB +GD +bD ab +bD +bD +bD ab ab ab +bD +bD +bn ab ab +qn ab +qn +qn +qn +"} +(24,1,1) = {" ab +jB +hH +hH +hH +hH +RC +Ji +MZ +jB +LA +um +Ik +BE +BE +Ik +No +LJ +FN +eB +nR +oH +NY +eB +eB +eB +rh +eB +eB +eB +eB +eB +eB +NY +AD +sk ab ab +bD +bD ab iZ +ab +aC +bM +bM +au +bM +bY +bD +bD +bD +bD +ab iZ iZ iZ -iZ -iZ -ab -ab +bD +bD +bD ab ab +qn +qn +qn ab +qn +"} +(25,1,1) = {" ab +jB +Nv +hH +hH +jB +cn +Yy +EP +jB +TT +QF +Ik +BE +ri +Ik +No +na +FN +eB +eB +NY +eB +eB +eB +rj +rj +Ol +eB +eB +eB +NY +eB +eB +AD +sk +iZ +bD +bD +bD ab ab +bg +bj +ba +bx +ar +bG +bO +bD +aO +bD +bD ab +iZ +iZ ab ab +bD ab +iZ +iZ ab -aa -aa -aa -aa -aa +qn +qn +qn +qn "} -(77,1,1) = {" -aa -aa -aa -ab -ab -ab -ab -ab -ab +(26,1,1) = {" ab +jB +jB +jB +jB +jB +PR +Lm +zA +ho +Fi +QF +Ik +yQ +BE +Ik +No +na +FN +eB +eB +eB +eB +eB +rj +rj +rj +rj +rj +eB +eB +eB +eB +eB +AD +sk +sk +bD +ZH +bD ab ab +zt +Dr +HK +br +by +bH +bD +bD +SZ +bn +bD +iZ +iZ +iZ ab ab ab ab +iZ +iZ +iZ ab +qn +qn +qn +"} +(27,1,1) = {" ab +jB +Ej +xT +aL +xT +cn +gr +Hj +ho +Fi +BS +tg +KS +Iv +Ra +jB +jB +jB +Lz +oH +eB +eB +eB +rj +Ol +Ol +rj +Ol +Ol +eB +eB +eB +eB +ka +AZ +sk +bD +bD +bD ab ab +Rc +pP +mL +bs +by +bH +bD +bD +bA +bD +bD ab +aM +iZ ab ab ab ab ab +iZ +iZ ab ab +qn +qn +"} +(28,1,1) = {" ab +jB +BL +Pg +fS +rf +Pg +rM +dL +ho +Fi +QF +Mb +jB +jB +jB +jB +rj +Ol +Ol +eB +eB +NY +eB +eB +rj +Ol +Ol +Ol +rj +rj +Va +eB +eB +eB +eB +sk +bn +bD +bA +bD ab +sZ +tf +HK +mL +yL +yt +DD +bD +bD +bD +aM +aM +aM +aM +aM +bD +bD +bD ab ab +iZ +iZ ab +qn +qn +"} +(29,1,1) = {" ab +jB +lg +ic +jp +nW +XQ +cs +ir +jB +Fi +Xr +jB +jB +sk +sk +sk +sk +sk +Ol +Ol +eB +eB +eB +eB +eB +Ol +rj +rj +rj +rj +eB +eB +eB +eB +eB +sk ab +bD +bD +bD ab +af +aT +yu +bI +tO +bM +bY +bD +aM +aM +aM +aM +aM +bD +bD +bD +bD +bD +bD ab ab +iZ +iZ +qn +qn +"} +(30,1,1) = {" ab +jB +vX +Ot +hY +Ot +Zd +nW +eh +Fw +Fi +ag +jB +sk +sk +Fk +Fk +Fk +sk +sk +sk +sk +Ol +eB +eB +eB +eB +eB +rj +rj +eB +eB +eB +eB +eB +eB +sk +ab +ab +iZ +ab +ab +Jl +bM +bM +XO +tb +tb +aM +aM +aM +aM +aM +bD +bD +bD +bD +bD +bD +bD +bD +bD ab ab +iZ +qn ab +"} +(31,1,1) = {" ab -iZ -iZ +jB +jB +jB +jB +jB +Zd +eh +eh +gS +eh +QF +jB +sk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +sk +sk +Th +Qk +eB +eB +eB +eB +vQ +eB +eB +eB +NY +eB +eB +sk ab ab iZ iZ ab ab +bz +bh +bu +bD +bD +aM +aM +aM +ai +bD +bD +bD +bn +bD +aM +ke +SZ +bn +bA +bD ab +qn +qn +qn +"} +(32,1,1) = {" ab +jB +QD +tT +NZ +jB +Kv +eh +By +Lf +Oi +eh +jB +sk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +sk +rj +gP +Qk +eB +eB +eB +eB +eB +eB +eB +eB +eB +eB +sk +sk ab +aM +aM +aM ab +bD +bD +bD +bD +bD +bD +aM +aM +ai +bw +bD +bD +bD +bD +Xt +bD +ck +bL +Id +Id +Id +qn +qn +qn +"} +(33,1,1) = {" ab +jB +nG +VH +tT +Dq +QR +Pg +eh +jB +eh +um +jB +sk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +sk +rj +rj +bT +eB +eB +eB +eB +eB +eB +eB +eB +eB +eB +eB +sk +sk +aM +aM ab +iZ +iZ +bD +bQ +bA +bD +bD +aM +ai +ai +bw +bw +bD +bD +bD +bD +bD +bn +bd +bM +bM +bM +bM +bM +qn +"} +(34,1,1) = {" ab +jB +nQ +ht +wc +jB +GS +Pg +hz +jB +Lh +ag +jB +sk +sk +Fk +Fk +Fk +Fk +Fk +Fk +MS +sk +rj +Ol +gP +Qk +eB +NY +fp +eB +eB +eB +eB +eB +eB +eB +Ol +sk +aM ab ab -ab -aa -aa -aa -aa -aa -aa +iZ +bD +bD +bn +bD +bD +bD +aM +ai +bw +bw +bw +bD +bD +bD +kr +bD +aS +eS +hn +hn +hn +hn +qn +qn "} -(78,1,1) = {" -aa -aa -aa -ab -ab +(35,1,1) = {" ab +jB +zd +tT +Za +jB +Zd +Pp +Bf +jB +ym +QF +jB +sk +sk +zk +Fk +Fk +Fk +Fk +Fk +Fk +sk +sk +Ol +Ol +bT +eB +eB +oH +eB +eB +Qa +eB +eB +NY +eB +Ol +sk ab +iZ ab +bD +bD +bD +bD +bD +bD +bn +bD +ai +bR +bw +bw +bD +bD +bD +bA +bD +bD +bD +bn ab ab +qn +qn +qn +"} +(36,1,1) = {" ab +jB +jB +jB +jB +jB +cA +EI +VZ +jB +LA +QF +jB +sk +sk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +sk +rj +Ol +Yv +ph +eB +eB +eB +eB +eB +eB +eB +eB +Ol +Ol +sk ab +iZ ab +bD +bD +bD +bD +bD +bD +bD +bD +ai +bw +bw +bD +bD +bD +bD +bn +bQ +ke +bD ab ab ab +qn +qn ab +"} +(37,1,1) = {" ab ab ab ab +jB +jB +jB +jB +jB +jB +Fi +ag +jB +sk +sk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +sk +rj +rj +Ol +gP +Qk +eB +eB +eB +eB +eB +eB +eB +Ol +sk +ai +aM ab +bD +bA +bD +bD +bD +bD +bD +bD +bD +ai +bw +bw +bD +bD +bD +bD +bD +bD +bD ab ab +iZ ab +qn +iZ +iZ +"} +(38,1,1) = {" +qn ab ab ab ab ab ab +sk +sk +jB +jB +Hx +jB +sk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +sk +rj +rj +rj +rj +bT +eB +eB +qV +eB +eB +eB +qV +Ol +sk +aM +aM +aM +aM +bD +bn +bD +bD +Kq +bD +bD +ai +ai +bw +bw +bD +bn +bD +bD +bD +aM +aM ab ab +iZ +qn +qn ab +iZ +"} +(39,1,1) = {" +qn ab ab ab ab ab +sk +sk +Fk +Fk +OO +bU +zU +sk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +sk +sk +sk +sk +rj +rj +rj +eB +jB +fF +fF +fF +jB +sk +sk +aM +aM +aM +aM +bD +bD +bQ +bD +aF +Oe +bD +ai +aM +bw +bA +bD +bD +bD +bD +Ru +aM +aM ab ab +iZ +qn +qn ab +qn +"} +(40,1,1) = {" +qn +qn ab ab ab ab ab +sk +Fk +Fk +qD +bU +xr +sk +zk +Fk +Fk +Fk +Fk +Fk +Fk +MS +sk +sk +Tg +Tg +sk +sk +sk +jB +jB +jB +na +na +yb +jB +jB +jB +aM +aM +aM +aM +aM +aM +bD +bD +bF +bN +ai +ai +aM +aM +bD +bD +bD +bD +bD +pv +bw +aM +aM ab ab +qn +qn +qn +qn +"} +(41,1,1) = {" +qn ab +qn ab ab ab +sk +sk +zk +Fk +jO +bU +FY +sk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +sk +Tg +OC +Tg +Tg +sk +sk +jB +PE +kE +Sz +wo +wo +oj +gq +jB +aM +aM +aM +aM +aM +ai +ai +bw +cZ +bN +ai +aM +aM +aM +ru +bD +bD +Kq +bD +pv +bw +bw +aM ab ab +qn ab +qn +qn +"} +(42,1,1) = {" +qn +qn +qn ab ab +sk +sk +Fk +Fk +Fk +no +ah +zU +sk +sk +Fk +Wn +pQ +pQ +pQ +Fk +Fk +sk +Tg +Tg +Tg +Tg +Tg +sk +jB +Yc +aY +ps +nK +Cn +aY +pk +jB +aM +aM +aM +ai +ai +ai +bw +bw +cZ +bN +ai +ai +aM +aM +bn +bD +bD +aF +Oe +yX +bw +am +aM ab +qn +qn +qn +qn +qn +"} +(43,1,1) = {" +qn +qn +qn +qn ab +sk +Fk +Fk +Fk +Fk +qD +bU +uT +bP +oN +Fk +pQ +pQ +EJ +pQ +pQ +Fk +yp +uV +Dm +UA +cm +Tg +sk +jB +ye +LA +IR +Fi +MR +LA +Yk +jB +ai +ai +ai +ai +bw +bw +bw +bw +cZ +bN +jA +ai +aM +aM +aM +bD +bD +cZ +bN +mu +bw +bw +aM +aM +qn +qn +qn ab -aa -aa -aa -aa -aa -aa +qn "} -(79,1,1) = {" -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab +(44,1,1) = {" +qn +qn ab +qn ab +sk +Fk +Fk +Fk +Fk +lt +bU +bU +FY +oN +Fk +UF +Yr +uf +QN +UF +Fk +Yb +nK +aQ +Ch +Tg +Tg +Tg +jB +jB +zY +nK +aY +nK +rT +jB +jB +ai +ai +bw +bw +bw +bw +bw +bw +Xo +Qb +bN +ai +aM +bw +bw +bw +bD +cZ +rb +mu +bw +am +aM +aM ab +qn +qn +qn +qn +"} +(45,1,1) = {" +qn +qn +qn +qn +qn +sk +Fk +Fk +Fk +Fk +zj +tr +bU +zU +oN +DK +UF +KE +zg +vS +UF +ol +Yb +VP +Ew +Ch +Tg +sk +Tg +Tg +jB +jB +jB +jB +jB +jB +jB +sk +ai +lY +bw +bw +bw +bw +hk +bw +bw +cZ +bN +ai +bw +bw +bw +bw +aN +aZ +bN +UK +bw +bw +aM +aM ab ab +qn +qn +qn +"} +(46,1,1) = {" +qn ab +qn +qn +qn +sk +sk +Fk +Fk +Fk +Fk +Qx +bU +zU +yl +Gl +hW +Qy +uf +Qy +hW +Gl +JV +aY +bU +JR +sk +sk +Tg +Tg +mg +sk +sk +ai +ai +ai +ai +ai +bw +bw +bw +bw +bw +bw +ai +bw +bw +cZ +bN +mu +bw +bw +bw +bw +bi +bN +bN +kM +bw +bw +bw +bw +aM ab ab +qn +qn +"} +(47,1,1) = {" +qn +qn +qn ab +qn +qn +sk +sk +zk +Fk +Fk +Qx +aQ +zU +Cm +Gl +hW +mA +uf +mA +hW +Gl +Yz +nK +bU +ts +sk +mg +mg +vu +mg +sk +ai +ai +lY +bw +bw +bw +bw +bw +bw +bw +am +ai +ai +ai +bw +Xo +Qb +ZU +PG +bw +bw +ak +aZ +bN +bN +ae +qc +bw +bw +bD +aM +iZ +iZ ab +qn +"} +(48,1,1) = {" +qn +qn +qn +qn +qn ab ab +sk +sk +Fk +Fk +Qx +aQ +zU +oN +DK +UF +KD +uf +ZI +UF +ol +Yb +Ya +bU +ts +sk +mg +mg +Tg +fn +sk +sk +bw +bw +bw +bw +bw +bw +bw +bw +bw +ai +ai +ai +ai +bR +bw +cZ +bN +ZU +bV +aJ +aZ +bN +rb +rb +bN +ae +Px +Ad +eP +bD iZ iZ -ab iZ +qn +"} +(49,1,1) = {" +qn ab +qn +qn +qn ab ab ab +sk +Fk +Fk +WJ +aQ +zU +oN +Fk +UF +CB +zg +qZ +UF +Fk +Yb +nK +bU +Uu +sk +sk +pf +Tg +Tg +FL +sk +bw +bw +jB +jB +jB +jB +FC +sv +bw +ai +ai +ai +bn +bw +bw +cZ +bN +aW +aj +aj +Qb +rb +bW +aj +aj +cd +Ey +aA +Cj +bD ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa +qn "} -(80,1,1) = {" -aa -aa -aa -aa -ab -ab +(50,1,1) = {" +qn +qn +qn ab ab ab ab -iZ -iZ -iZ ab +sk +zk +Fk +Xp +bU +FY +oN +Fk +pQ +pQ +GU +pQ +pQ +Fk +Yb +VP +bU +hV +Wn +sk +rZ +TW +Tg +Du +sk +bw +jB +jB +Ma +os +jB +jB +ad +bw +bn +ai +ai +bw +bw +ak +aZ +aW +bE +bw +bw +bd +bM +ad +bw +bw +bw +bw +bw +bD +bD +bD ab -iZ -iZ -iZ ab +qn +"} +(51,1,1) = {" +qn +qn +qn ab ab ab ab -iZ -iZ -iZ -iZ -iZ ab +sk +Fk +Fk +Mn +vo +Rl +oN +Fk +Fk +pQ +pQ +pQ +Fk +Fk +Yb +nK +bU +MW +Wn +sk +sk +Tg +Ue +OC +sk +bw +jB +ca +vI +vI +bo +jB +GL +bw +bw +ai +ai +bR +bw +cZ +aW +bE +bw +hk +if +Gl +Gl +AN +aw +hk +bw +bw +bD +bD +bD ab ab ab +qn +"} +(52,1,1) = {" +qn +qn ab ab ab ab ab ab +sk +sk +Fk +sk +sk +jB +jB +jB +jB +jB +jB +jB +jB +jB +ct +nK +bc +Wn +Od +sk +sk +ZS +vc +sk +sk +ai +jB +pg +es +kC +pg +jB +bk +sv +bw +bw +bw +bw +bw +cZ +mu +bw +bw +jB +jB +av +Gl +Je +jB +jB +bw +bw +bD +bD +bD ab ab +qn +qn +"} +(53,1,1) = {" +qn +qn ab ab ab ab ab ab +sk +sk +sk +sk +jB +jB +kh +Az +lO +Az +Cw +rx +xw +jB +jB +aY +hh +Wn +Wn +Wn +sk +sk +sk +sk +ai +ai +jB +Kh +VX +Gn +Ka +jB +jB +bk +kc +sv +bw +bw +ak +aZ +mu +bw +jB +jB +SX +ce +KB +bv +SX +jB +jB +bw +bD +yC +bD ab +iZ +qn +qn +"} +(54,1,1) = {" +qn ab ab ab +jB +jB +jB +jB +jB +sk +sk +sk +jB +KP +LE +Og +QL +ob +cX +bl +kA +vi +jB +CG +zX +Wn +Wn +Od +sk +jB +sk +ai +ai +ai +jB +aV +ax +bl +yd +Wi +jB +jB +jB +DH +aJ +aJ +aZ +aW +bE +jB +jB +bR +SX +YE +iM +bX +SX +am +jB +jB +jB +jB +jB ab ab ab +qn +"} +(55,1,1) = {" +qn ab ab +jB +jB +Es +sK +Mh +fk +sk +sk +rQ +jB +nh +JZ +QL +lo +Js +bl +jf +xo +Oo +jB +CG +bU +Wz +Wn +Wn +Wn +jB +jB +ai +ai +ai +jB +ap +yf +UO +vt +kR +WB +iq +As +bM +aW +aj +aj +bE +bw +jB +SX +SX +SX +ce +yU +bX +SX +SX +TY +jB +Oq +Wo +jB +jB ab ab +qn +"} +(56,1,1) = {" +qn ab ab +jB +OU +QL +uJ +Bm +Bm +jB +uC +QF +zD +Ei +Rw +BH +CA +BI +zN +QL +Xe +La +jB +ih +zX +Wn +Wn +Wn +Wn +Wn +jB +ai +ai +ai +jB +ao +sh +HP +Ne +pc +lh +aP +jB +aH +mu +bw +bw +bw +am +jB +SX +SX +SX +ce +KB +bX +SX +SX +SX +bK +EB +ay +fj +jB ab ab -aa -aa -aa -aa -aa -aa +qn "} -(81,1,1) = {" -aa -aa -aa -ab +(57,1,1) = {" +qn ab ab +jB +Bt +tc +Vv +bl +QL +IN +LA +ag +jB +AV +Aw +gJ +CP +lm +Mm +CD +cN +mU +jB +nK +ZQ +jy +Wn +MU +YQ +qm +jB +ai +ai +ai +jB +eF +LM +WG +Ik +Mf +dA +xY +jB +ai +ai +bw +bw +bw +bw +jB +SX +SX +SX +ce +iM +bv +SX +SX +SX +bK +nN +ay +WM +jB ab ab ab +"} +(58,1,1) = {" +qn ab ab +jB +Sw +fk +Vv +Qi +or +jB +LA +ag +jB +jB +Br +Mp +Iw +mM +GA +uJ +yz +gC +jB +nJ +pj +VP +CG +ne +yP +wh +jB +jB +jB +jB +jB +jB +jB +jB +jB +jB +jB +jB +jB +ai +ai +ai +bw +bw +bw +jB +SX +SX +SX +ce +yU +bX +SX +SX +SX +bK +GN +wh +XL +jB ab iZ iZ -iZ -iZ -iZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -iZ -ab -ab -ab -ab +"} +(59,1,1) = {" +qn +qn ab +jB +Hl +fk +Nc +nF +QL +IP +Fi +ag +EA +jB +jB +jB +jB +jB +jB +Br +QJ +RJ +jB +bP +Zp +tF +zL +rI +yS +Yo +jB +vZ +sc +JH +jB +Us +JH +Zt +jB +JH +JH +je +jB +ai +ai +ai +ai +ai +bw +jB +SX +SX +SX +ce +yU +bX +SX +SX +TY +jB +jr +Wo +EX +jB ab ab -aa -aa -aa -aa +iZ +"} +(60,1,1) = {" +qn ab ab +jB +PK +tc +Vv +DZ +bl +IP +LA +QF +jB +jB +Ha +aY +nK +lV +jB +jB +Ug +jB +jB +jB +jB +jB +jB +co +jB +jB +jB +ti +dC +yB +jB +Da +ew +sY +jB +jF +ew +DC +jB +ai +ai +ai +ai +ai +ai +jB +jB +bR +SX +ce +iM +bv +SX +am +jB +jB +jB +aR +jB +jB ab ab ab +"} +(61,1,1) = {" +qn ab ab +jB +lE +bl +TE +qt +qt +IP +LA +QF +jB +jG +bP +tq +Ut +aY +jB +Uk +bP +cT +jB +Wj +Ve +jB +Sc +bP +rS +jB +jB +jB +pY +jB +jB +jB +ZW +jB +jB +jB +ZW +jB +jB +jB +jB +jB +jB +jB +jB +jB +jB +jB +SX +ce +KB +bv +SX +jB +jB +bJ +wh +wh +bP +jB ab ab ab +"} +(62,1,1) = {" +qn ab ab +jB +jB +LY +Nh +CY +fk +jB +mQ +ag +jB +dX +RQ +ch +vG +nK +wH +nK +bU +rQ +jB +XH +JH +rK +aY +bc +rQ +jB +VE +GE +Fi +hK +cU +GE +LA +cU +qa +Fi +uT +CV +jB +jB +dg +EL +hU +PD +zm +PC +xg +jB +jB +VU +aI +Ap +jB +jB +cb +aB +pH +bU +aG +jB ab ab +qn +"} +(63,1,1) = {" +qn +qn ab ab +jB +jB +jB +jB +jB +jB +uC +ag +jB +TO +Yo +bP +Oh +nK +Xc +ty +bU +uw +jB +dT +vN +jB +eI +vL +QF +Hx +wh +bU +RB +Zy +Zy +bU +cR +Zy +Zy +bU +Zy +wh +Hx +dO +TE +bl +QL +bl +bl +QL +Tq +jB +jB +zy +jB +jT +jB +jB +an +zz +ZA +bU +ag +jB ab +qn +qn +"} +(64,1,1) = {" +qn +qn ab +jB +jB +jB +Bh +tZ +jB +jB +Fi +ag +jB +HE +Yo +bP +aU +aY +Xc +ty +Lq +hd +jB +jB +jB +jB +lL +bU +QF +jB +ju +nK +VP +WL +PU +Gt +nK +Ry +aY +eI +XN +Ja +jB +bf +CZ +WI +WI +em +XF +Ob +em +jB +Vu +eu +xs +eu +bC +jB +bS +NV +WL +bU +ag +jB ab ab +qn +"} +(65,1,1) = {" +qn ab ab +jB +Kx +SC +xZ +tu +jB +Fi +QF +ag +jB +zU +bP +wh +LA +Cb +Dn +PZ +Lq +hd +jB +Us +kG +jB +BO +bU +aG +jB +jB +jB +ZW +jB +jB +jB +eq +jB +jB +jB +jB +jB +jB +vO +VA +JI +JI +rP +oI +oI +yZ +To +bc +al +wh +al +bU +To +wh +Fi +nK +bU +be +jB +iZ ab -aa -aa -aa -aa -aa -aa +qn "} -(82,1,1) = {" -aa -aa -aa +(66,1,1) = {" +qn +qn ab +jB +jB +jB +VS +tu +mE +qF +ag +rQ +jB +rp +dk +rp +rA +jB +jB +ty +bU +hd +jB +XH +ew +ZW +ty +bU +ag +Sh +jB +XH +ew +OA +jB +Vs +BE +wu +jB +Pq +tk +IJ +jB +Uk +bU +vL +bU +bU +bU +vL +nM +jB +bP +wh +dd +bP +bP +jB +LT +aQ +bU +bU +Sn +jB ab +qn +qn +"} +(67,1,1) = {" +qn ab ab +jB +Kg +SC +tu +fD +jB +LA +ag +jB +jB +AC +GX +XD +KI +vA +jB +ty +cj +gp +jB +Zt +pV +RK +ty +bU +MV +rI +jB +Zt +Ao +kG +jB +NT +ri +gZ +jB +LA +bU +zU +Hx +UR +qz +qz +kZ +kZ +aY +bU +ag +mc +aQ +iJ +mN +iJ +bU +To +bP +nK +nK +bU +tm +jB ab ab +qn +"} +(68,1,1) = {" +qn ab ab +jB +jB +jB +VS +Uv +jB +LA +dh +jB +Fy +Nq +aY +aY +nK +aQ +nC +nK +cj +cP +jB +jB +jB +jB +ty +Lq +MV +jB +jB +jB +jB +jB +jB +jB +jB +jB +jB +TT +bU +tE +jB +sJ +iX +sJ +jB +Kw +aY +aQ +rQ +jB +Fr +aQ +bU +bU +ja +jB +cc +Rj +nK +bU +QF +jB ab ab +qn +"} +(69,1,1) = {" +qn ab ab +jB +zG +SC +xZ +Uv +jB +LA +ag +jB +Do +zU +hB +kI +RG +Fi +EZ +nK +ah +LA +LA +VF +bP +jB +aY +Lq +Mr +RK +aK +QE +iG +RY +QC +Ww +QE +mx +mx +zU +Ew +TL +jB +jP +HN +vC +tY +rr +aY +bU +cx +jB +jB +aD +aD +aD +jB +jB +Is +fU +pH +ah +QF +jB ab ab +qn +"} +(70,1,1) = {" +qn ab ab +jB +jB +jB +xZ +tu +mE +LA +CT +jB +ll +zU +Qe +Rp +on +Fi +yg +aY +bU +bU +Lq +bU +wh +TK +ty +Lq +Mr +Sf +bP +aQ +bU +vL +bU +bU +Lq +bU +Lq +Lq +bU +FY +Hx +TE +bl +JK +dj +NN +Zp +wh +hZ +jB +vH +VL +bZ +fK +Xa +jB +bb +Lp +pH +aQ +aG +jB ab ab +qn +"} +(71,1,1) = {" +qn ab ab +jB +tZ +tu +xZ +pL +jB +Fi +ag +jB +Tb +FY +nK +Xu +ks +LA +nt +nK +bU +ty +PZ +BO +IJ +jB +lL +Lq +QF +jB +jN +mT +mT +Ky +mT +Su +ee +Vy +QF +MV +Lq +mx +jB +ko +cJ +jB +jB +jB +jB +hp +jB +jB +te +hm +gK +eZ +Pm +jB +jB +gO +bP +wh +wh +jB ab ab ab +"} +(72,1,1) = {" +qn +qn ab +jB +jB +Dx +Eu +jo +jB +uC +ag +jB +Bi +bU +FY +FY +FY +bU +ZJ +PZ +bU +MV +jB +jB +jB +jB +Cl +aQ +tH +jB +HC +bU +Lv +jB +HC +bU +Lv +jB +Yo +wh +Lq +Wo +jB +jB +jB +jB +RK +jB +oA +rE +uu +jB +jB +jB +aR +jB +jB +jB +jB +jB +jB +hp +jB +jB ab ab ab +"} +(73,1,1) = {" +qn +qn ab ab +jB +jB +jB +jB +jB +Hx +jB +jB +jB +wf +AP +Yw +Ep +SP +jB +ty +Lq +ag +jB +vN +JH +jB +aY +bU +rQ +jB +HC +bU +Lv +jB +HC +bU +Lv +jB +Yo +aK +Lq +wh +bP +aK +RK +RK +RK +jB +AT +dR +Ld +sH +UM +gF +Ld +Ld +mR +Ld +Ld +ou +tv +gE +UT +jB ab -aa -aa -aa -aa -aa -aa -aa -aa ab ab +"} +(74,1,1) = {" +qn +qn +qn ab ab ab ab +sk +bU +bU +sk +sk +jB +jB +jB +jB +jB +jB +jB +ty +Lq +QF +jB +fN +ew +ZW +nK +bU +aG +jB +Vb +mO +Gy +jB +Vb +mO +Gy +jB +aK +aK +Lq +Ds +Ds +Gg +jB +as +RK +Ir +Ai +Lq +Lq +aQ +bU +Ew +aQ +bU +bU +aQ +vL +aQ +jv +YA +wz +jB ab ab +qn +"} +(75,1,1) = {" +qn ab +qn +qn ab ab +sk +sk +yN +bU +OC +sk +sk +sk +sk +Fk +yY +sk +jB +Ds +aK +aK +jB +Wq +ew +jB +hg +wh +bP +jB +bK +bK +bK +jB +bK +bK +bK +jB +UD +bP +ww +wh +mI +jB +jB +tU +RK +RK +AT +Al +Ai +dt +Ai +Ai +GJ +FE +oB +Ai +GJ +Ai +Ai +GJ +JF +jB ab ab +qn +"} +(76,1,1) = {" +qn +qn +qn +qn +qn +qn +sk +Tg +bU +bU +bU +Tg +sk +sk +Fk +Fk +Fk +Fk +jB +jB +TK +jB +jB +jB +jB +jB +jB +jB +eq +jB +ol +Fk +Fk +mC +Fk +Fk +Fk +Wn +mG +aK +Lq +aK +rI +jB +YN +tU +ri +jB +jB +jB +AA +jB +jB +jB +xC +jB +jB +jj +jB +iX +sJ +jB +jB +jB ab ab +qn +"} +(77,1,1) = {" +qn +qn +qn +qn +qn +qn +sk +Tg +bU +aQ +bU +bU +bU +bU +bU +aQ +aQ +bU +bU +nl +LA +GP +LA +LA +Fi +NI +LA +Fi +Fi +cY +Fk +Fk +Fk +Fk +Fk +Fk +Wn +Wn +PF +aK +cj +aK +Ds +jB +tU +RK +tU +eN +jB +ku +wh +Pl +jB +QF +bP +VP +im +YU +pa +TE +YU +fX +jB ab ab +qn ab -aa -aa -aa -aa -aa -aa -aa -aa "} -(83,1,1) = {" -aa -aa -ab +(78,1,1) = {" +qn +qn ab +qn +qn +qn +sk +OC +Tg +bU +bU +bU +Ew +Ri +aQ +aQ +bU +bU +Ud +aX +Dc +AJ +Dc +AJ +AJ +AJ +Xg +Cf +QF +Ye +Db +Fk +Fk +Fk +Fk +Fk +Wl +uV +vM +aK +xS +bP +jB +jB +jB +jB +tU +RK +jB +BX +bP +iu +jB +PY +mF +aY +et +YU +bl +we +QL +qp +jB ab ab +qn +qn +"} +(79,1,1) = {" +qn +qn +qn +qn ab +qn +sk +sk +Tg +Tg +Tg +OC +sk +sk +sk +sk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +jB +jB +Ez +Fi +Sv +oI +KY +II +oI +oI +Sy +wh +jB +jB +jB +jB +jB +sk +ab +jB +eN +RK +jB +sV +dd +Te +jB +dJ +bP +VP +Tl +YU +fw +XS +ia +tl +jB ab +qn +qn +qn +"} +(80,1,1) = {" +qn +qn +qn +qn +qn +qn +qn +sk +sk +IY +Tg +sk +sk ab +qn +sk +bB +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +bK +bK +Pq +uR +qK +jM +Jh +ag +uR +re +bK +bK +Fk +Fk +Fk +Fk +sk +ab +jB +RK +ri +jB +sP +bP +fZ +jB +Aj +wp +Aj +jB +tp +ac +dn +DO +oX +jB ab +qn +qn +qn +"} +(81,1,1) = {" +qn +qn +qn +qn ab +qn +qn +qn +sk +sk +sk +sk +qn +qn +qn +sk +sk +Fk +Fk +Fk +bB +Fk +Fk +sk +sk +bB +Fk +Fk +bK +bK +jB +bK +bK +bK +bK +jB +bK +bK +Fk +Fk +bB +Fk +sk +sk +ab +jB +jB +jq +jB +sV +wh +TH +jB +CO +oE +lb +jB +NX +bl +QL +bl +qp +jB ab +qn ab +qn +"} +(82,1,1) = {" +qn +qn +qn ab ab ab +qn +qn +qn +qn +qn +qn +qn +qn ab +qn +sk +sk +sk +sk +sk +sk +sk +sk +sk +sk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +sk +sk +sk +ab +ab +ab +jB +jB +jB +jB +uo +aY +aR +zU +jn +FY +aR +Rx +Lo +WY +RH +jB +jB ab +qn +qn +qn +"} +(83,1,1) = {" +qn +qn +qn ab ab ab +qn +qn ab +qn +qn +qn ab +qn +qn +qn +qn +qn +qn ab ab +qn +qn +qn +qn +sk +sk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +Fk +bB +Fk +Fk +sk +sk +qn +qn +qn ab ab ab ab ab +jB +jB +jB +jB +jB +jB +jB +jB +jB +jB +jB +jB +jB ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa ab ab +qn ab +"} +(84,1,1) = {" +qn +qn +qn +qn +qn ab +qn ab +qn +qn ab +qn +qn +qn +qn +qn +qn ab +qn +qn +qn +qn +qn +qn ab +qn +sk +sk +sk +sk +bB +Fk +Fk +Fk +Fk +sk +sk +sk +sk +sk +qn +qn ab +qn +qn ab ab ab ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(84,1,1) = {" -aa -aa ab ab ab -aa -aa ab ab -aa ab ab ab @@ -6634,120 +13719,76 @@ ab ab ab ab +qn +qn +qn +"} +(85,1,1) = {" +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn ab +qn +qn +qn +qn +qn ab +sk +sk +sk +sk +sk +sk +sk +qn ab +qn +qn ab +qn +qn ab +qn +qn +qn +qn ab ab +qn ab ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa ab +qn ab ab ab ab ab +qn +qn ab +qn +qn ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(85,1,1) = {" -aa -aa -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn "} diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index a4ab4898cfb3..19781232e209 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -41341,6 +41341,7 @@ pixel_x = 3; pixel_y = -3 }, +/obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, @@ -52029,6 +52030,15 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/aft) +"dLj" = ( +/obj/machinery/door/poddoor/preopen{ + name = "Biohazard Shutter"; + id_tag = "RnDChem" + }, +/obj/effect/spawner/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/engine, +/area/station/science/misc_lab) "dLF" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/poddoor/preopen{ @@ -52106,10 +52116,6 @@ icon_state = "purplecorner" }, /area/station/hallway/primary/starboard/east) -"dMK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/wall, -/area/station/public/toilet/unisex) "dMM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/effect/spawner/random_spawners/oil_maybe, @@ -64148,8 +64154,6 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/station/command/teleporter) "jzZ" = ( @@ -79554,11 +79558,6 @@ /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plating, /area/station/science/toxins/mixing) -"qRE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/wall, -/area/station/command/meeting_room) "qRU" = ( /obj/machinery/atmospherics/unary/vent_pump/siphon/on{ dir = 1; @@ -124830,7 +124829,7 @@ aWZ thN xVe qcB -dMK +aUQ cts csD csD @@ -125061,7 +125060,7 @@ brb bpt jju nvC -qRE +bxl bxl lOo lOo @@ -143863,7 +143862,7 @@ cDG cFU cHp cIF -cJP +dLj oEK cLe tWz diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index 49ecc4ed49ef..cb6d9f302ade 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -6784,6 +6784,12 @@ /mob/living/simple_animal/hostile/gorilla/cargo_domestic{ name = "Forklift" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -7989,6 +7995,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aYU" = ( @@ -10347,9 +10356,6 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -10357,6 +10363,9 @@ name = "External Airlock Access" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/hallway/primary/central/east) "bly" = ( @@ -24234,17 +24243,10 @@ icon_state = "brown" }, /area/station/supply/qm) -"cEu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/supply/office) "cEv" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -24488,9 +24490,6 @@ }, /area/station/medical/chemistry) "cFv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/structure/disposalpipe/segment, /obj/structure/morgue{ dir = 8 @@ -37496,6 +37495,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -37596,11 +37598,9 @@ }, /area/station/security/checkpoint/secondary) "eZa" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/airlock/public/glass{ name = "Central Access" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -39938,14 +39938,12 @@ dir = 4 }, /obj/item/storage/fancy/donut_box, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/structure/cable/orange{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/station/security/main) "fRK" = ( @@ -46776,11 +46774,11 @@ /turf/simulated/floor/transparent/glass/reinforced/plasma, /area/station/engineering/control) "ieP" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/mineral/ancient, -/area/station/maintenance/port2) +/area/station/supply/office) "ifa" = ( /turf/simulated/wall/indestructible/riveted, /area/station/science/toxins/test) @@ -48449,12 +48447,6 @@ icon_state = "dark" }, /area/station/supply/office) -"iFb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/space, -/area/space) "iFj" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -51491,14 +51483,12 @@ "jAN" = ( /obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, /obj/structure/cable/orange{ d1 = 1; d2 = 8; icon_state = "1-8" }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -54589,10 +54579,10 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/south) "kyi" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 + dir = 6 }, -/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "kyo" = ( @@ -56993,7 +56983,9 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -62112,10 +62104,6 @@ icon_state = "wood-broken7" }, /area/station/service/bar) -"mRO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/wall, -/area/station/hallway/primary/central/east) "mRS" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/structure/sign/securearea, @@ -64966,12 +64954,6 @@ icon_state = "darkyellow" }, /area/station/engineering/break_room) -"nNa" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/wall, -/area/station/supply/office) "nNd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/light/small{ @@ -68413,9 +68395,6 @@ }, /area/station/hallway/primary/fore/west) "oTn" = ( -/obj/machinery/atmospherics/unary/portables_connector{ - dir = 1 - }, /obj/machinery/atmospherics/unary/portables_connector, /obj/machinery/atmospherics/portable/canister/air, /turf/simulated/floor/plating, @@ -71030,16 +71009,6 @@ /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, /area/station/supply/miningdock) -"pIz" = ( -/obj/structure/morgue, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/landmark/spawner/rev, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/medical/morgue) "pII" = ( /obj/machinery/suit_storage_unit/rd/secure, /obj/machinery/alarm/directional/east, @@ -84569,6 +84538,9 @@ icon_state = "4-8" }, /obj/effect/spawner/random_spawners/dirt_frequent, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "ucV" = ( @@ -93467,20 +93439,6 @@ icon_state = "asteroidplating" }, /area/station/maintenance/fore2) -"wEY" = ( -/obj/machinery/atmospherics/meter, -/obj/machinery/atmospherics/pipe/simple/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/unary/vent_pump/siphon/on{ - dir = 1; - external_pressure_bound = 0; - autolink_id = "o2_out"; - internal_pressure_bound = 4000; - pressure_checks = 2 - }, -/turf/simulated/wall/r_wall, -/area/station/engineering/atmos) "wFa" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/item/radio/intercom{ @@ -94098,9 +94056,6 @@ /obj/item/roller, /obj/item/roller, /obj/item/roller, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -94109,6 +94064,7 @@ d2 = 8; icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/plasteel{ icon_state = "whiteblue" }, @@ -115720,7 +115676,7 @@ vkl vkl gtU vkl -xTj +vkl lyI lyI fPc @@ -120273,7 +120229,7 @@ nIF xdr cEM cEM -ieP +cEM hoF xWx xWx @@ -126737,7 +126693,7 @@ bPp bDR bNn vsE -wEY +bPp bDR bUl vsE @@ -135197,7 +135153,7 @@ dwz gzG dwz dwz -mRO +dwz uNG uNG uNG @@ -141851,7 +141807,7 @@ rNK rNK rNK rNK -iFb +rNK rNK rNK rNK @@ -149538,7 +149494,7 @@ scI any cAn cBv -cEu +pdF cHF ayP cSE @@ -149794,7 +149750,7 @@ woa scI any aQA -hZJ +ieP cEv cIr kkk @@ -150316,7 +150272,7 @@ any any any fue -nNa +any ucH gaX any @@ -153194,7 +153150,7 @@ bil wxI uyn uyn -pIz +lzO gGb biN ivK diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index c77375516e74..1939e07b0136 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -17258,14 +17258,12 @@ d2 = 4; icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, /obj/structure/cable{ d1 = 1; d2 = 8; icon_state = "1-8" }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -31904,7 +31902,7 @@ /area/station/engineering/ai_transit_tube) "bNY" = ( /obj/item/kirbyplants, -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, /turf/simulated/floor/plasteel{ @@ -34311,7 +34309,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/engineering/ai_transit_tube) "bUd" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, /turf/simulated/floor/plasteel/dark, @@ -72538,6 +72536,9 @@ /obj/machinery/door/airlock/mining{ name = "Expedition Headquarters" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/plasteel, /area/station/supply/expedition) "iFv" = ( @@ -90698,7 +90699,7 @@ }, /area/station/hallway/primary/central/north) "sWx" = ( -/obj/effect/spawner/airlock/w_to_e, +/obj/effect/spawner/airlock/e_to_w, /turf/simulated/wall, /area/station/engineering/ai_transit_tube) "sWI" = ( diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index 1418a5a502fa..7738b3e73500 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -2133,7 +2133,6 @@ "aqc" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/mapping_helpers/airlock/autoname, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, @@ -25109,6 +25108,8 @@ d2 = 2; icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" }, @@ -25397,12 +25398,6 @@ layer = 4; pixel_y = 32 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -25416,6 +25411,12 @@ d2 = 8; icon_state = "2-8" }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -57884,17 +57885,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/wood, /area/station/public/mrchangs) -"jjG" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ - dir = 8 - }, -/obj/machinery/door/poddoor{ - id_tag = "ToxinsVenting"; - name = "Toxins Venting Bay Door"; - power_state = 0 - }, -/turf/space, -/area/station/science/toxins/mixing) "jjL" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, @@ -123657,7 +123647,7 @@ bMg mcw rfK cEK -jjG +agK agK nec cOp diff --git a/code/__DEFINES/gamemode.dm b/code/__DEFINES/gamemode.dm index fbc7c2b91131..ac55af989b92 100644 --- a/code/__DEFINES/gamemode.dm +++ b/code/__DEFINES/gamemode.dm @@ -55,6 +55,7 @@ #define SPECIAL_ROLE_XENOMORPH_SENTINEL "Xenomorph Sentinel" #define SPECIAL_ROLE_XENOMORPH_LARVA "Xenomorph Larva" #define SPECIAL_ROLE_ZOMBIE "Zombie" +#define SPECIAL_ROLE_TOURIST "Tourist" #define SPECIAL_ROLE_EVENTMISC "Event Role" // Constants used by code which checks the status of nuclear blasts during a diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index b7138d067920..c9c199b2acd2 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -25,6 +25,7 @@ #define ROLE_HOG_GOD "hand of god: god" // We're prolly gonna port this one day or another #define ROLE_HOG_CULTIST "hand of god: cultist" #define ROLE_TRADER "trader" +#define ROLE_TOURIST "Tourist" #define ROLE_VAMPIRE "vampire" // Role tags for EVERYONE! #define ROLE_DEMON "demon" @@ -63,6 +64,7 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_ELITE, // Lavaland Elite ROLE_TRADER, // Trader ROLE_TRAITOR = /datum/game_mode/traitor, // Traitor + ROLE_TOURIST, // Tourist ROLE_VAMPIRE = /datum/game_mode/vampire, // Vampire ROLE_ALIEN, // Xenomorph ROLE_WIZARD = /datum/game_mode/wizard // Wizard diff --git a/code/__HELPERS/tool_helpers.dm b/code/__HELPERS/tool_helpers.dm index c88ee7c6046e..b4e3ca5164a4 100644 --- a/code/__HELPERS/tool_helpers.dm +++ b/code/__HELPERS/tool_helpers.dm @@ -1,35 +1,27 @@ //Quick type checks for some tools // Why are these not defines? -/proc/iswrench(O) - if(istype(O, /obj/item/wrench)) - return TRUE - return FALSE -/proc/iswelder(O) - if(istype(O, /obj/item/weldingtool)) - return TRUE - return FALSE +/proc/iswrench(obj/item/O) + return istype(O) && O.tool_behaviour == TOOL_WRENCH -/proc/iswirecutter(O) - if(istype(O, /obj/item/wirecutters)) - return TRUE - return FALSE +/proc/iswelder(obj/item/O) + return istype(O) && O.tool_behaviour == TOOL_WELDER -/proc/isscrewdriver(O) - if(istype(O, /obj/item/screwdriver)) - return TRUE - return FALSE +/proc/iswirecutter(obj/item/O) + return istype(O) && O.tool_behaviour == TOOL_WIRECUTTER -/proc/ismultitool(O) - if(istype(O, /obj/item/multitool)) - return TRUE - return FALSE +/proc/isscrewdriver(obj/item/O) + return istype(O) && O.tool_behaviour == TOOL_SCREWDRIVER + +/proc/ismultitool(obj/item/O) + return istype(O) && O.tool_behaviour == TOOL_MULTITOOL + +/proc/iscrowbar(obj/item/O) + return istype(O) && O.tool_behaviour == TOOL_CROWBAR /proc/iscoil(O) - if(istype(O, /obj/item/stack/cable_coil)) - return TRUE - return FALSE + return istype(O, /obj/item/stack/cable_coil) /proc/ispowertool(O)//used to check if a tool can force powered doors if(istype(O, /obj/item/crowbar/power) || istype(O, /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw)) diff --git a/code/__HELPERS/trait_helpers.dm b/code/__HELPERS/trait_helpers.dm index 7ca2893038cc..e8e7aaead060 100644 --- a/code/__HELPERS/trait_helpers.dm +++ b/code/__HELPERS/trait_helpers.dm @@ -268,6 +268,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NO_THROWN_MESSAGE "no_message_when_thrown" /// Makes the item not display a message on storage insertion #define TRAIT_SILENT_INSERTION "silent_insertion" +/// Makes an item active, this is generally used by energy based weapons or toggle based items. +#define TRAIT_ITEM_ACTIVE "item_active" /// A surgical tool; when in hand in help intent (and with a surgery in progress) won't attack the user #define TRAIT_SURGICAL "surgical_tool" @@ -394,6 +396,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define STATION_TRAIT_FORESTED "station_trait_forested" #define STATION_TRAIT_VENDING_SHORTAGE "station_trait_vending_shortage" #define STATION_TRAIT_MESSY "station_trait_messy" +#define STATION_TRAIT_TRIAI "station_trait_triai" //***** TURF TRAITS *****// /// Removes slowdown while walking on these tiles. diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 3a6f55150783..8db9526d5255 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -124,7 +124,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_XENO_INTERACTABLE" = TRAIT_XENO_INTERACTABLE, "TRAIT_NO_THROWN_MESSAGE" = TRAIT_NO_THROWN_MESSAGE, "TRAIT_SILENT_INSERTION" = TRAIT_SILENT_INSERTION, - "TRAIT_HYPOSPRAY_IMMUNE" = TRAIT_HYPOSPRAY_IMMUNE + "TRAIT_HYPOSPRAY_IMMUNE" = TRAIT_HYPOSPRAY_IMMUNE, + "TRAIT_ITEM_ACTIVE" = TRAIT_ITEM_ACTIVE ), /turf = list( diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 848cf74f4d7b..0d4179e4c11a 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -81,7 +81,7 @@ M.lastattackerckey = user.ckey user.do_attack_animation(M) - . = !M.attacked_by(src, user, def_zone) + . = M.attacked_by(src, user, def_zone) add_fingerprint(user) @@ -101,7 +101,12 @@ /obj/attacked_by(obj/item/I, mob/living/user) var/damage = I.force if(I.force) - user.visible_message("[user] has hit [src] with [I]!", "You hit [src] with [I]!") + user.visible_message( + "[user] has hit [src] with [I]!", + "You hit [src] with [I]!", + "You hear something being struck by a weapon!" + ) + if(ishuman(user)) var/mob/living/carbon/human/H = user damage += H.physiology.melee_bonus @@ -125,11 +130,19 @@ /mob/living/simple_animal/attacked_by(obj/item/I, mob/living/user) if(!I.force) - user.visible_message("[user] gently taps [src] with [I].",\ - "This weapon is ineffective, it does no damage!") + user.visible_message( + "[user] gently taps [src] with [I].", + "This weapon is ineffective, it does no damage!", + "You hear a gentle tapping." + ) + else if(I.force < force_threshold || I.damtype == STAMINA) - visible_message("[I] bounces harmlessly off of [src].",\ - "[I] bounces harmlessly off of [src]!") + visible_message( + "[I] bounces harmlessly off of [src].", + "[I] bounces harmlessly off of [src]!", + "You hear something being struck by a weapon!" + ) + else return ..() @@ -159,6 +172,9 @@ var/attack_message = "[src] has been [message_verb][message_hit_area] with [I]." if(user in viewers(src, null)) attack_message = "[user] has [message_verb] [src][message_hit_area] with [I]!" - visible_message("[attack_message]",\ - "[attack_message]") - return 1 + visible_message( + "[attack_message]", + "[attack_message]", + "You hear someone being attacked with a weapon!" + ) + return TRUE diff --git a/code/_onclick/observer_onclick.dm b/code/_onclick/observer_onclick.dm index 44ead52d45bc..1b3955b5de94 100644 --- a/code/_onclick/observer_onclick.dm +++ b/code/_onclick/observer_onclick.dm @@ -107,7 +107,3 @@ var/obj/machinery/computer/teleporter/com = S.teleporter_console if(com && com.target) user.forceMove(get_turf(com.target)) - -/obj/effect/portal/attack_ghost(mob/user as mob) - if(target) - user.forceMove(get_turf(target)) diff --git a/code/controllers/subsystem/SSticker.dm b/code/controllers/subsystem/SSticker.dm index 42b1b960a38a..f5170711167b 100644 --- a/code/controllers/subsystem/SSticker.dm +++ b/code/controllers/subsystem/SSticker.dm @@ -284,6 +284,12 @@ SUBSYSTEM_DEF(ticker) Master.SetRunLevel(RUNLEVEL_GAME) // Generate the list of empty playable AI cores in the world + if(HAS_TRAIT(SSstation, STATION_TRAIT_TRIAI)) + for(var/obj/effect/landmark/tripai in GLOB.landmarks_list) + if(tripai.name == "tripai") + if(locate(/mob/living) in get_turf(tripai)) + continue + GLOB.empty_playable_ai_cores += new /obj/structure/AIcore/deactivated(get_turf(tripai)) for(var/obj/effect/landmark/start/ai/A in GLOB.landmarks_list) if(locate(/mob/living) in get_turf(A)) continue diff --git a/code/datums/components/defibrillator.dm b/code/datums/components/defibrillator.dm index be017d71dd29..e1c8011fe17e 100644 --- a/code/datums/components/defibrillator.dm +++ b/code/datums/components/defibrillator.dm @@ -1,6 +1,9 @@ /** * A component for an item that attempts to defibrillate a mob when activated. */ + +#define DEFIB_TIME 5 SECONDS + /datum/component/defib /// If this is being used by a borg or not, with necessary safeties applied if so. var/robotic @@ -24,6 +27,18 @@ var/emag_proof /// uid to an item that should be making noise and handling things that our direct parent shouldn't be concerned with. var/actual_unit_uid + /// Sound for defib windup. + var/charge_sound = 'sound/machines/defib_charge.ogg' + /// Sound when the defib is successful. + var/success_sound = 'sound/machines/defib_success.ogg' + /// Sound when the defib fails. + var/fail_sound = 'sound/machines/defib_failed.ogg' + /// Sound when the defib shocks the patient. + var/zap_sound = 'sound/machines/defib_zap.ogg' + /// Sound when the defib's safety is enabled. + var/safety_on_sound = 'sound/machines/defib_saftyon.ogg' + /// Sound when the defib's safety is disabled. + var/safety_off_sound = 'sound/machines/defib_saftyoff.ogg' /** * Create a new defibrillation component. @@ -78,11 +93,11 @@ if(safety) safety = FALSE unit.visible_message("[unit] beeps: Safety protocols disabled!") - playsound(get_turf(unit), 'sound/machines/defib_saftyoff.ogg', 50, 0) + playsound(get_turf(unit), safety_off_sound, 50, FALSE) else safety = TRUE unit.visible_message("[unit] beeps: Safety protocols enabled!") - playsound(get_turf(unit), 'sound/machines/defib_saftyon.ogg', 50, 0) + playsound(get_turf(unit), safety_on_sound, 50, FALSE) /datum/component/defib/proc/on_emag(obj/item/unit, mob/user) SIGNAL_HANDLER // COMSIG_ATOM_EMAG_ACT @@ -134,7 +149,7 @@ if(application_result & COMPONENT_BLOCK_DEFIB_DEAD) user.visible_message("[defib_ref] beeps: Unit is unpowered.") - playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0) + playsound(get_turf(defib_ref), fail_sound, 50, FALSE) return if(on_cooldown) @@ -179,12 +194,8 @@ SEND_SOUND(target, sound('sound/effects/genetics.ogg')) target.throw_alert("cling_defib", /atom/movable/screen/alert/changeling_defib_revive, alert_args = list(parent, target)) - if(!do_after(user, 3 SECONDS * speed_multiplier, target = target)) // Beginning to place the paddles on patient's chest to allow some time for people to move away to stop the process - busy = FALSE - return - user.visible_message("[user] places [parent] on [target]'s chest.", "You place [parent] on [target]'s chest.") - playsound(get_turf(defib_ref), 'sound/machines/defib_charge.ogg', 50, 0) + playsound(get_turf(defib_ref), charge_sound, 50, FALSE) if(ghost && !ghost.client && !QDELETED(ghost)) log_debug("Ghost of name [ghost.name] is bound to [target.real_name], but lacks a client. Deleting ghost.") @@ -192,13 +203,13 @@ var/signal_result = SEND_SIGNAL(target, COMSIG_LIVING_PRE_DEFIB, user, parent, ghost) - if(!do_after(user, 2 SECONDS * speed_multiplier, target = target)) // Placed on chest and short delay to shock for dramatic effect, revive time is 5sec total + if(!do_after(user, DEFIB_TIME * speed_multiplier, target = target)) // Placed on chest and short delay to shock for dramatic effect, revive time is 5sec total busy = FALSE return if(istype(target.wear_suit, /obj/item/clothing/suit/space) && !combat) user.visible_message("[defib_ref] buzzes: Patient's chest is obscured. Operation aborted.") - playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0) + playsound(get_turf(defib_ref), fail_sound, 50, FALSE) busy = FALSE return @@ -216,7 +227,7 @@ else if(heart.linked_organ.status & ORGAN_DEAD) user.visible_message("[defib_ref] buzzes: Resuscitation failed - Heart necrosis detected.") if(!heart || (heart.linked_organ.status & ORGAN_DEAD)) - playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0) + playsound(get_turf(defib_ref), fail_sound, 50, FALSE) busy = FALSE return @@ -226,21 +237,21 @@ set_cooldown(cooldown) user.visible_message("[defib_ref] pings: Cardiac arrhythmia corrected.") target.visible_message("[target]'s body convulses a bit.", "You feel a jolt, and your heartbeat seems to steady.") - playsound(get_turf(defib_ref), 'sound/machines/defib_zap.ogg', 50, TRUE, -1) - playsound(get_turf(defib_ref), "bodyfall", 50, 1) - playsound(get_turf(defib_ref), 'sound/machines/defib_success.ogg', 50, 0) + playsound(get_turf(defib_ref), zap_sound, 50, TRUE, -1) + playsound(get_turf(defib_ref), "bodyfall", 50, TRUE) + playsound(get_turf(defib_ref), success_sound, 50, FALSE) busy = FALSE return if(target.stat != DEAD && !HAS_TRAIT(target, TRAIT_FAKEDEATH)) user.visible_message("[defib_ref] buzzes: Patient is not in a valid state. Operation aborted.") - playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0) + playsound(get_turf(defib_ref), fail_sound, 50, FALSE) busy = FALSE return target.visible_message("[target]'s body convulses a bit.") - playsound(get_turf(defib_ref), "bodyfall", 50, 1) - playsound(get_turf(defib_ref), 'sound/machines/defib_zap.ogg', 50, TRUE, -1) + playsound(get_turf(defib_ref), "bodyfall", 50, TRUE) + playsound(get_turf(defib_ref), zap_sound, 50, TRUE, -1) ghost = target.get_ghost(TRUE) // We have to double check whether the dead guy has entered their body during the above // Run through some quick failure states after shocking. @@ -276,7 +287,7 @@ if(failure_message) user.visible_message(failure_message) - playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0) + playsound(get_turf(defib_ref), fail_sound, 50, FALSE) else // Heal each basic damage type by as much as we're under -100 health var/damage_above_threshold = -(min(target.health, HEALTH_THRESHOLD_DEAD) - HEALTH_THRESHOLD_DEAD) @@ -299,10 +310,10 @@ if(target.getBrainLoss() >= 100) // If you want to treat this with mannitol, it'll have to metabolize while the patient is alive, so it's alright to bring them back up for a minute - playsound(get_turf(defib_ref), 'sound/machines/defib_saftyoff.ogg', 50, 0) + playsound(get_turf(defib_ref), safety_off_sound, 50, FALSE) user.visible_message("[defib_ref] chimes: Minimal brain activity detected, brain treatment recommended for full resuscitation.") else - playsound(get_turf(defib_ref), 'sound/machines/defib_success.ogg', 50, 0) + playsound(get_turf(defib_ref), success_sound, 50, FALSE) user.visible_message("[defib_ref] pings: Resuscitation successful.") @@ -340,7 +351,7 @@ "[user] touches you with [parent], and you feel a strong jolt!") target.apply_damage(60, STAMINA) target.KnockDown(10 SECONDS) - playsound(get_turf(parent), 'sound/machines/defib_zap.ogg', 50, TRUE, -1) + playsound(get_turf(parent), zap_sound, 50, TRUE, -1) target.emote("gasp") if(combat && prob(heart_attack_chance)) target.set_heartattack(TRUE) @@ -362,7 +373,7 @@ target.set_heartattack(TRUE) target.visible_message("[user] has touched [target] with [parent]!", \ "[user] touches you with [parent], and you feel a strong jolt!") - playsound(get_turf(parent), 'sound/machines/defib_zap.ogg', 50, TRUE, -1) + playsound(get_turf(parent), zap_sound, 50, TRUE, -1) SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK, 100) set_cooldown(cooldown) return @@ -398,5 +409,4 @@ "You feel a powerful shock travel up your [affecting.hand ? affecting.get_organ("l_arm") : affecting.get_organ("r_arm")] and back down your [affecting.hand ? affecting.get_organ("r_arm") : affecting.get_organ("l_arm")]!") affecting.set_heartattack(TRUE) - - +#undef DEFIB_TIME diff --git a/code/datums/components/parry.dm b/code/datums/components/parry.dm index f0d82912a7ce..285353bd8418 100644 --- a/code/datums/components/parry.dm +++ b/code/datums/components/parry.dm @@ -16,6 +16,10 @@ var/no_parry_sound /// Text to be shown to users who examine the parent. Will list which type of attacks it can parry. var/examine_text + /// Does this item have a require a condition to meet before being able to parry? This is for two handed weapons that can parry. (Default: FALSE) + var/requires_two_hands = FALSE + /// Does this item require activation? This is for activation based items or energy weapons. + var/requires_activation = FALSE /datum/component/parry/RegisterWithParent() RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(equipped)) @@ -32,7 +36,7 @@ if(ismob(I.loc)) UnregisterSignal(I.loc, COMSIG_HUMAN_PARRY) -/datum/component/parry/Initialize(_stamina_constant = 0, _stamina_coefficient = 0, _parry_time_out_time = PARRY_DEFAULT_TIMEOUT, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = 2 SECONDS, _no_parry_sound = FALSE) +/datum/component/parry/Initialize(_stamina_constant = 0, _stamina_coefficient = 0, _parry_time_out_time = PARRY_DEFAULT_TIMEOUT, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = 2 SECONDS, _no_parry_sound = FALSE, _requires_two_hands = FALSE, _requires_activation = FALSE) if(!isitem(parent)) return COMPONENT_INCOMPATIBLE @@ -41,6 +45,8 @@ stamina_coefficient = _stamina_coefficient parry_cooldown = _parry_cooldown no_parry_sound = _no_parry_sound + requires_two_hands = _requires_two_hands + requires_activation = _requires_activation if(islist(_parryable_attack_types)) parryable_attack_types = _parryable_attack_types else @@ -73,6 +79,10 @@ /datum/component/parry/proc/start_parry(mob/living/L) SIGNAL_HANDLER var/time_since_parry = world.time - time_parried + if(requires_two_hands && !HAS_TRAIT(parent, TRAIT_WIELDED)) // If our item has special conditions before being able to parry. + return + if(requires_activation && !HAS_TRAIT(parent, TRAIT_ITEM_ACTIVE)) // If our item requires an activation to be able to parry. [E-sword / Teleshield, etc.] + return if(time_since_parry < parry_cooldown) // stops spam return diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index a7d7fb33062c..280213036183 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -42,6 +42,16 @@ /client/vv_edit_var(var_name, var_value) //called whenever a var is edited switch(var_name) + // I know we will never be in a world where admins are editing client vars to let people bypass TOS + // But guess what, if I have the ability to overengineer something, I am going to do it + if("tos_consent") + return FALSE + // Dont fuck with this + if("cui_entries") + return FALSE + // or this + if("jbh") + return FALSE if("vars") return FALSE if("var_edited") diff --git a/code/datums/diseases/advance/symptoms/viral.dm b/code/datums/diseases/advance/symptoms/viral.dm index 8ac3723c55b5..1614d092fc3a 100644 --- a/code/datums/diseases/advance/symptoms/viral.dm +++ b/code/datums/diseases/advance/symptoms/viral.dm @@ -54,7 +54,7 @@ BONUS transmittable = 3 level = 3 -/datum/symptom/viraladaptation/Activate(datum/disease/advance/A) +/datum/symptom/viralevolution/Activate(datum/disease/advance/A) ..() if(prob(SYMPTOM_ACTIVATION_PROB)) var/mob/living/M = A.affected_mob diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index 0ffdc3b81e4a..b4f1cfac350f 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -1579,3 +1579,50 @@ qdel(H.GetComponent(/datum/component/footstep)) // they're literally stealth var/datum/martial_art/cqc/CQC = new() CQC.teach(H) + +/datum/outfit/admin/tourist + name = "Tourist" + uniform = /obj/item/clothing/under/misc/redhawaiianshirt + back = /obj/item/storage/backpack/satchel/withwallet + belt = /obj/item/storage/belt/fannypack + head = /obj/item/clothing/head/boaterhat + l_ear = /obj/item/radio/headset + glasses = /obj/item/clothing/glasses/sunglasses_fake + shoes = /obj/item/clothing/shoes/sandal + id = /obj/item/card/id/assistant + box = /obj/item/storage/box/survival + pda = /obj/item/pda/clear + + backpack_contents = list( + /obj/item/camera = 1, + /obj/item/camera_film = 1, + /obj/item/stack/spacecash/c200 = 1, + /obj/item/storage/fancy/cigarettes/cigpack_robustgold = 1, + /obj/item/lighter/zippo = 1 + ) + +/datum/outfit/admin/tourist/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + + // Sets the ID and secHUD icon! + var/obj/item/card/id/I = H.wear_id + if(istype(I)) + apply_to_card(I, H, list(ACCESS_MAINT_TUNNELS), name, "tourist") + // Checking if the person has an account already + var/datum/money_account/account = H.mind.initial_account + if(!account) + // If they don't, we create a new one and get it's account number. + SSjobs.CreateMoneyAccount(H, null, null) + account = H.mind.initial_account + I.associated_account_number = account.account_number + I.associated_account_number = account.account_number + H.sec_hud_set_ID() + + // PDA setup + var/obj/item/pda/P = H.wear_pda + if(istype(P)) + P.owner = H.real_name + P.ownjob = "Tourist" + P.name = "PDA-[H.real_name] ([P.ownjob])" diff --git a/code/datums/ruins/space_ruins.dm b/code/datums/ruins/space_ruins.dm index a939f952dd27..41d93e14769a 100644 --- a/code/datums/ruins/space_ruins.dm +++ b/code/datums/ruins/space_ruins.dm @@ -59,6 +59,7 @@ evidence of construction, hook it covertly into the \ telecommunications network and hope for the best." cost = 2 + allow_duplicates = FALSE // this shouldn't be spawning more than once anymore /datum/map_template/ruin/space/derelict1 id = "derelict1" diff --git a/code/datums/spell.dm b/code/datums/spell.dm index c510c180ed18..3c226aa476ca 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -20,6 +20,8 @@ GLOBAL_LIST_INIT(spells, typesof(/datum/spell)) user.ranged_ability.remove_ranged_ability(user) return TRUE //TRUE for failed, FALSE for passed. user.face_atom(A) + if(targeting) + targeting.InterceptClickOn(user, params, A, src) return FALSE /datum/spell/proc/add_ranged_ability(mob/user, msg) @@ -269,13 +271,6 @@ GLOBAL_LIST_INIT(spells, typesof(/datum/spell)) /datum/spell/proc/AltClick(mob/user) return Click() -/datum/spell/InterceptClickOn(mob/user, params, atom/A) - . = ..() - if(.) - return - if(targeting) - targeting.InterceptClickOn(user, params, A, src) - ///Lets the spell have a special effect applied to it when upgraded. By default, does nothing. /datum/spell/proc/on_purchase_upgrade() return diff --git a/code/datums/spells/bloodcrawl.dm b/code/datums/spells/bloodcrawl.dm index e5c99fac868a..b1ab9853096c 100644 --- a/code/datums/spells/bloodcrawl.dm +++ b/code/datums/spells/bloodcrawl.dm @@ -102,7 +102,10 @@ /datum/spell/bloodcrawl/proc/sink_animation(atom/A, mob/living/L) var/turf/mob_loc = get_turf(L) - mob_loc.visible_message("[L] sinks into [A].") + mob_loc.visible_message( + "[L] sinks into [A].", + "You hear something sinking into a thick liquid." + ) playsound(mob_loc, 'sound/misc/enter_blood.ogg', 100, TRUE, -1) new /obj/effect/temp_visual/dir_setting/bloodcrawl(mob_loc, L.dir, "jaunt") @@ -113,16 +116,25 @@ if(!istype(victim)) return if(victim.stat == CONSCIOUS) - A.visible_message("[victim] kicks free of [A] just before entering it!") + A.visible_message( + "[victim] kicks free of [A] just before entering it!", + "You hear something sinking into a thick liquid and someone struggling!" + ) L.stop_pulling() return victim.forceMove(holder) victim.emote("scream") - A.visible_message("[L] drags [victim] into [A]!") + A.visible_message( + "[L] drags [victim] into [A]!", + "You hear something being dragged into a thick liquid!" + ) L.stop_pulling() - to_chat(L, "You begin to feast on [victim]. You can not move while you are doing this.") - A.visible_message("Loud eating sounds come from the blood...") + to_chat(L, "You begin to feast on [victim]. You cannot move while you are doing this.") + A.visible_message( + "Loud eating sounds come from the blood...", + "The sound of torn flesh and snapping bones fills the air..." + ) var/sound if(isslaughterdemon(L)) var/mob/living/simple_animal/demon/slaughter/SD = L @@ -200,7 +212,10 @@ if(prob(25) && isdemon(L)) var/list/voice = list('sound/hallucinations/behind_you1.ogg', 'sound/hallucinations/im_here1.ogg', 'sound/hallucinations/turn_around1.ogg', 'sound/hallucinations/i_see_you1.ogg') playsound(tele_loc, pick(voice),50, TRUE, -1) - A.visible_message("[L] rises out of [A]!") + A.visible_message( + "[L] rises out of [A]!", + "You hear something rising out of a thick liquid!" + ) playsound(get_turf(tele_loc), 'sound/misc/exit_blood.ogg', 100, TRUE, -1) /datum/spell/bloodcrawl/proc/unblock_hands(mob/living/carbon/C) @@ -210,7 +225,10 @@ qdel(BC) /datum/spell/bloodcrawl/proc/rise_message(atom/A) - A.visible_message("[A] starts to bubble...") + A.visible_message( + "[A] starts to bubble...", + "You can hear bubbling..." + ) /datum/spell/bloodcrawl/proc/post_phase_out(atom/A, mob/living/L) if(isslaughterdemon(L)) diff --git a/code/datums/spells/mimic.dm b/code/datums/spells/mimic.dm index af1ec3e5b4a5..10795b832f7a 100644 --- a/code/datums/spells/mimic.dm +++ b/code/datums/spells/mimic.dm @@ -132,7 +132,11 @@ selected_form = form /datum/spell/mimic/proc/show_change_form_message(mob/user, old_name, new_name) - user.visible_message("[old_name] contorts and slowly becomes [new_name]!", "You take form of [new_name].", "You hear loud cracking noises!") + user.visible_message( + "[old_name] contorts and slowly becomes [new_name]!", + "You take the form of [new_name].", + "You hear loud cracking noises!" + ) /datum/spell/mimic/proc/restore_form(mob/user, show_message = TRUE) selected_form = null @@ -157,7 +161,11 @@ UnregisterSignal(user, list(COMSIG_PARENT_EXAMINE, COMSIG_MOB_DEATH)) /datum/spell/mimic/proc/show_restore_form_message(mob/user, old_name, new_name) - user.visible_message("[old_name] shakes and contorts and quickly becomes [new_name]!", "You take return to your normal self.", "You hear loud cracking noises!") + user.visible_message( + "[old_name] shakes and contorts and quickly becomes [new_name]!", + "You return to your normal self.", + "You hear loud cracking noises!" + ) /datum/spell/mimic/proc/examine_override(datum/source, mob/user, list/examine_list) examine_list.Cut() @@ -171,7 +179,11 @@ show_death_message(user) /datum/spell/mimic/proc/show_death_message(mob/user) - user.visible_message("[user] shakes and contorts as [user.p_they()] die[user.p_s()], returning to [user.p_their()] true form!", "Your disguise fails as your life forces drain away.", "You hear loud cracking noises followed by a thud!") + user.visible_message( + "[user] shakes and contorts as [user.p_they()] die[user.p_s()], returning to [user.p_their()] true form!", + "Your disguise fails as your life forces drain away.", + "You hear loud cracking noises followed by a thud!" + ) /datum/mimic_form @@ -208,13 +220,22 @@ user.restore() /datum/spell/mimic/morph/show_change_form_message(mob/user, old_name, new_name) - user.visible_message("[old_name] suddenly twists and changes shape, becoming a copy of [new_name]!", \ - "You twist your body and assume the form of [new_name].") + user.visible_message( + "[old_name] suddenly twists and changes shape, becoming a copy of [new_name]!", + "You twist your body and assume the form of [new_name].", + "You hear loud cracking noises!" + ) /datum/spell/mimic/morph/show_restore_form_message(mob/user, old_name, new_name) - user.visible_message("[old_name] suddenly collapses in on itself, dissolving into a pile of green flesh!", \ - "You reform to your normal body.") + user.visible_message( + "[old_name] suddenly collapses in on itself, dissolving into a pile of green flesh!", + "You reform to your normal body.", + "You hear loud cracking noises followed by a thud!" + ) /datum/spell/mimic/morph/show_death_message(mob/user) - user.visible_message("[user] twists and dissolves into a pile of green flesh!", \ - "Your skin ruptures! Your flesh breaks apart! No disguise can ward off de--") + user.visible_message( + "[user] twists and dissolves into a pile of green flesh!", + "Your skin ruptures! Your flesh breaks apart! No disguise can ward off de--", + "You hear loud cracking noises followed by a thud!" + ) diff --git a/code/datums/station_traits/neutral_traits.dm b/code/datums/station_traits/neutral_traits.dm index 4661f5efed8c..370ef497779c 100644 --- a/code/datums/station_traits/neutral_traits.dm +++ b/code/datums/station_traits/neutral_traits.dm @@ -64,3 +64,19 @@ /datum/station_trait/hangover/revert() . = ..() SSjobs.drunken_spawning = FALSE + +/datum/station_trait/triple_ai + name = "AI Triumvirate" + trait_type = STATION_TRAIT_NEUTRAL + weight = 1 + show_in_report = TRUE + report_message = "As part of Operation Magi, your station has been equipped with three Nanotrasen Artificial Intelligence models. Please try not to break them." + trait_to_give = STATION_TRAIT_TRIAI + +/datum/station_trait/triple_ai/New() + . = ..() + SSticker.triai = TRUE + +/datum/station_trait/triple_ai/revert() + . = ..() + SSticker.triai = FALSE diff --git a/code/datums/uplink_items/uplink_general.dm b/code/datums/uplink_items/uplink_general.dm index 8a69797cccde..5d83a5aec80a 100644 --- a/code/datums/uplink_items/uplink_general.dm +++ b/code/datums/uplink_items/uplink_general.dm @@ -212,6 +212,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/dualsaber cost = 60 +/datum/uplink_item/dangerous/snakefang + name = "Snakesfang" + desc = "The snakesfang is a fork-tipped scimitar with a sharp edge and sharper bite. This sword cannot fit in your bag, but it does come with a scabbard you can attach to your belt." + reference = "SF" + item = /obj/item/storage/belt/sheath/snakesfang + cost = 25 + /datum/uplink_item/dangerous/powerfist name = "Power Fist" desc = "The power-fist is a metal gauntlet with a built-in piston-ram powered by an external gas supply. \ @@ -734,6 +741,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/jammer cost = 20 +/datum/uplink_item/device_tools/decoy_nade + name = "Decoy Grenade Kit" + desc = "A box of five grenades that can be configured to reproduce many suspicious sounds at varying rates." + reference = "DCY" + item = /obj/item/storage/box/syndie_kit/decoy + cost = 20 + //////////////////////////////////////// // MARK: SPACE SUITS AND HARDSUITS //////////////////////////////////////// diff --git a/code/game/area/areas/ruins/space_areas.dm b/code/game/area/areas/ruins/space_areas.dm index deec93e41dae..af8b7c6f9ebd 100644 --- a/code/game/area/areas/ruins/space_areas.dm +++ b/code/game/area/areas/ruins/space_areas.dm @@ -240,3 +240,7 @@ /area/ruin/space/telecomms/chamber name = "\improper Telecommunications Central Compartment" icon_state = "ai_chamber" + +/area/ruin/space/deepstorage + name = "Derelict Facility" + apc_starts_off = TRUE diff --git a/code/game/atoms.dm b/code/game/atoms.dm index a10af53d45ee..fbf492896f70 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -109,12 +109,12 @@ // Variables for bloom and exposure var/glow_icon = 'icons/obj/lamps.dmi' var/exposure_icon = 'icons/effects/exposures.dmi' - + var/glow_icon_state var/glow_colored = TRUE var/exposure_icon_state var/exposure_colored = TRUE - + var/image/glow_overlay var/image/exposure_overlay /// The alternate appearances we own. Lazylist @@ -304,9 +304,6 @@ /atom/proc/return_analyzable_air() return null -/atom/proc/check_eye(mob/user) - return - /atom/proc/on_reagent_change() return @@ -1179,7 +1176,6 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) if("color") add_atom_colour(color, ADMIN_COLOUR_PRIORITY) - /atom/vv_get_dropdown() . = ..() .["Manipulate Colour Matrix"] = "?_src_=vars;manipcolours=[UID()]" diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 49b3b9a4f81d..bcdcde39a4c9 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -104,6 +104,13 @@ if(pulledby) pulledby.stop_pulling() + var/turf/T = loc + if(opacity && istype(T)) + var/old_has_opaque_atom = T.has_opaque_atom + T.recalc_atom_opacity() + if(old_has_opaque_atom != T.has_opaque_atom) + T.reconsider_lights() + //Returns an atom's power cell, if it has one. Overload for individual items. /atom/movable/proc/get_cell() return diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 96d602fd4d6a..cea644022803 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -111,8 +111,8 @@ return FALSE /obj/machinery/dna_scannernew/relaymove(mob/user) - if(user.stat) - return + if(user.incapacitated()) + return FALSE //maybe they should be able to get out with cuffs, but whatever go_out() /obj/machinery/dna_scannernew/AltClick(mob/user) @@ -247,11 +247,6 @@ if(default_deconstruction_screwdriver(user, "[icon_state]_maintenance", "[initial(icon_state)]", I)) return TRUE -/obj/machinery/dna_scannernew/relaymove(mob/user) - if(user.incapacitated()) - return FALSE //maybe they should be able to get out with cuffs, but whatever - go_out() - /obj/machinery/dna_scannernew/proc/put_in(mob/M) M.forceMove(src) occupant = M @@ -284,7 +279,6 @@ ..() if(A == occupant) occupant = null - updateUsrDialog() update_icon(UPDATE_ICON_STATE) SStgui.update_uis(src) diff --git a/code/game/gamemodes/cult/blood_magic.dm b/code/game/gamemodes/cult/blood_magic.dm index 8d0dc1e03d5f..543218ac6296 100644 --- a/code/game/gamemodes/cult/blood_magic.dm +++ b/code/game/gamemodes/cult/blood_magic.dm @@ -418,11 +418,6 @@ uses = 0 qdel(src) return - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) - playsound(M, 'sound/weapons/genhit.ogg', 50, TRUE) - return TRUE add_attack_logs(user, M, "used a cult spell ([src]) on") M.lastattacker = user.real_name diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 389df33cca5c..9d244d03c5bd 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -45,17 +45,11 @@ else user.adjustBruteLoss(rand(force/2, force)) return - . = ..() - -/obj/item/melee/cultblade/afterattack(atom/target, mob/user, proximity_flag, click_parameters) - . = ..() - if(!proximity_flag) - return - if(!isliving(target)) - return - var/mob/living/living_target = target - var/datum/status_effect/cult_stun_mark/S = living_target.has_status_effect(STATUS_EFFECT_CULT_STUN) - S?.trigger() + if(!IS_CULTIST(target)) + var/datum/status_effect/cult_stun_mark/S = target.has_status_effect(STATUS_EFFECT_CULT_STUN) + if(S) + S.trigger() + ..() /obj/item/melee/cultblade/pickup(mob/living/user) . = ..() @@ -573,7 +567,7 @@ /obj/item/cult_spear/Initialize(mapload) . = ..() - AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.4, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (5 / 3) SECONDS ) // 0.666667 seconds for 60% uptime. + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.4, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (5 / 3) SECONDS) // 0.666667 seconds for 60% uptime. AddComponent(/datum/component/two_handed, force_wielded = 24, force_unwielded = force, icon_wielded = "[base_icon_state]1") /obj/item/cult_spear/Destroy() @@ -586,40 +580,35 @@ /obj/item/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) var/turf/T = get_turf(hit_atom) - if(!isliving(hit_atom)) - ..() - return - - var/mob/living/L = hit_atom - if(IS_CULTIST(L)) - playsound(src, 'sound/weapons/throwtap.ogg', 50) - if(!L.restrained() && L.put_in_active_hand(src)) - L.visible_message("[L] catches [src] out of the air!") - else - L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!") - return - - if(..()) - return - - if(L.null_rod_check()) - return - var/datum/status_effect/cult_stun_mark/S = L.has_status_effect(STATUS_EFFECT_CULT_STUN) - if(S) - S.trigger() + if(isliving(hit_atom)) + var/mob/living/L = hit_atom + if(IS_CULTIST(L)) + playsound(src, 'sound/weapons/throwtap.ogg', 50) + if(!L.restrained() && L.put_in_active_hand(src)) + L.visible_message("[L] catches [src] out of the air!") + else + L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!") + else if(!..()) + if(L.null_rod_check()) + return + var/datum/status_effect/cult_stun_mark/S = L.has_status_effect(STATUS_EFFECT_CULT_STUN) + if(S) + S.trigger() + else + L.KnockDown(10 SECONDS) + L.apply_damage(60, STAMINA) + L.apply_status_effect(STATUS_EFFECT_CULT_STUN) + L.flash_eyes(1, TRUE) + if(issilicon(L)) + L.emp_act(EMP_HEAVY) + else if(iscarbon(L)) + L.Silence(6 SECONDS) + L.Stuttering(16 SECONDS) + L.CultSlur(20 SECONDS) + L.Jitter(16 SECONDS) + break_spear(T) else - L.KnockDown(10 SECONDS) - L.apply_damage(60, STAMINA) - L.apply_status_effect(STATUS_EFFECT_CULT_STUN) - L.flash_eyes(1, TRUE) - if(issilicon(L)) - L.emp_act(EMP_HEAVY) - else if(iscarbon(L)) - L.Silence(6 SECONDS) - L.Stuttering(16 SECONDS) - L.CultSlur(20 SECONDS) - L.Jitter(16 SECONDS) - break_spear(T) + ..() /obj/item/cult_spear/proc/break_spear(turf/T) if(!T) @@ -631,14 +620,9 @@ playsound(T, 'sound/effects/glassbr3.ogg', 100) qdel(src) -/obj/item/cult_spear/afterattack(atom/target, mob/user, proximity_flag, click_parameters) +/obj/item/cult_spear/attack(mob/living/M, mob/living/user, def_zone) . = ..() - if(!proximity_flag) - return - if(!isliving(target)) - return - var/mob/living/living_target = target - var/datum/status_effect/cult_stun_mark/S = living_target.has_status_effect(STATUS_EFFECT_CULT_STUN) + var/datum/status_effect/cult_stun_mark/S = M.has_status_effect(STATUS_EFFECT_CULT_STUN) if(S && HAS_TRAIT(src, TRAIT_WIELDED)) S.trigger() diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 438820a8a33d..2379a4555270 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -43,6 +43,10 @@ M.reagents.del_reagent("holywater") add_attack_logs(user, M, "Hit with [src], removing the holy water from them") return FALSE + else + var/datum/status_effect/cult_stun_mark/S = M.has_status_effect(STATUS_EFFECT_CULT_STUN) + if(S) + S.trigger() . = ..() /obj/item/melee/cultblade/dagger/attack_self(mob/user) diff --git a/code/game/gamemodes/extended/extended.dm b/code/game/gamemodes/extended/extended.dm index 6ea8194fe61f..3ccb08f7b933 100644 --- a/code/game/gamemodes/extended/extended.dm +++ b/code/game/gamemodes/extended/extended.dm @@ -4,7 +4,7 @@ required_players = 0 single_antag_positions = list() -/datum/game_mode/announce() +/datum/game_mode/extended/announce() to_chat(world, "The current game mode is - Extended Role-Playing!") to_chat(world, "Just have fun and role-play!") diff --git a/code/game/gamemodes/miniantags/guardian/guardian.dm b/code/game/gamemodes/miniantags/guardian/guardian.dm index cfa12d92b6a5..425e4013bb50 100644 --- a/code/game/gamemodes/miniantags/guardian/guardian.dm +++ b/code/game/gamemodes/miniantags/guardian/guardian.dm @@ -146,19 +146,24 @@ if(hud_used) hud_used.guardianhealthdisplay.maptext = "
[resulthealth]%
" -/mob/living/simple_animal/hostile/guardian/adjustHealth(amount, updating_health = TRUE) //The spirit is invincible, but passes on damage to the summoner +/mob/living/simple_animal/hostile/guardian/adjustHealth(amount, updating_health = TRUE) //The spirit is invincible, but passes on damage/healing to the summoner var/damage = amount * damage_transfer - if(summoner) - if(loc == summoner) - return - summoner.adjustBruteLoss(damage) - if(damage) - to_chat(summoner, "Your [name] is under attack! You take damage!") - if(!stealthy_deploying) - summoner.visible_message("Blood sprays from [summoner] as [src] takes damage!") - if(summoner.stat == UNCONSCIOUS) - to_chat(summoner, "Your body can't take the strain of sustaining [src] in this condition, it begins to fall apart!") - summoner.adjustCloneLoss(damage/2) + if(!summoner) + return + if(loc == summoner) + return + + summoner.adjustBruteLoss(damage) + if(damage < 0) + to_chat(summoner, "Your [name] is receiving healing. It heals you!") + else + to_chat(summoner, "Your [name] is under attack! You take damage!") + if(!stealthy_deploying) + summoner.visible_message("Blood sprays from [summoner] as [src] takes damage!") + + if(summoner.stat == UNCONSCIOUS) + to_chat(summoner, "Your body can't take the strain of sustaining [src] in this condition, it begins to fall apart!") + summoner.adjustCloneLoss(damage / 2) /mob/living/simple_animal/hostile/guardian/ex_act(severity, target) switch(severity) diff --git a/code/game/gamemodes/miniantags/tourist/tourist_arrivals.dm b/code/game/gamemodes/miniantags/tourist/tourist_arrivals.dm new file mode 100644 index 000000000000..1edd01e798b9 --- /dev/null +++ b/code/game/gamemodes/miniantags/tourist/tourist_arrivals.dm @@ -0,0 +1,159 @@ +/datum/event/tourist_arrivals + + /// Maximum number of spawns. + var/max_spawn = 10 + /// If the event ran successfully + var/success_run + /// Number of tots spawned in + var/tot_number = 0 + /// Number of players spawned in + var/spawned_in = 0 + /// Number of crew + var/crew_count = 0 + /// Number of antags + var/antag_count = 0 + /// Antag limit defined by crew/10 + 1 + var/max_antag = 0 + /// Chance of being antag + var/chance = 20 + +/datum/event/tourist_arrivals/setup() + // Getting a list of players that are logged in and not dead. + // Checking if they're an antag or not and defining a 'max_antag' number. + for(var/mob/living/player in GLOB.mob_list) + if(player.mind && player.stat != DEAD) + crew_count++ + if(player.mind.special_role) + antag_count++ + continue + max_antag = round(crew_count / 10, 1) + 1 + if(SSticker && istype(SSticker.mode, /datum/game_mode/extended)) + chance = 100 + +/datum/event/tourist_arrivals/start() + // Let's just avoid trouble, sending people into those is probably bad. + if(GAMEMODE_IS_CULT || GAMEMODE_IS_WIZARD || GAMEMODE_IS_NUCLEAR) + var/datum/event_container/EC = SSevents.event_containers[EVENT_LEVEL_MODERATE] + EC.next_event_time = world.time + 1 MINUTES + log_debug("Tourist Arrivals roll canceled due to gamemode. Rolling another midround in 60 seconds.") + return + if(SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_GAMMA) // Who would send more people to somewhere that's not safe? + var/datum/event_container/EC = SSevents.event_containers[EVENT_LEVEL_MODERATE] + EC.next_event_time = world.time + 1 MINUTES + log_debug("Tourist Arrivals roll canceled due to heightened alert. Rolling another midround in 60 seconds.") + return + + INVOKE_ASYNC(src, PROC_REF(spawn_arrivals)) + +/datum/event/tourist_arrivals/proc/spawn_arrivals() + var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as a Tourist?", null, TRUE) + // We'll keep spawning new tourists until we hit the max_spawn cap of tourists. + while(max_spawn > 0 && length(candidates)) + var/turf/picked_loc = pick(GLOB.latejoin) + // Taking a random player from the candidate list. + var/mob/P = pick_n_take(candidates) + max_spawn-- + var/datum/tourist/T = pick(/datum/tourist/human, + /datum/tourist/unathi, + /datum/tourist/vulp, + /datum/tourist/ipc, + /datum/tourist/skrell, + /datum/tourist/grey, + /datum/tourist/nian) + if(!istype(P)) + continue + var/mob/living/carbon/human/M = new T.tourist_species(picked_loc) + // Picking a random objective, as all objectives are a subtype of /objective/tourist. + var/obj_tourist = pick(subtypesof(/datum/objective/tourist)) + var/datum/objective/tourist/O = new obj_tourist() + // Handles outfit, account and other stuff. + M.ckey = P.ckey + M.dna.species.after_equip_job(null, M) + M.age = rand(21, 50) + if(prob(50)) + M.change_gender(FEMALE) + set_appearance(M) + M.equipOutfit(T.tourist_outfit) + M.mind.special_role = SPECIAL_ROLE_TOURIST + GLOB.data_core.manifest_inject(M) + // Rolls a 20% probability, checks if 3 tourists have been made into tot and check if there's space for a new tot! + // If any is false, we don't make a new tourist tot + if(prob(chance) && tot_number < 3 && antag_count < max_antag && !jobban_isbanned(M, SPECIAL_ROLE_TRAITOR)) + tot_number++ + M.mind.add_antag_datum(/datum/antagonist/traitor) + + // If they're a tot, they don't get tourist objectives neither the tourist greeting! + if(M.mind.special_role != SPECIAL_ROLE_TRAITOR) + M.mind.add_mind_objective(O) + greeting(M) + success_run = TRUE + spawned_in++ + if(success_run) + log_debug("Tourist event made: [tot_number] traitors.") + var/raffle_name = pick("Galactic Getaway Raffle", "Cosmic Jackpot Raffle", "Nebula Nonsense Raffle", "Greytide Giveaway Raffle", "Toolbox Treasure Raffle") + GLOB.minor_announcement.Announce("The lucky winners of the Nanotrasen raffle, 'Nanotrasen [raffle_name],' are arriving at [station_name()] shortly. Please welcome them warmly, they'll be staying with you until the end of your shift!") + +// Greets the player, announces objectives! +/datum/event/tourist_arrivals/proc/greeting(mob/living/carbon/human/M) + var/list/greeting = list() + greeting.Add("You are a tourist!") + greeting.Add("You were chosen as a lucky winner of Nanotrasen's exclusive raffle! Winning a visit to a nearby Nanotrasen Research Station!") + greeting.Add("Enjoy your exclusive tour and make the most of your time exploring our state-of-the-art facilities!") + greeting.Add("
Your current objectives are:
") + greeting.Add(M.mind.prepare_announce_objectives(FALSE)) + to_chat(M, chat_box_green(greeting.Join("
"))) + +// All of this code down here is from ert.dm. +/datum/event/tourist_arrivals/proc/set_appearance(mob/living/carbon/human/M) + + var/obj/item/organ/external/head/head_organ = M.get_organ("head") + var/hair_c = pick("#8B4513", "#000000", "#FF4500", "#FFD700") // Brown, black, red, blonde + var/eye_c = pick("#000000", "#8B4513", "1E90FF") // Black, brown, blue + var/skin_tone = rand(-120, 20) + + head_organ.facial_colour = hair_c + head_organ.sec_facial_colour = hair_c + head_organ.hair_colour = hair_c + head_organ.sec_hair_colour = hair_c + M.change_eye_color(eye_c) + M.s_tone = skin_tone + head_organ.h_style = random_hair_style(M.gender, head_organ.dna.species.name) + head_organ.f_style = random_facial_hair_style(M.gender, head_organ.dna.species.name) + + M.regenerate_icons() + M.update_body() + M.update_dna() + +// Tourist datum stuff, mostly being species and outfit. +/datum/tourist + var/tourist_outfit + var/tourist_species + +/datum/tourist/human + tourist_species = /mob/living/carbon/human + tourist_outfit = /datum/outfit/admin/tourist + +/datum/tourist/unathi + tourist_species = /mob/living/carbon/human/unathi + tourist_outfit = /datum/outfit/admin/tourist + +/datum/tourist/vulp + tourist_species = /mob/living/carbon/human/vulpkanin + tourist_outfit = /datum/outfit/admin/tourist + +/datum/tourist/ipc + tourist_species = /mob/living/carbon/human/machine + tourist_outfit = /datum/outfit/admin/tourist + +/datum/tourist/skrell + tourist_species = /mob/living/carbon/human/skrell + tourist_outfit = /datum/outfit/admin/tourist + +/datum/tourist/grey + tourist_species = /mob/living/carbon/human/grey + tourist_outfit = /datum/outfit/admin/tourist + +/datum/tourist/nian + tourist_species = /mob/living/carbon/human/moth + tourist_outfit = /datum/outfit/admin/tourist + diff --git a/code/game/gamemodes/miniantags/tourist/tourist_objectives.dm b/code/game/gamemodes/miniantags/tourist/tourist_objectives.dm new file mode 100644 index 000000000000..8460fdb807be --- /dev/null +++ b/code/game/gamemodes/miniantags/tourist/tourist_objectives.dm @@ -0,0 +1,51 @@ +/datum/objective/tourist + completed = TRUE + needs_target = FALSE + +/datum/objective/tourist/cap_fan + explanation_text = "You're a huge fan of the Captain! Make sure to take a picture with them!" + +/datum/objective/tourist/comedy_fan + explanation_text = "You love clowns! Make sure to always laugh when with them, perhaps you could become their assistant?" + +/datum/objective/tourist/bridge_tourist + explanation_text = "You want to see where all the action happens. Get a brief tour of the stations bridge." + +/datum/objective/tourist/fire_safety + explanation_text = "You're paranoid about safety! Make sure to verify if the station has enough fire extinguisers, fire alarms and if the security team is properly equipped." + +/datum/objective/tourist/robot_friend + explanation_text = "You think robots are fascinating! Befriend a station cyborg and learn about its tasks." + +/datum/objective/tourist/richest_person + explanation_text = "You have dreams of becoming the richest person on the station! Accumulate as much money as you can by legal means." + +/datum/objective/tourist/job_seeker + explanation_text = "You are seeking a job opportunity on the station! Talk to at least three department heads about potential job openings. Make sure to choose the best!" + +/datum/objective/tourist/head_photographer + explanation_text = "You are fascinated by leadership! Take a picture with each department head on the station." + +/datum/objective/tourist/entrepreneur + explanation_text = "Start your own small business on the station. Find a suitable location, gather necessary supplies, and promote your business!" + +/datum/objective/tourist/prisoner_visitation + explanation_text = "You are curious about life behind bars. Visit the brig and have a conversation with a prisoner." + +/datum/objective/tourist/alcoholic + explanation_text = "You've heard the alcohol on the station is deluxe! Go to the bar and drink as much as you can to get your money's worth." + +/datum/objective/tourist/gene_enhanced + explanation_text = "You've heard that Nanotrasen is the premier in genetics research, get as enhanced as you can!" + +/datum/objective/tourist/robo_enhanced + explanation_text = "You've heard that Nanotrasen is the premier in robotics research, get as augmented as you can!" + +/datum/objective/tourist/party_person + explanation_text = "You love parties! Make sure to throw one, let everyone know!" + +/datum/objective/tourist/skate_lover + explanation_text = "Organize a skateboard competition in a common area and get it promoted. Show off your best tricks!" + +/datum/objective/tourist/break_in + explanation_text = "Sneak into different departments or rooms on the station and leave a note in each one. Make sure not to get caught!" diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 0292df084c56..08f8b073b7a9 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -138,9 +138,6 @@ /obj/effect/rend/singularity_pull() return -/obj/effect/rend/singularity_pull() - return - /obj/item/veilrender/vealrender name = "veal render" desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast farm." diff --git a/code/game/gamemodes/wizard/magic_tarot.dm b/code/game/gamemodes/wizard/magic_tarot.dm index 10b7e1f64673..6c206797abc2 100644 --- a/code/game/gamemodes/wizard/magic_tarot.dm +++ b/code/game/gamemodes/wizard/magic_tarot.dm @@ -1,5 +1,5 @@ /obj/item/tarot_generator - name = "Enchanted tarot card deck" + name = "enchanted tarot card deck" desc = "This tarot card box has quite the array of runes and artwork on it." icon = 'icons/obj/playing_cards.dmi' icon_state = "tarot_box" @@ -145,9 +145,11 @@ var/datum/tarot/our_tarot /// Our fancy description given to use by the tarot datum. var/card_desc = "Untold answers... wait what? This is a bug, report this as an issue on github!" - ///Is the card face down? Shows the card back, hides the examine / name. + /// Is the card face down? Shows the card back, hides the examine / name. var/face_down = FALSE - ///Has the card been activated? If it has, don't activate it again + /// Will this card automatically disappear if thrown at a non-mob? + var/needs_mob_target = TRUE + /// Has the card been activated? If it has, don't activate it again var/has_been_activated = FALSE /obj/item/magic_tarot_card/Initialize(mapload, obj/item/tarot_generator/source, datum/tarot/chosen_tarot) @@ -193,6 +195,8 @@ /obj/item/magic_tarot_card/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() + if(needs_mob_target && !isliving(hit_atom)) + return poof() if(has_been_activated) return diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 8148382b446b..d16b6e912e23 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -409,7 +409,8 @@ /proc/get_all_special_jobs() return list( "Deathsquad", - "Emergency Response Clown") + "Emergency Response Clown", + "Tourist") /proc/get_all_job_icons() //For all existing HUD icons return GLOB.joblist + get_all_ERT_jobs() + list("Prisoner") diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index 7cab1816b598..63657081368e 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -455,8 +455,6 @@ uniform = /obj/item/clothing/under/rank/civilian/mime/sexy suit = /obj/item/clothing/mask/gas/sexymime -/datum/outfit/job/mime/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - . = ..() if(visualsOnly) return diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 5c2f5a7ff976..6ced0e74b59f 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -392,12 +392,10 @@ ..() if(A == occupant) occupant = null - updateUsrDialog() update_icon(UPDATE_ICON_STATE) SStgui.update_uis(src) if(A == beaker) beaker = null - updateUsrDialog() SStgui.update_uis(src) /obj/machinery/sleeper/emp_act(severity) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 5ef02606a44b..b8e25d463c86 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -219,7 +219,6 @@ ..() if(A == occupant) occupant = null - updateUsrDialog() update_icon(UPDATE_ICON_STATE) /obj/machinery/bodyscanner/narsie_act() diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index 441278e98b98..afd97dcd6a81 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -28,6 +28,7 @@ state = CIRCUIT_CORE P.forceMove(src) circuit = P + update_icon(UPDATE_ICON_STATE) return if(SCREWED_CORE) if(istype(P, /obj/item/stack/cable_coil)) @@ -136,11 +137,13 @@ state = EMPTY_CORE circuit.forceMove(loc) circuit = null + update_icon(UPDATE_ICON_STATE) return if(GLASS_CORE) to_chat(user, "Вы убираете стеклянную панель.") state = CABLED_CORE new /obj/item/stack/sheet/rglass(loc, 2) + update_icon(UPDATE_ICON_STATE) return if(CABLED_CORE) if(brain) diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 51a4a807f215..7af452d14335 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -39,21 +39,24 @@ user.remote_control = null current_user = null - user.unset_machine() + remove_eye(user) playsound(src, 'sound/machines/terminal_off.ogg', 25, 0) -/obj/machinery/computer/camera_advanced/check_eye(mob/user) - if((stat & (NOPOWER|BROKEN)) || (!Adjacent(user) && !user.has_unlimited_silicon_privilege) || !user.has_vision() || user.incapacitated()) - user.unset_machine() +/obj/machinery/computer/camera_advanced/process() + if(!current_user) + return + + if((stat & (NOPOWER|BROKEN)) || (!Adjacent(current_user) && !current_user.has_unlimited_silicon_privilege) || !current_user.has_vision() || current_user.incapacitated()) + remove_eye(current_user) /obj/machinery/computer/camera_advanced/Destroy() if(current_user) - current_user.unset_machine() + remove_eye(current_user) QDEL_NULL(eyeobj) QDEL_LIST_CONTENTS(actions) return ..() -/obj/machinery/computer/camera_advanced/on_unset_machine(mob/M) +/obj/machinery/computer/camera_advanced/proc/remove_eye(mob/M) if(M == current_user) remove_eye_control(M) @@ -65,7 +68,6 @@ return if(..()) return - user.set_machine(src) if(!eyeobj) CreateEye() @@ -85,7 +87,7 @@ else // An abberant case - silent failure is obnoxious to_chat(user, "ERROR: No linked and active camera network found.") - user.unset_machine() + remove_eye(user) else give_eye_control(user) eyeobj.setLoc(eyeobj.loc) diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index e2ffc3605b40..e5f1aeaed1d0 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -42,11 +42,6 @@ add_fingerprint(user) ui_interact(user) -/obj/machinery/computer/prisoner/attackby(obj/item/O, mob/user) - if(ui_login_attackby(O, user)) - return - return ..() - /obj/machinery/computer/prisoner/proc/check_implant(obj/item/bio_chip/I) var/turf/implant_location = get_turf(I) if(!implant_location || implant_location.z != z) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index dde8834a2deb..8f77132473a7 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -92,8 +92,8 @@ to_chat(user, "You need five lengths of cable to wire the frame.") return - if(istype(P, /obj/item/wrench)) - playsound(src.loc, P.usesound, 75, 1) + if(iswrench(P)) + P.play_tool_sound(src) to_chat(user, "You dismantle the frame.") deconstruct(TRUE) return diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index b2cdb309b676..a69f9689100f 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -234,7 +234,7 @@ /obj/item/stamp, /obj/item/melee/knuckleduster/nanotrasen, /obj/item/melee/rapier, - /obj/item/storage/belt/rapier, + /obj/item/storage/belt/sheath/rapier, /obj/item/nuke_core, /obj/item/nuke_core_container, /obj/item/documents, diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index e91ebc1983d3..1909302aac38 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -203,9 +203,6 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays) return ..(user) -/obj/machinery/door/airlock/bumpopen(mob/living/simple_animal/user) - ..(user) - /obj/machinery/door/airlock/proc/isElectrified() if(electrified_until != 0) return 1 diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index ced4cf2075ef..8ffc6c263bfe 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -38,10 +38,20 @@ var/prisoner_time var/prisoner_hasrecord = FALSE +/obj/machinery/door_timer/Initialize(mapload) + ..() + + GLOB.celltimers_list += src + Radio = new /obj/item/radio(src) + Radio.listening = FALSE + Radio.config(list("Security" = 0)) + Radio.follow_target = src + return INITIALIZE_HINT_LATELOAD + /obj/machinery/door_timer/Destroy() + QDEL_NULL(Radio) targets.Cut() prisoner = null - qdel(Radio) GLOB.celltimers_list -= src return ..() @@ -113,16 +123,6 @@ return atom_say("[src] beeps, \"[occupant]: [notifytext]\"") -/obj/machinery/door_timer/Initialize(mapload) - ..() - - GLOB.celltimers_list += src - Radio = new /obj/item/radio(src) - Radio.listening = FALSE - Radio.config(list("Security" = 0)) - Radio.follow_target = src - return INITIALIZE_HINT_LATELOAD - /obj/machinery/door_timer/LateInitialize() ..() for(var/obj/machinery/door/window/brigdoor/M in GLOB.airlocks) @@ -149,12 +149,6 @@ stat |= BROKEN update_icon(UPDATE_ICON_STATE) -/obj/machinery/door_timer/Destroy() - QDEL_NULL(Radio) - targets.Cut() - prisoner = null - return ..() - /obj/machinery/door_timer/proc/on_target_qdel(atom/target) targets -= target diff --git a/code/game/machinery/guestpass.dm b/code/game/machinery/guestpass.dm index e289a5212b25..10d2c19e1b70 100644 --- a/code/game/machinery/guestpass.dm +++ b/code/game/machinery/guestpass.dm @@ -63,7 +63,7 @@ if(user.drop_item()) I.forceMove(src) scan = I - updateUsrDialog() + SStgui.update_uis(src) else to_chat(user, "There is already ID card inside.") return diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 7188f8546ccd..b5c37d145d9f 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -193,13 +193,6 @@ return ..() -/obj/machinery/CouldUseTopic(mob/user) - ..() - user.set_machine(src) - -/obj/machinery/CouldNotUseTopic(mob/user) - usr.unset_machine() - /obj/machinery/proc/dropContents()//putting for swarmers, occupent code commented out, someone can use later. var/turf/T = get_turf(src) for(var/atom/movable/AM in contents) diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index 13275d3d61e9..377050f7902d 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -86,10 +86,10 @@ /obj/machinery/mass_driver_frame/attackby(obj/item/W as obj, mob/user as mob) switch(build) if(0) // Loose frame - if(istype(W, /obj/item/wrench)) - to_chat(user, "You begin to anchor \the [src] on the floor.") - playsound(get_turf(src), W.usesound, 50, 1) - if(do_after(user, 10 * W.toolspeed, target = src) && (build == 0)) + if(iswrench(W)) + to_chat(user, "You begin to anchor [src] on the floor.") + playsound(get_turf(src), W.usesound, 50, TRUE) + if(do_after(user, 1 SECONDS * W.toolspeed, target = src) && (build == 0)) to_chat(user, "You anchor \the [src]!") anchored = TRUE build++ @@ -97,10 +97,10 @@ return FALSE if(1) // Fixed to the floor - if(istype(W, /obj/item/wrench)) - to_chat(user, "You begin to de-anchor \the [src] from the floor.") - playsound(get_turf(src), W.usesound, 50, 1) - if(do_after(user, 10 * W.toolspeed, target = src) && (build == 1)) + if(iswrench(W)) + to_chat(user, "You begin to de-anchor [src] from the floor.") + playsound(get_turf(src), W.usesound, 50, TRUE) + if(do_after(user, 1 SECONDS * W.toolspeed, target = src) && (build == 1)) build-- anchored = FALSE to_chat(user, "You de-anchored \the [src]!") @@ -108,10 +108,10 @@ return FALSE if(2) // Welded to the floor - if(istype(W, /obj/item/stack/cable_coil)) + if(iscoil(W)) var/obj/item/stack/cable_coil/C = W - to_chat(user, "You start adding cables to \the [src]...") - playsound(get_turf(src), C.usesound, 50, 1) + to_chat(user, "You start adding cables to [src]...") + playsound(get_turf(src), C.usesound, 50, TRUE) if(do_after(user, 20 * C.toolspeed, target = src) && (C.get_amount() >= 2) && (build == 2)) C.use(2) to_chat(user, "You've added cables to \the [src].") @@ -120,10 +120,10 @@ return FALSE if(3) // Wired - if(istype(W, /obj/item/wirecutters)) - to_chat(user, "You begin to remove the wiring from \the [src].") - if(do_after(user, 10 * W.toolspeed, target = src) && (build == 3)) - new /obj/item/stack/cable_coil(loc,2) + if(iswirecutter(W)) + to_chat(user, "You begin to remove the wiring from [src].") + if(do_after(user, 1 SECONDS * W.toolspeed, target = src) && (build == 3)) + new /obj/item/stack/cable_coil(loc, 2) playsound(get_turf(src), W.usesound, 50, 1) to_chat(user, "You've removed the cables from \the [src].") build-- @@ -142,10 +142,10 @@ return FALSE if(4) // Grille in place - if(W.tool_behaviour == TOOL_CROWBAR) - to_chat(user, "You begin to pry off the grille from \the [src]...") - playsound(get_turf(src), W.usesound, 50, 1) - if(do_after(user, 30 * W.toolspeed, target = src) && (build == 4)) + if(iscrowbar(W)) + to_chat(user, "You begin to pry off the grille from [src]...") + playsound(get_turf(src), W.usesound, 50, TRUE) + if(do_after(user, 3 SECONDS * W.toolspeed, target = src) && (build == 4)) new /obj/item/stack/rods(loc,2) build-- return TRUE diff --git a/code/game/machinery/pipe/pipe_construction.dm b/code/game/machinery/pipe/pipe_construction.dm index f43e82e8091a..e33913c49452 100644 --- a/code/game/machinery/pipe/pipe_construction.dm +++ b/code/game/machinery/pipe/pipe_construction.dm @@ -537,18 +537,16 @@ item_state = "buildpipe" w_class = WEIGHT_CLASS_BULKY -/obj/item/pipe_meter/attackby(obj/item/W, mob/user, params) - if(!iswrench(W)) - return ..() - +/obj/item/pipe_meter/wrench_act(mob/living/user, obj/item/I) if(!locate(/obj/machinery/atmospherics/pipe, loc)) - to_chat(user, "You need to fasten it to a pipe") + to_chat(user, "You need to fasten it to a pipe.") return TRUE new /obj/machinery/atmospherics/meter(loc) - playsound(loc, W.usesound, 50, 1) + I.play_tool_sound(src) to_chat(user, "You have fastened the meter to the pipe.") qdel(src) + return TRUE /obj/item/pipe_meter/rpd_act(mob/user, obj/item/rpd/our_rpd) if(our_rpd.mode == RPD_DELETE_MODE) @@ -565,15 +563,13 @@ item_state = "buildpipe" w_class = WEIGHT_CLASS_BULKY -/obj/item/pipe_gsensor/attackby(obj/item/W, mob/user) - if(!istype(W, /obj/item/wrench)) - return ..() - +/obj/item/pipe_gsensor/wrench_act(mob/living/user, obj/item/I) var/obj/machinery/atmospherics/air_sensor/AS = new /obj/machinery/atmospherics/air_sensor(loc) AS.bolts = FALSE - playsound(get_turf(src), W.usesound, 50, 1) + I.play_tool_sound(src, 50) to_chat(user, "You have fastened the gas sensor.") qdel(src) + return TRUE /obj/item/pipe_gsensor/rpd_act(mob/user, obj/item/rpd/our_rpd) if(our_rpd.mode == RPD_DELETE_MODE) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 567cc838aed1..b186a0981258 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -331,52 +331,67 @@ GLOBAL_LIST_EMPTY(turret_icons) return update_icon(UPDATE_ICON_STATE) +/obj/machinery/porta_turret/wrench_act(mob/living/user, obj/item/I) + if(enabled || raised) + to_chat(user, "You cannot unsecure an active turret!") + return + if(wrenching) + to_chat(user, "Someone is already [anchored ? "un" : ""]securing the turret!") + return + if(!anchored && isinspace()) + to_chat(user, "Cannot secure turrets in space!") + return -/obj/machinery/porta_turret/attackby(obj/item/I, mob/user) - if((stat & BROKEN) && !syndicate) - if(I.tool_behaviour == TOOL_CROWBAR) - //If the turret is destroyed, you can remove it with a crowbar to - //try and salvage its components - to_chat(user, "You begin prying the metal coverings off.") - if(do_after(user, 20 * I.toolspeed, target = src)) - if(prob(70)) - to_chat(user, "You remove the turret and salvage some components.") - if(installation) - var/obj/item/gun/energy/Gun = new installation(loc) - Gun.cell.charge = gun_charge - Gun.update_icon() - if(prob(50)) - new /obj/item/stack/sheet/metal(loc, rand(1,4)) - if(prob(50)) - new /obj/item/assembly/prox_sensor(loc) - else - to_chat(user, "You remove the turret but did not manage to salvage anything.") - qdel(src) // qdel + user.visible_message( \ + "[user] begins [anchored ? "un" : ""]securing the turret.", \ + "You begin [anchored ? "un" : ""]securing the turret." \ + ) - else if((istype(I, /obj/item/wrench))) - if(enabled || raised) - to_chat(user, "You cannot unsecure an active turret!") - return - if(wrenching) - to_chat(user, "Someone is already [anchored ? "un" : ""]securing the turret!") - return - if(!anchored && isinspace()) - to_chat(user, "Cannot secure turrets in space!") - return + wrenching = TRUE + if(I.use_tool(src, user, 2 SECONDS, volume = 50)) + //This code handles moving the turret around. After all, it's a portable turret! + playsound(loc, I.usesound, 100, 1) + anchored = !anchored + update_icon(UPDATE_ICON_STATE) + to_chat(user, "You [anchored ? "" : "un"]secure the exterior bolts on the turret.") + wrenching = FALSE - user.visible_message( \ - "[user] begins [anchored ? "un" : ""]securing the turret.", \ - "You begin [anchored ? "un" : ""]securing the turret." \ - ) + return TRUE + +/obj/machinery/porta_turret/tool_act(mob/living/user, obj/item/I, tool_type) + if(user.a_intent != INTENT_HELP) + return ..() + if(syndicate) + to_chat(user, "[src] is sealed tightly, tools won't help here.") + return TRUE - wrenching = TRUE - if(do_after(user, 50 * I.toolspeed, target = src)) - //This code handles moving the turret around. After all, it's a portable turret! - playsound(loc, I.usesound, 100, 1) - anchored = !anchored - update_icon(UPDATE_ICON_STATE) - to_chat(user, "You [anchored ? "" : "un"]secure the exterior bolts on the turret.") - wrenching = FALSE + if(!(stat & BROKEN)) + to_chat(user, "[src] is in fine condition, you'd need to rough it up a bit if you wanted to disassemble it.") + return TRUE + return ..() + +/obj/machinery/porta_turret/crowbar_act(mob/living/user, obj/item/I) + . = TRUE + to_chat(user, "You begin prying the metal coverings off.") + if(!I.use_tool(src, user, 2 SECONDS, 0, 50)) + return FALSE + if(prob(70)) + to_chat(user, "You remove the turret and salvage some components.") + if(installation) + var/obj/item/gun/energy/Gun = new installation(loc) + Gun.cell.charge = gun_charge + Gun.update_icon() + if(prob(50)) + new /obj/item/stack/sheet/metal(loc, rand(1,4)) + if(prob(50)) + new /obj/item/assembly/prox_sensor(loc) + else + to_chat(user, "You remove the turret but did not manage to salvage anything.") + qdel(src) // qdel + +/obj/machinery/porta_turret/attackby(obj/item/I, mob/user) + if((stat & BROKEN) && !syndicate) + return else if(istype(I, /obj/item/card/id) || istype(I, /obj/item/pda)) if(HasController()) @@ -388,17 +403,22 @@ GLOBAL_LIST_EMPTY(turret_icons) else to_chat(user, "Access denied.") - else - //if the turret was attacked with the intention of harming it: - user.changeNext_move(CLICK_CD_MELEE) - playsound(src.loc, 'sound/weapons/smash.ogg', 60, 1) - if(I.force * 0.5 > 1) //if the force of impact dealt at least 1 damage, the turret gets pissed off - if(!attacked && !emagged) - attacked = TRUE - spawn(60) - attacked = FALSE + return TRUE + + if(user.a_intent == INTENT_HELP) + return ..() + // otherwise, if the turret was attacked with the intention of harming it: + user.changeNext_move(CLICK_CD_MELEE) + user.do_item_attack_animation() + playsound(src.loc, 'sound/weapons/smash.ogg', 60, 1) + if(I.force * 0.5 > 1) //if the force of impact dealt at least 1 damage, the turret gets pissed off + if(!attacked && !emagged) + attacked = TRUE + addtimer(VARSET_CALLBACK(src, attacked, FALSE), 6 SECONDS) + + ..() + - ..() /obj/machinery/porta_turret/attack_animal(mob/living/simple_animal/M) M.changeNext_move(CLICK_CD_MELEE) @@ -854,7 +874,7 @@ GLOBAL_LIST_EMPTY(turret_icons) //this is a bit unwieldy but self-explanatory switch(build_step) if(0) //first step - if(istype(I, /obj/item/wrench) && !anchored) + if(iswrench(I) && !anchored) playsound(loc, I.usesound, 100, 1) to_chat(user, "You secure the external bolts.") anchored = TRUE @@ -879,7 +899,7 @@ GLOBAL_LIST_EMPTY(turret_icons) to_chat(user, "You need two sheets of metal to continue construction.") return - else if(istype(I, /obj/item/wrench)) + else if(iswrench(I)) playsound(loc, I.usesound, 75, 1) to_chat(user, "You unfasten the external bolts.") anchored = FALSE @@ -888,7 +908,7 @@ GLOBAL_LIST_EMPTY(turret_icons) if(2) - if(istype(I, /obj/item/wrench)) + if(iswrench(I)) playsound(loc, I.usesound, 100, 1) to_chat(user, "You bolt the metal armor into place.") build_step = 3 @@ -921,7 +941,7 @@ GLOBAL_LIST_EMPTY(turret_icons) qdel(I) //delete the gun :( qdel return - else if(istype(I, /obj/item/wrench)) + else if(iswrench(I)) playsound(loc, I.usesound, 100, 1) to_chat(user, "You remove the turret's metal armor bolts.") build_step = 2 @@ -1054,7 +1074,6 @@ GLOBAL_LIST_EMPTY(turret_icons) interact_offline = TRUE power_state = NO_POWER_USE has_cover = FALSE - raised = TRUE scan_range = 9 faction = "syndicate" @@ -1095,6 +1114,8 @@ GLOBAL_LIST_EMPTY(turret_icons) req_one_access.Cut() req_access = list(ACCESS_SYNDICATE) one_access = FALSE + set_raised_raising(TRUE, FALSE) + update_icon(UPDATE_ICON_STATE) /obj/machinery/porta_turret/syndicate/update_icon_state() if(stat & BROKEN) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 5661fbc1bf7a..e1690fa8d3ca 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -85,7 +85,6 @@ ..() if(A == occupant) occupant = null - updateUsrDialog() update_icon(UPDATE_ICON_STATE) /obj/machinery/recharge_station/narsie_act() diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 0869bb8b7be2..5adbd7eea2a8 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -352,36 +352,36 @@ if(chassis) var/result = load_fuel(target) if(result) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser", "\ref[src]", get_equip_info()) /obj/item/mecha_parts/mecha_equipment/generator/proc/load_fuel(obj/item/I) if(istype(I) && (fuel_type in I.materials)) - if(istype(I, /obj/item/stack/sheet)) - var/obj/item/stack/sheet/P = I - var/to_load = max(max_fuel - P.amount*P.perunit,0) - if(to_load) - var/units = min(max(round(to_load / P.perunit),1),P.amount) - if(units) - var/added_fuel = units * P.perunit - fuel_amount += added_fuel - P.use(units) - occupant_message("[units] unit\s of [fuel_name] successfully loaded.") - return added_fuel - else - occupant_message("Unit is full.") - return 0 - else // Some other object containing our fuel's type, so we just eat it (ores mainly) - var/to_load = max(min(I.materials[fuel_type], max_fuel - fuel_amount),0) + if(!istype(I, /obj/item/stack/sheet)) // Some other object containing our fuel's type, so we just eat it (ores mainly) + var/to_load = clamp(I.materials[fuel_type], 0, max_fuel - fuel_amount) if(to_load == 0) - return 0 + return FALSE fuel_amount += to_load qdel(I) - return to_load + return 0 + + if(fuel_amount >= max_fuel) + occupant_message("Unit is full.") + return 0 + + var/obj/item/stack/sheet/P = I + var/to_load = max_fuel - fuel_amount + + var/units = clamp(round(to_load / P.perunit), 1, P.amount) + if(units) + var/added_fuel = units * P.perunit + fuel_amount += added_fuel + P.use(units) + occupant_message("[units] unit\s of [fuel_name] successfully loaded.") + return added_fuel else if(istype(I, /obj/structure/ore_box)) var/fuel_added = 0 - for(var/baz in I.contents) - var/obj/item/O = baz + for(var/obj/item/O as anything in I.contents) if(fuel_type in O.materials) fuel_added = load_fuel(O) break diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index c805da7586d1..788df39c50d6 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -47,8 +47,17 @@ new /obj/item/stack/sheet/animalhide/armor_plate(get_turf(src)) for(var/i in 1 to drake_hides) new /obj/item/stack/sheet/animalhide/ashdrake(get_turf(src)) + for(var/mob/M in src) + if(M == occupant) + continue + M.loc = get_turf(src) + M.loc.Entered(M) + step_rand(M) for(var/atom/movable/A in cargo) - A.forceMove(get_turf(src)) + A.loc = get_turf(src) + var/turf/T = get_turf(A) + if(T) + T.Entered(A) step_rand(A) cargo.Cut() return ..() @@ -236,8 +245,6 @@ log_message("Unloaded [O]. Cargo compartment capacity: [cargo_capacity - length(cargo)]") return - - /obj/mecha/working/ripley/get_stats_part() var/output = ..() output += "Cargo Compartment Contents:
" @@ -249,21 +256,6 @@ output += "
" return output -/obj/mecha/working/ripley/Destroy() - for(var/mob/M in src) - if(M == occupant) - continue - M.loc = get_turf(src) - M.loc.Entered(M) - step_rand(M) - for(var/atom/movable/A in cargo) - A.loc = get_turf(src) - var/turf/T = get_turf(A) - if(T) - T.Entered(A) - step_rand(A) - return ..() - /obj/mecha/working/ripley/ex_act(severity) ..() for(var/X in cargo) diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index f2ce3c8e7083..9d4b3ab2dc48 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -151,15 +151,19 @@ . = buckle_mob(M, check_loc = check_loc) if(.) if(M == user) - M.visible_message("[M] buckles [M.p_themselves()] to [src].",\ - "You buckle yourself to [src].",\ - "You hear metal clanking.") + M.visible_message( + "[M] buckles [M.p_themselves()] to [src].", + "You buckle yourself to [src].", + "You hear the click of a buckle being secured." + ) M.create_log(ATTACK_LOG, "Buckles [M.p_themselves()] to [src]", M) log_attack(M, M, "Buckles themselves to [src]") else - M.visible_message("[user] buckles [M] to [src]!",\ - "[user] buckles you to [src]!",\ - "You hear metal clanking.") + M.visible_message( + "[user] buckles [M] to [src]!", + "[user] buckles you to [src]!", + "You hear the click of a buckle being secured." + ) user.create_log(ATTACK_LOG, "[user] has buckled [M] to [src]", M) M.create_log(DEFENSE_LOG, "[M] has been buckled by [user] to [src]", user) log_attack(user, M, "Buckled to [src]") @@ -169,16 +173,20 @@ var/mob/living/M = unbuckle_mob(buckled_mob) if(M) if(M != user) - M.visible_message("[user] unbuckles [M] from [src].",\ - "[user] unbuckles you from [src].",\ - "You hear metal clanking.") + M.visible_message( + "[user] unbuckles [M] from [src].", + "[user] unbuckles you from [src].", + "You hear the click of a buckle being undone." + ) user.create_log(ATTACK_LOG, "[user] has unbuckled [M] from [src]", M) M.create_log(DEFENSE_LOG, "[M] has been unbuckled by [user] from [src]", user) log_attack(user, M, "Unbuckled from [src]") else - M.visible_message("[M] unbuckles [M.p_themselves()] from [src].",\ - "You unbuckle yourself from [src].",\ - "You hear metal clanking.") + M.visible_message( + "[M] unbuckles [M.p_themselves()] from [src].", + "You unbuckle yourself from [src].", + "You hear the click of a buckle being undone." + ) M.create_log(ATTACK_LOG, "Unbuckles [M.p_themselves()] from [src]", M) log_attack(M, M, "Unbuckles themselves from [src]") add_fingerprint(user) diff --git a/code/game/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm index 401709a8154e..373504a92359 100644 --- a/code/game/objects/effects/decals/Cleanable/robots.dm +++ b/code/game/objects/effects/decals/Cleanable/robots.dm @@ -18,9 +18,6 @@ /obj/effect/decal/cleanable/blood/gibs/robot/dry() //pieces of robots do not dry up like return -/obj/effect/decal/cleanable/blood/gibs/robot/can_bloodcrawl_in() - return FALSE - /obj/effect/decal/cleanable/blood/gibs/robot/streak(list/directions) spawn(0) var/direction = pick(directions) diff --git a/code/game/objects/effects/spawners/random_spawners.dm b/code/game/objects/effects/spawners/random_spawners.dm index a9decc5055eb..32b8052bd2f9 100644 --- a/code/game/objects/effects/spawners/random_spawners.dm +++ b/code/game/objects/effects/spawners/random_spawners.dm @@ -354,3 +354,10 @@ name = "80pc vaultdoor 20pc wall" result = list(/obj/machinery/door/airlock/hatch/syndicate/vault = 4, /turf/simulated/wall/mineral/plastitanium/nodiagonal = 1) + +/obj/effect/spawner/random_spawners/ruin/deepstorage_award + name = "boss award" + result = list(/obj/item/storage/belt/champion/wrestling = 1, + /obj/item/storage/box/telescience = 1, + /obj/item/storage/box/syndie_kit/chameleon = 3, + /obj/item/rod_of_asclepius = 3) diff --git a/code/game/objects/items/mountable_frames/frames.dm b/code/game/objects/items/mountable_frames/frames.dm index 6f35d17317c6..5823064a91a1 100644 --- a/code/game/objects/items/mountable_frames/frames.dm +++ b/code/game/objects/items/mountable_frames/frames.dm @@ -12,15 +12,13 @@ ///The requirements for this frame to be placed, uses bit flags var/mount_requirements = 0 -/obj/item/mounted/frame/attackby(obj/item/W, mob/user) - ..() - if(istype(W, /obj/item/wrench)) - var/turf/user_turf = get_turf(user) - if(metal_sheets_refunded) - new /obj/item/stack/sheet/metal(user_turf, metal_sheets_refunded) - if(glass_sheets_refunded) - new /obj/item/stack/sheet/glass(user_turf, glass_sheets_refunded) - qdel(src) +/obj/item/mounted/frame/wrench_act(mob/living/user, obj/item/I) + var/turf/user_turf = get_turf(user) + if(metal_sheets_refunded) + new /obj/item/stack/sheet/metal(user_turf, metal_sheets_refunded) + if(glass_sheets_refunded) + new /obj/item/stack/sheet/glass(user_turf, glass_sheets_refunded) + qdel(src) /obj/item/mounted/frame/try_build(turf/on_wall, mob/user) if(!..()) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index ea9539bd2229..6c815fb7bb8d 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -89,7 +89,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( if(!G && !RG && replace) user.put_in_hands(RG) return - + return ..() ////////////////////////////// diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 8cf42add8539..ea09eae34d70 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -568,6 +568,7 @@ GLOBAL_LIST_INIT(cult_recipes, list ( . = ..() icon_state = GET_CULT_DATA(runed_metal_icon_state, initial(icon_state)) item_state = GET_CULT_DATA(runed_metal_item_state, initial(item_state)) + recipes = GLOB.cult_recipes /obj/item/stack/sheet/runed_metal/attack_self(mob/living/user) if(!IS_CULTIST(user)) @@ -597,10 +598,6 @@ GLOBAL_LIST_INIT(cult_recipes, list ( /obj/item/stack/sheet/runed_metal/fifty amount = 50 -/obj/item/stack/sheet/runed_metal/New(loc, amount=null) - recipes = GLOB.cult_recipes - return ..() - ////////////////////////////// // MARK: BRASS ////////////////////////////// diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index e78d031cc8e6..073c36ed94dc 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -171,7 +171,7 @@ title += "[R.title]" title += " ([R.req_amount] [src.singular_name]\s)" if(can_build) - t1 += "[title] " + t1 += "[title] " else t1 += "[title]" continue @@ -182,9 +182,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" var/datum/browser/popup = new(user, "stack", name, recipe_width, recipe_height) popup.set_content(t1) diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm index 4adb39fdb883..085c66cbab3a 100644 --- a/code/game/objects/items/weapons/cigs.dm +++ b/code/game/objects/items/weapons/cigs.dm @@ -132,7 +132,7 @@ LIGHTERS ARE IN LIGHTERS.DM else if(istype(I, /obj/item/melee/energy/sword/saber)) var/obj/item/melee/energy/sword/saber/S = I - if(S.active) + if(HAS_TRAIT(S, TRAIT_ITEM_ACTIVE)) light("[user] makes a violent slashing motion, barely missing [user.p_their()] nose as light flashes. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [name] with [S] in the process.") else if(istype(I, /obj/item/assembly/igniter)) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 2e73d0a61743..62acbe2d863e 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -175,7 +175,7 @@ stage = WIRED update_icon(UPDATE_ICON_STATE) - else if(stage == WIRED && istype(I, /obj/item/wrench)) + else if(stage == WIRED && iswrench(I)) to_chat(user, "You open the grenade and remove the contents.") stage = EMPTY payload_name = null diff --git a/code/game/objects/items/weapons/grenades/firecracker.dm b/code/game/objects/items/weapons/grenades/firecracker.dm new file mode 100644 index 000000000000..accbf90bbc2a --- /dev/null +++ b/code/game/objects/items/weapons/grenades/firecracker.dm @@ -0,0 +1,90 @@ +/obj/item/grenade/firecracker + name = "fire-cracker" + desc = "A firework that's great at making a lot of noise." + det_time = 2 SECONDS + /// The effect that will be randomly played at intervals. + var/sound_effect = 'sound/weapons/gunshots/gunshot_strong.ogg' + /// The minimum number of times it will fire. + var/min_pops = 5 + /// The maximum number of times it fires. + var/max_pops = 20 + /// How long, at least, we'll end up between pops. + var/min_time_between_pops = CLICK_CD_MELEE + /// The longest possible length between fires. + var/max_time_between_pops = 20 DECISECONDS + /// Whether or not to play a smoke sound before going off + var/play_fuse_sound = TRUE + +/obj/item/grenade/firecracker/prime() + . = ..() + if(play_fuse_sound) + playsound(src, 'sound/effects/smoke.ogg', 10, TRUE, -3) + INVOKE_ASYNC(src, PROC_REF(start_popping), TRUE) + +/obj/item/grenade/firecracker/proc/start_popping(del_after = FALSE) + for(var/i in 0 to rand(min_pops, max_pops)) + playsound(src, sound_effect, 100, TRUE) + sleep(rand(min_time_between_pops, max_time_between_pops)) + if(del_after) + qdel(src) + +/obj/item/grenade/firecracker/decoy + name = "decoy grenade" + desc = "A grenade capable of imitating many different sounds." + play_fuse_sound = FALSE + + /// The sounds which this grenade can select. + var/static/list/possible_sounds = list( + "revolver" = 'sound/weapons/gunshots/gunshot_strong.ogg', + "armblade" = 'sound/weapons/armblade.ogg', + "laser" = 'sound/weapons/laser.ogg', + "sniper" = 'sound/weapons/gunshots/gunshot_sniper.ogg', + "pistol" = 'sound/weapons/gunshots/gunshot_pistol.ogg', + "blob" = 'sound/effects/splat.ogg', + "bite" = 'sound/weapons/bite.ogg', + "chainsaw" = 'sound/weapons/chainsaw.ogg' + ) + + /// The currently selected sound for the decoy. + var/selected_sound = "revolver" + +/obj/item/grenade/firecracker/decoy/Initialize(mapload) + . = ..() + selected_sound = possible_sounds[1] + +/obj/item/grenade/firecracker/decoy/examine(mob/user) + . = ..() + if(!user.Adjacent(src)) + return + . += "[src] will sound like \a [selected_sound]." + . += "Alt-Click to change the imitated sound." + . += "Alt-Shift-Click to change the frequency of the sound." + +/obj/item/grenade/firecracker/decoy/AltClick(mob/user) + . = ..() + if(!user.Adjacent(src)) + return + var/selected = tgui_input_list(user, "Choose the decoy sound.", items = possible_sounds) + if(!user.Adjacent(src)) + to_chat(user, "You're too far from [src] to set the sound now!") + return + if(selected) + selected_sound = selected + sound_effect = possible_sounds[selected] + to_chat(user, "[src] will now sound like \a [selected].") + +/obj/item/grenade/firecracker/decoy/AltShiftClick(mob/user) + . = ..() + if(!user.Adjacent(src)) + return + var/min_between_pops_input = tgui_input_number(user, "Select the minimum time between pops (in 1/10s of a second).", "Minimum time", min_time_between_pops, 50, 2) + if(!user.Adjacent(src)) + to_chat(user, "You need to be closer to [src] to set this!") + return + min_time_between_pops = min_between_pops_input + var/max_between_pops_input = tgui_input_number(user, "Select the maximum time between pops (in 1/10s of a second).", "Maximum time", max_time_between_pops, 50, 2) + if(!user.Adjacent(src)) + to_chat(user, "You need to be closer to [src] to set this!") + return + + max_time_between_pops = max_between_pops_input diff --git a/code/game/objects/items/weapons/melee/energy_melee_weapons.dm b/code/game/objects/items/weapons/melee/energy_melee_weapons.dm index b06f34ec70b1..3e9422d4bfeb 100644 --- a/code/game/objects/items/weapons/melee/energy_melee_weapons.dm +++ b/code/game/objects/items/weapons/melee/energy_melee_weapons.dm @@ -14,7 +14,6 @@ name = "generic energy blade" desc = "If you can see this and didn't spawn it in as an admin, make an issue report on GitHub." icon = 'icons/obj/weapons/energy_melee.dmi' - var/active = FALSE /// Damage done when active. Does not stack with force_off. var/force_on = 30 /// Damage done when thrown while active. Does not stack with throwforce_off. @@ -78,8 +77,21 @@ if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) to_chat(user, "You accidentally cut yourself with [src], like a doofus!") user.take_organ_damage(5,5) - active = !active - if(active) + if(HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)) + REMOVE_TRAIT(src, TRAIT_ITEM_ACTIVE, TRAIT_GENERIC) + force = force_off + throwforce = throwforce_off + hitsound = initial(hitsound) + throw_speed = initial(throw_speed) + if(length(attack_verb_on)) + attack_verb = list() + icon_state = initial(icon_state) + w_class = initial(w_class) + playsound(user, 'sound/weapons/saberoff.ogg', 35, 1) //changed it from 50% volume to 35% because deafness + set_light(0) + to_chat(user, "[src] can now be concealed.") + else + ADD_TRAIT(src, TRAIT_ITEM_ACTIVE, TRAIT_GENERIC) force = force_on throwforce = throwforce_on hitsound = 'sound/weapons/blade1.ogg' @@ -95,18 +107,7 @@ w_class = w_class_on playsound(user, 'sound/weapons/saberon.ogg', 35, 1) //changed it from 50% volume to 35% because deafness to_chat(user, "[src] is now active.") - else - force = force_off - throwforce = throwforce_off - hitsound = initial(hitsound) - throw_speed = initial(throw_speed) - if(length(attack_verb_on)) - attack_verb = list() - icon_state = initial(icon_state) - w_class = initial(w_class) - playsound(user, 'sound/weapons/saberoff.ogg', 35, 1) //changed it from 50% volume to 35% because deafness - set_light(0) - to_chat(user, "[src] can now be concealed.") + if(ishuman(user)) var/mob/living/carbon/human/H = user H.update_inv_l_hand() @@ -115,7 +116,9 @@ return /obj/item/melee/energy/get_heat() - return active * 3500 + if(HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)) + return 3500 + return 0 /obj/item/melee/energy/proc/try_sharpen(obj/item/item, amount, max_amount) SIGNAL_HANDLER // COMSIG_ITEM_SHARPEN_ACT @@ -180,14 +183,14 @@ ..() if(item_color == null) item_color = pick("red", "blue", "green", "purple") - AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.5, _parryable_attack_types = ALL_ATTACK_TYPES) + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.5, _parryable_attack_types = ALL_ATTACK_TYPES, _requires_activation = TRUE) /obj/item/melee/energy/sword/examine(mob/user) . = ..() . += "Can parry melee attacks and sometimes blocks ranged energy attacks. Use in hand to turn off and on." /obj/item/melee/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(active) + if(HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)) return ..() return FALSE @@ -198,7 +201,7 @@ /obj/item/melee/energy/sword/cyborg/attack(mob/M, mob/living/silicon/robot/R) if(R.cell) var/obj/item/stock_parts/cell/C = R.cell - if(active && !(C.use(hitcost))) + if(HAS_TRAIT(src, TRAIT_ITEM_ACTIVE) && !(C.use(hitcost))) attack_self(R) to_chat(R, "It's out of charge!") return @@ -251,7 +254,7 @@ item_color = "rainbow" to_chat(user, "RNBW_ENGAGE") - if(active) + if(HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)) icon_state = "swordrainbow" // Updating overlays, copied from welder code. // I tried calling attack_self twice, which looked cool, except it somehow didn't update the overlays!! @@ -265,7 +268,7 @@ /obj/item/melee/energy/sword/saber/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(!active) + if(!HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)) return FALSE . = ..() if(!.) // they did not block the attack @@ -322,13 +325,16 @@ icon_state = "blade" force = 30 //Normal attacks deal esword damage hitsound = 'sound/weapons/blade1.ogg' - active = TRUE throwforce = 1//Throwing or dropping the item deletes it. throw_speed = 3 throw_range = 1 w_class = WEIGHT_CLASS_BULKY //So you can't hide it in your pocket or some such. sharp = TRUE +/obj/item/melee/energy/blade/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_ITEM_ACTIVE, ROUNDSTART_TRAIT) + /obj/item/melee/energy/blade/attack_self(mob/user) return @@ -374,7 +380,7 @@ return var/datum/status_effect/saw_bleed/B = target.has_status_effect(STATUS_EFFECT_SAWBLEED) if(!B) - if(!active) //This isn't in the above if-check so that the else doesn't care about active + if(!HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)) //This isn't in the above if-check so that the else doesn't care about active target.apply_status_effect(STATUS_EFFECT_SAWBLEED) else B.add_bleed(B.bleed_buildup) @@ -394,8 +400,21 @@ if(HAS_TRAIT(H, TRAIT_CLUMSY) && prob(50)) to_chat(H, "You accidentally cut yourself with [src], like a doofus!") H.take_organ_damage(10,10) - active = !active - if(active) + if(HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)) + REMOVE_TRAIT(src, TRAIT_ITEM_ACTIVE, TRAIT_GENERIC) + force = force_off + throwforce = throwforce_off + hitsound = initial(hitsound) + throw_speed = initial(throw_speed) + if(length(attack_verb_on)) + attack_verb = list() + icon_state = initial(icon_state) + w_class = initial(w_class) + playsound(user, 'sound/magic/fellowship_armory.ogg', 35, 1) //changed it from 50% volume to 35% because deafness + set_light(0) + to_chat(user, "You close [src]. It will now attack rapidly and cause fauna to bleed.") + else + ADD_TRAIT(src, TRAIT_ITEM_ACTIVE, TRAIT_GENERIC) force = force_on throwforce = throwforce_on hitsound = 'sound/weapons/bladeslice.ogg' @@ -409,20 +428,8 @@ icon_state = "sword[item_color]" set_light(brightness_on, l_color=colormap[item_color]) w_class = w_class_on - playsound(user, 'sound/magic/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) + playsound(user, 'sound/magic/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (HAS_TRAIT(src, TRAIT_ITEM_ACTIVE) * 30000)) to_chat(user, "You open [src]. It will now cleave enemies in a wide arc and deal additional damage to fauna.") - else - force = force_off - throwforce = throwforce_off - hitsound = initial(hitsound) - throw_speed = initial(throw_speed) - if(length(attack_verb_on)) - attack_verb = list() - icon_state = initial(icon_state) - w_class = initial(w_class) - playsound(user, 'sound/magic/fellowship_armory.ogg', 35, 1) //changed it from 50% volume to 35% because deafness - set_light(0) - to_chat(user, "You close [src]. It will now attack rapidly and cause fauna to bleed.") if(ishuman(user)) var/mob/living/carbon/human/H = user @@ -433,27 +440,27 @@ /obj/item/melee/energy/cleaving_saw/examine(mob/user) . = ..() - . += "It is [active ? "open, will cleave enemies in a wide arc and deal additional damage to fauna":"closed, and can be used for rapid consecutive attacks that cause fauna to bleed"].
\ + . += "It is [HAS_TRAIT(src, TRAIT_ITEM_ACTIVE) ? "open, will cleave enemies in a wide arc and deal additional damage to fauna":"closed, and can be used for rapid consecutive attacks that cause fauna to bleed"].
\ Both modes will build up existing bleed effects, doing a burst of high damage if the bleed is built up high enough.
\ Transforming it immediately after an attack causes the next attack to come out faster.
" /obj/item/melee/energy/cleaving_saw/suicide_act(mob/user) - user.visible_message("[user] is [active ? "closing [src] on [user.p_their()] neck" : "opening [src] into [user.p_their()] chest"]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message("[user] is [HAS_TRAIT(src, TRAIT_ITEM_ACTIVE) ? "closing [src] on [user.p_their()] neck" : "opening [src] into [user.p_their()] chest"]! It looks like [user.p_theyre()] trying to commit suicide!") transform_cooldown = 0 transform_weapon(user, TRUE) return BRUTELOSS /obj/item/melee/energy/cleaving_saw/melee_attack_chain(mob/user, atom/target, params) ..() - if(!active) + if(!HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)) user.changeNext_move(CLICK_CD_MELEE * 0.5) //when closed, it attacks very rapidly /obj/item/melee/energy/cleaving_saw/attack(mob/living/target, mob/living/carbon/human/user) - if(!active || swiping || !target.density || get_turf(target) == get_turf(user)) - if(!active) + if(!HAS_TRAIT(src, TRAIT_ITEM_ACTIVE) || swiping || !target.density || get_turf(target) == get_turf(user)) + if(!HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)) faction_bonus_force = 0 ..() - if(!active) + if(!HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)) faction_bonus_force = initial(faction_bonus_force) else var/turf/user_turf = get_turf(user) diff --git a/code/game/objects/items/weapons/melee/melee_misc.dm b/code/game/objects/items/weapons/melee/melee_misc.dm index 2c7e3e0e3462..58cbe324e8eb 100644 --- a/code/game/objects/items/weapons/melee/melee_misc.dm +++ b/code/game/objects/items/weapons/melee/melee_misc.dm @@ -45,6 +45,40 @@ AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.5, _parryable_attack_types = NON_PROJECTILE_ATTACKS) RegisterSignal(src, COMSIG_PARENT_QDELETING, PROC_REF(alert_admins_on_destroy)) +// Traitor Sword +/obj/item/melee/snakesfang + name = "snakesfang" + desc = "A uniquely curved, black and red sword. Extra-edgy and cutting-edge." + lefthand_file = 'icons/mob/inhands/weapons_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons_righthand.dmi' + icon_state = "snakesfang" + item_state = "snakesfang" + flags = CONDUCT + force = 25 + throwforce = 10 + w_class = WEIGHT_CLASS_BULKY + sharp = TRUE + origin_tech = "combat=6;syndicate=3" + attack_verb = list("slashed", "sliced", "chopped") + hitsound = 'sound/weapons/bladeslice.ogg' + materials = list(MAT_METAL = 1000) + +/obj/item/melee/snakesfang/Initialize(mapload) + . = ..() + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.5, _parryable_attack_types = NON_PROJECTILE_ATTACKS) + +/obj/item/melee/snakesfang/examine_more(mob/user) + . = ..() + . += "A uniquely curved, black and red sword. Extra-edgy and cutting-edge." + . += "" + . += "The MK-IV Enhanced Combat Blade, more colloquially known as the ‘Snakesfang’, is a vicious yet stylish weapon designed \ + by a relatively unknown weapons forge with known ties to the Syndicate. With a wide, curved blade and dual points \ + resembling the fangs of the organization’s serpent motif, the Snakesfang is a statement like no other." + . += "" + . += "While the benefits of its unique design are dubious at best, the Snakesfang is undoubtedly a perilous weapon, with a hardened \ + plastitanium edge that can cause untold harm to a soft target. In the right hands, it can be a terrifying weapon to behold, \ + and it’s said that blood runs down the blade in just the right way, to drip artfully from the twin ‘fangs’ at its apex." + /obj/item/melee/icepick name = "ice pick" desc = "Used for chopping ice. Also excellent for mafia esque murders." diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 3f260fb977b4..604b90b7c54c 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -139,32 +139,34 @@ throw_speed = 3 throw_range = 4 w_class = WEIGHT_CLASS_NORMAL - var/active = FALSE + +/obj/item/shield/riot/tele/add_parry_component() + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.7, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (5 / 3) SECONDS, _requires_activation = TRUE) /obj/item/shield/riot/tele/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(active) + if(HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)) return ..() return FALSE // by not calling the parent the hit_reaction signal is never sent /obj/item/shield/riot/tele/attack_self(mob/living/user) - active = !active - icon_state = "teleriot[active]" - playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1) - - if(active) - force = 8 - throwforce = 5 - throw_speed = 2 - w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_FLAG_BACK - to_chat(user, "You extend \the [src].") - else + if(HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)) + REMOVE_TRAIT(src,TRAIT_ITEM_ACTIVE, TRAIT_GENERIC) force = 3 throwforce = 3 throw_speed = 3 w_class = WEIGHT_CLASS_NORMAL slot_flags = null to_chat(user, "[src] can now be concealed.") + else + ADD_TRAIT(src, TRAIT_ITEM_ACTIVE, TRAIT_GENERIC) + force = 8 + throwforce = 5 + throw_speed = 2 + w_class = WEIGHT_CLASS_BULKY + slot_flags = SLOT_FLAG_BACK + to_chat(user, "You extend \the [src].") + icon_state = "teleriot[HAS_TRAIT(src, TRAIT_ITEM_ACTIVE)]" + playsound(loc, 'sound/weapons/batonextend.ogg', 50, TRUE) if(ishuman(user)) var/mob/living/carbon/human/H = user H.update_inv_l_hand() diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 24257e07a92c..3f6f205721d7 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -725,9 +725,9 @@ icon_state = "fannypack_yellow" item_state = "fannypack_yellow" -/obj/item/storage/belt/rapier - name = "rapier sheath" - desc = "Can hold rapiers." +/obj/item/storage/belt/sheath + name = "sword sheath" + desc = "Can hold swords. If you see this, it is a bug. Please report this on GitHub." icon_state = "sheath" item_state = "sheath" storage_slots = 1 @@ -737,11 +737,7 @@ layer_over_suit = TRUE large = TRUE -/obj/item/storage/belt/rapier/populate_contents() - new /obj/item/melee/rapier(src) - update_icon() - -/obj/item/storage/belt/rapier/attack_hand(mob/user) +/obj/item/storage/belt/sheath/attack_hand(mob/user) if(loc != user) return ..() @@ -759,20 +755,20 @@ else to_chat(user, "[src] is empty!") -/obj/item/storage/belt/rapier/handle_item_insertion(obj/item/W, mob/user, prevent_warning) +/obj/item/storage/belt/sheath/handle_item_insertion(obj/item/W, mob/user, prevent_warning) if(!..()) return playsound(src, 'sound/weapons/blade_sheath.ogg', 20) -/obj/item/storage/belt/rapier/remove_from_storage(obj/item/W, atom/new_location) +/obj/item/storage/belt/sheath/remove_from_storage(obj/item/W, atom/new_location) if(!..()) return playsound(src, 'sound/weapons/blade_unsheath.ogg', 20) -/obj/item/storage/belt/rapier/update_icon_state() +/obj/item/storage/belt/sheath/update_icon_state() if(length(contents)) - icon_state = "[icon_state]-rapier" - item_state = "[item_state]-rapier" + icon_state = "[icon_state]-sword" + item_state = "[item_state]-sword" else icon_state = initial(icon_state) item_state = initial(item_state) @@ -780,6 +776,28 @@ var/mob/living/L = loc L.update_inv_belt() +/obj/item/storage/belt/sheath/rapier + name = "rapier sheath" + desc = "Can hold rapiers." + icon_state = "sheath" + item_state = "sheath" + can_hold = list(/obj/item/melee/rapier) + +/obj/item/storage/belt/sheath/rapier/populate_contents() + new /obj/item/melee/rapier(src) + update_appearance(UPDATE_ICON_STATE) + +/obj/item/storage/belt/sheath/snakesfang + name = "snakesfang scabbard" + desc = "Can hold scimitars." + icon_state = "snakesfangsheath" + item_state = "snakesfangsheath" + can_hold = list(/obj/item/melee/snakesfang) + +/obj/item/storage/belt/sheath/snakesfang/populate_contents() + new /obj/item/melee/snakesfang(src) + update_appearance(UPDATE_ICON_STATE) + // ------------------------------------- // Bluespace Belt // ------------------------------------- diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index 77cc3c0f361a..7d03cf3a7840 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -43,7 +43,7 @@ /obj/item/storage/briefcase/false_bottomed/afterattack(atom/A, mob/user, flag, params) ..() - if(stored_item && isgun(stored_item) && !Adjacent(A)) + if(stored_item && isgun(stored_item)) var/obj/item/gun/stored_gun = stored_item stored_gun.afterattack(A, user, flag, params) diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index f37f7a52c39b..4581d89b6eb1 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -53,7 +53,7 @@ var/icon/new_donut_icon = icon('icons/obj/food/containers.dmi', "[(I - 1)]donut[donut.donut_sprite_type]") . += new_donut_icon -/obj/item/storage/fancy/update_icon_state() +/obj/item/storage/fancy/donut_box/update_icon_state() return /obj/item/storage/fancy/donut_box/populate_contents() @@ -96,13 +96,15 @@ name = "Candle pack" desc = "A pack of red candles." icon = 'icons/obj/candle.dmi' - icon_state = "candlebox5" + icon_state = "candlebox0" icon_type = "candle" item_state = "candlebox5" storage_slots = 5 throwforce = 2 slot_flags = SLOT_FLAG_BELT +/obj/item/storage/fancy/candle_box/full + icon_state = "candlebox5" /obj/item/storage/fancy/candle_box/full/populate_contents() for(var/I in 1 to storage_slots) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index ffac415f5082..7e3157fec859 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -6,40 +6,40 @@ /obj/item/storage/box/syndie_kit/bundle var/list/items = list() -/// 172TC +/// 222TC /obj/item/storage/box/syndie_kit/bundle/spy name = "Spy Bundle" desc = "Complete your objectives quietly with this compilation of stealthy items." items = list( - /obj/item/storage/box/syndie_kit/chameleon, // 20 TC + /obj/item/storage/box/syndie_kit/chameleon, // 10TC /obj/item/card/id/syndicate, // 10TC /obj/item/clothing/shoes/chameleon/noslip, // 10TC - /obj/item/clothing/glasses/hud/security/chameleon, // 10TC + /obj/item/clothing/glasses/hud/security/chameleon, //10TC /obj/item/bio_chip_implanter/storage, // 40TC /obj/item/pen/edagger, // 10TC - /obj/item/pinpointer/advpinpointer, // 20TC + /obj/item/pinpointer/advpinpointer, // 10TC /obj/item/storage/fancy/cigarettes/cigpack_syndicate, // 7TC /obj/item/flashlight/emp, // 20TC /obj/item/chameleon, // 25TC /obj/item/garrote, // 30 TC - /obj/item/door_remote/omni/access_tuner, // 30 TC + /obj/item/door_remote/omni/access_tuner, // 30TC /obj/item/encryptionkey/syndicate) // 10TC -/// 159 +/// 142TC /obj/item/storage/box/syndie_kit/bundle/agent13 name = "Agent 13 Bundle" desc = "Find and eliminate your targets quietly and effectively with this kit." items = list( - /obj/item/clothing/under/chameleon, // 5TC + /obj/item/clothing/under/chameleon, // 1TC. 10TC divided over 10 items from the chameleon kit. /obj/item/card/id/syndicate, // 10TC - /obj/item/storage/box/syndie_kit/stechkin, // 20TC + /obj/item/storage/box/syndie_kit/stechkin, // 26TC. 20TC for stechkin, plus the 2 mags at 3TC /obj/item/suppressor, // 5TC /obj/item/ammo_box/magazine/m10mm, // 3TC - /obj/item/ammo_box/magazine/m10mm/hp, // 6TC + /obj/item/ammo_box/magazine/m10mm/hp, // 7TC /obj/item/garrote, // 30TC /obj/item/door_remote/omni/access_tuner, // 30TC /obj/item/clothing/glasses/chameleon/thermal, // 15TC - /obj/item/storage/briefcase/false_bottomed, // 10 TC + /obj/item/storage/briefcase/false_bottomed, // 10TC /obj/item/bio_chip_implanter/freedom, // 25TC /obj/item/coin/gold, // 0TC /obj/item/encryptionkey/syndicate) // 10TC @@ -57,14 +57,14 @@ /obj/item/storage/backpack/satchel_flat, // 10TC /obj/item/encryptionkey/syndicate) // 10TC -/// 137TC +/// 176TC /obj/item/storage/box/syndie_kit/bundle/bond name = "Agent 007 Bundle" desc = "Shake your Martini and stir up trouble with this bundle of lethal equipment mixed with a spritz of gadgetry to keep things interesting." items = list( - /obj/item/storage/briefcase/false_bottomed, // 20TC + /obj/item/storage/briefcase/false_bottomed, // 10TC /obj/item/suppressor, // 5TC - /obj/item/storage/box/syndie_kit/stechkin, // 20TC + /obj/item/storage/box/syndie_kit/stechkin, // 26TC. 20TC for stechkin, plus the 2 mags at 3TC /obj/item/ammo_box/magazine/m10mm/ap, // 6TC /obj/item/ammo_box/magazine/m10mm/ap, // 6TC /obj/item/clothing/under/suit/really_black, // 0TC @@ -73,25 +73,25 @@ /obj/item/storage/box/syndie_kit/emp, // 10TC /obj/item/clothing/glasses/hud/security/chameleon, // 10TC /obj/item/encryptionkey/syndicate, // 10TC - /obj/item/reagent_containers/drinks/drinkingglass/alliescocktail, // 0TC + /obj/item/reagent_containers/drinks/drinkingglass/alliescocktail, // 0TC /obj/item/storage/box/syndie_kit/pen_bomb, // 30 TC - /obj/item/CQC_manual) // 13TC + /obj/item/CQC_manual) // 50tc -/// 155TC + RCD & Mesons Autoimplanter +/// 145TC + RCD & Mesons Autoimplanter /obj/item/storage/box/syndie_kit/bundle/infiltrator name = "Infiltration Bundle" desc = "Use your teleporter, krav maga and other support tools to jump right into your desired location, quickly leaving as though you were never there." items = list( - /obj/item/storage/box/syndie_kit/teleporter, // 8TC - /obj/item/clothing/gloves/color/black/krav_maga, // 10TC - /obj/item/clothing/glasses/chameleon/thermal, // 6TC - /obj/item/pinpointer/advpinpointer, // 4TC + /obj/item/storage/box/syndie_kit/teleporter, // 40TC + /obj/item/clothing/gloves/color/black/krav_maga, // 50TC + /obj/item/clothing/glasses/chameleon/thermal, // 15TC + /obj/item/pinpointer/advpinpointer, // 10TC /obj/item/rcd/preloaded, // 0TC - /obj/item/storage/box/syndie_kit/space, // 4TC + /obj/item/storage/box/syndie_kit/space, // 20TC /obj/item/autosurgeon/organ/syndicate/oneuse/meson_eyes, // 0TC - /obj/item/encryptionkey/syndicate) // 2TC + /obj/item/encryptionkey/syndicate) // 10TC -/// 185TC +/// 188TC /obj/item/storage/box/syndie_kit/bundle/payday name = "Heist Bundle" desc = "Alright guys, today we're performing a heist on a space station owned by a greedy corporation. Drain the vault of all its worth so we can get that pay dirt!11" @@ -103,15 +103,15 @@ /obj/item/jammer, // 20 TC /obj/item/card/id/syndicate, // 10 TC /obj/item/clothing/under/suit/really_black, // 0TC - /obj/item/clothing/suit/storage/iaa/blackjacket/armored, // 0TC - /obj/item/clothing/gloves/color/latex/nitrile, // 0 TC + /obj/item/clothing/suit/storage/iaa/blackjacket/armored, // 3TC + /obj/item/clothing/gloves/color/latex/nitrile, // 0TC /obj/item/clothing/mask/gas/clown_hat, // 0TC /obj/item/grenade/plastic/c4, // 5 TC /obj/item/thermal_drill/diamond_drill/syndicate, // 5 TC /obj/item/bio_chip_implanter/freedom/prototype, // 10 TC /obj/item/encryptionkey/syndicate) // 10TC -/// 200TC +/// 175TC /obj/item/storage/box/syndie_kit/bundle/implant name = "Bio-chip Bundle" desc = "A few useful bio-chips to give you some options for when you inevitably get captured by the Security." @@ -124,25 +124,25 @@ /obj/item/bio_chip_implanter/storage, // 40TC /obj/item/encryptionkey/syndicate) // 10TC -/// 180TC +/// 220TC /obj/item/storage/box/syndie_kit/bundle/hacker name = "Hacker Bundle" desc = "A kit with everything you need to hack into and disrupt the Station, AI, its cyborgs and the Security team. HACK THE PLANET!" items = list( /obj/item/melee/energy/sword/saber/blue, // 40TC /obj/item/autosurgeon/organ/syndicate/oneuse/hackerman_deck, // 30TC - /obj/item/door_remote/omni/access_tuner, // 30 TC, HACK EVERYTHING + /obj/item/door_remote/omni/access_tuner, // 30TC, HACK EVERYTHING /obj/item/encryptionkey/syndicate, // 10TC /obj/item/encryptionkey/binary, // 25TC /obj/item/card/id/syndicate, // 10TC /obj/item/storage/box/syndie_kit/emp, // 10TC /obj/item/aiModule/toyAI, // 0TC - /obj/item/aiModule/syndicate, // 15 TC - /obj/item/storage/box/syndie_kit/camera_bug, // 5 TC - /obj/item/bio_chip_implanter/freedom/prototype, // 10 TC + /obj/item/aiModule/syndicate, // 15TC + /obj/item/storage/box/syndie_kit/camera_bug, // 5TC + /obj/item/bio_chip_implanter/freedom/prototype, // 10TC /obj/item/storage/belt/military/traitor/hacker, // 15TC + AI detector for 5 TC /obj/item/clothing/gloves/combat, // accounted in belt + toolbox - /obj/item/flashlight/emp) // 4TC + /obj/item/flashlight/emp) // 20TC /// 170TC + Telekinesis /obj/item/storage/box/syndie_kit/bundle/darklord @@ -152,7 +152,7 @@ /obj/item/melee/energy/sword/saber/red, // 40TC /obj/item/melee/energy/sword/saber/red, // 40TC /obj/item/bio_chip_implanter/shock, // 50TC - /obj/item/dnainjector/telemut/darkbundle, // ?TC + /obj/item/dnainjector/telemut/darkbundle, // 0TC /obj/item/clothing/suit/hooded/chaplain_hoodie, // 0TC /obj/item/clothing/glasses/meson/engine/tray, // 0TC /obj/item/clothing/mask/chameleon/voice_change, // 10TC @@ -173,39 +173,39 @@ /obj/item/clothing/gloves/combat, // ~1TC /obj/item/clothing/under/suit/really_black, // 0TC /obj/item/clothing/suit/storage/iaa/blackjacket/armored, // 3TC - /obj/item/encryptionkey/syndicate) // 15TC + /obj/item/encryptionkey/syndicate) // 10TC -/// 133TC + Tactical Grenadier Belt +/// 215TC + Tactical Grenadier Belt /obj/item/storage/box/syndie_kit/bundle/grenadier name = "Grenade Bundle" desc = "A variety of grenades and pyrotechnics to ensure you can blast your way through any situation." items = list( - /obj/item/storage/belt/grenade/tactical, // Contains 2 Frag and EMP grenades, 5 C4 Explosives, 5 Smoke and Gluon grenades and 1 Minibomb grenade ~20TC Estimate - /obj/item/storage/box/syndie_kit/stechkin, // 20TC - /obj/item/ammo_box/magazine/m10mm/fire, // 6TC - /obj/item/ammo_box/magazine/m10mm/fire, // 6TC + /obj/item/storage/belt/grenade/tactical, // ~60TC Contains 2 Frag and EMP grenades, 5 C4 Explosives, 5 Smoke and Gluon grenades and 1 Minibomb grenade + /obj/item/storage/box/syndie_kit/stechkin, // 26TC. 20TC for stechkin, plus the 2 mags at 3TC + /obj/item/ammo_box/magazine/m10mm/fire, // 9TC + /obj/item/ammo_box/magazine/m10mm/fire, // 9TC /obj/item/mod/control/pre_equipped/traitor, // 30TC /obj/item/clothing/gloves/combat, // ~1TC /obj/item/card/id/syndicate, // 10TC /obj/item/clothing/shoes/chameleon/noslip, // 10TC /obj/item/storage/box/syndidonkpockets, // 10 TC - /obj/item/storage/box/syndie_kit/frag_grenades, // One box, as a treat + /obj/item/storage/box/syndie_kit/frag_grenades, // 40tc /obj/item/encryptionkey/syndicate) // 10TC -/// 75TC + modules + laser gun +/// 80TC + modules + laser gun /obj/item/storage/box/syndie_kit/bundle/metroid name = "Modsuit Bundle" desc = "Don the equipment of an intergalactic bounty hunter and blast your way through the station!" items = list( /obj/item/mod/control/pre_equipped/traitor_elite, // 45TC /obj/item/mod/module/visor/thermal, // 15TC - /obj/item/mod/module/stealth, // ?TC - /obj/item/mod/module/power_kick, // ?TC - /obj/item/mod/module/sphere_transform, // ?TC - /obj/item/autosurgeon/organ/syndicate/oneuse/laser_arm, // ?TC - /obj/item/pinpointer/advpinpointer, // 20TC - /obj/item/autosurgeon/organ/syndicate/oneuse/hardened_heart, // Like adrenals but no speed / healing - /obj/item/storage/belt/utility/full/multitool, // 15TC + /obj/item/mod/module/stealth, // 0TC + /obj/item/mod/module/power_kick, // 0TC + /obj/item/mod/module/sphere_transform, // 0TC + /obj/item/autosurgeon/organ/syndicate/oneuse/laser_arm, // 0TC + /obj/item/pinpointer/advpinpointer, // 10TC + /obj/item/autosurgeon/organ/syndicate/oneuse/hardened_heart, // 0TC decent stamina regen, but no speed/healing. + /obj/item/storage/belt/utility/full/multitool, // 0TC /obj/item/clothing/head/collectable/slime, // 0TC priceless /obj/item/encryptionkey/syndicate) // 10TC @@ -214,20 +214,20 @@ name = "Ocelot Bundle" desc = "Get pretty good with two revolvers, two speedloaders, and a backup combat knife." items = list( - /obj/item/kitchen/knife/combat, // 0 TC but very robust - /obj/item/gun/projectile/revolver, // 65 TC - /obj/item/gun/projectile/revolver, // 65 TC - /obj/item/ammo_box/a357, // 15 TC - /obj/item/ammo_box/a357, // 15 TC - /obj/item/encryptionkey/syndicate, // 10 TC - /obj/item/clothing/under/syndicate/combat, // 0 TC - /obj/item/clothing/accessory/holster, // 0 TC - /obj/item/clothing/accessory/scarf/red, // 0 TC - /obj/item/clothing/head/beret, // 0 TC - /obj/item/clothing/gloves/combat, // 0 TC - /obj/item/clothing/shoes/combat) // 0 TC - -// 175 TC + /obj/item/kitchen/knife/combat, // 0TC but very robust + /obj/item/gun/projectile/revolver, // 65TC + /obj/item/gun/projectile/revolver, // 65TC + /obj/item/ammo_box/a357, // 15TC + /obj/item/ammo_box/a357, // 15TC + /obj/item/encryptionkey/syndicate, // 10TC + /obj/item/clothing/under/syndicate/combat, //0TC + /obj/item/clothing/accessory/holster, // 0TC + /obj/item/clothing/accessory/scarf/red, //0TC + /obj/item/clothing/head/beret, // 0TC + /obj/item/clothing/gloves/combat, // 0TC + /obj/item/clothing/shoes/combat) // 0TC + +// 147 TC /obj/item/storage/box/syndie_kit/bundle/operative name = "\"Operative\" Bundle" desc = "Glory to the Syndicate! Only the essentials for destroying Nanotrasen in this important kit." @@ -235,14 +235,14 @@ /obj/item/mod/control/pre_equipped/traitor, // 30TC /obj/item/card/id/syndi_scan_only, // ~2TC? /obj/item/encryptionkey/syndicate, // 10tc - /obj/item/melee/energy/sword/saber/red, // 40tc - /obj/item/shield/energy, // 40tc - /obj/item/pinpointer/advpinpointer, // 20tc, get dat fuckin disk - /obj/item/storage/belt/military, // 10tc - /obj/item/grenade/plastic/c4, // 5tc - /obj/item/bio_chip_implanter/proto_adrenalin, // 18tc - /obj/item/toy/figure/crew/syndie, // 0tc - /obj/item/clothing/under/syndicate // 0tc + /obj/item/melee/energy/sword/saber/red, // 40TC + /obj/item/shield/energy, // 40TC + /obj/item/pinpointer/advpinpointer, // 10TC, get dat fuckin disk + /obj/item/storage/belt/military, // 10TC + /obj/item/grenade/plastic/c4, // 5TC + /obj/item/bio_chip_implanter/proto_adrenalin, // 10TC + /obj/item/toy/figure/crew/syndie, // 0TC + /obj/item/clothing/under/syndicate // 0TC ) // 250 TC worth of credits @@ -250,46 +250,46 @@ name = "Big Spender Bundle" desc = "It's money. I don't need to explain more." items = list( - /obj/item/clothing/under/suit/really_black, // 0 TC - /obj/item/clothing/shoes/laceup, // 0 TC - /obj/item/clothing/glasses/monocle, // 0 TC - /obj/item/clothing/gloves/color/white, // 0 TC - /obj/item/clothing/head/that, // 0 TC - /obj/item/storage/secure/briefcase, // 0 TC - /// syndie briefcase has 600 credits for 5 TC. + /obj/item/clothing/under/suit/really_black, // 0TC + /obj/item/clothing/shoes/laceup, // 0TC + /obj/item/clothing/glasses/monocle, // 0TC + /obj/item/clothing/gloves/color/white, // 0TC + /obj/item/clothing/head/that, // 0TC + /obj/item/storage/secure/briefcase, // 0TC + // syndie briefcase has 600 credits for 5 TC. /obj/item/stack/spacecash/c10000, /obj/item/stack/spacecash/c10000, /obj/item/stack/spacecash/c10000 ) -// 211 TC of maint loot, higher than other bundles because it doesn't combo well +// 209 TC of maint loot, higher than other bundles because it doesn't combo well /obj/item/storage/box/syndie_kit/bundle/maint_loot name = "Maintenance Loot Bundle" desc = "One of our interns found all of this lying in a Nanotrasen Maintenance tunnels. Reduce, Reuse, Recycle!" items = list( - /obj/item/storage/bag/plasticbag, // 1 TC - /obj/item/grenade/clown_grenade, // 15 TC - /obj/item/seeds/ambrosia/cruciatus, // 5 TC - /obj/item/gun/projectile/automatic/pistol, // 20 TC - /obj/item/ammo_box/magazine/m10mm, // 3 TC - /obj/item/soap/syndie, // 5 TC - /obj/item/suppressor, // 5 TC - /obj/item/clothing/under/chameleon, // 3 TC - /obj/item/clothing/shoes/chameleon/noslip, // 10 TC - /obj/item/clothing/mask/chameleon/voice_change, // 10 TC - /obj/item/dnascrambler, // 7 TC - /obj/item/storage/backpack/satchel_flat, // 10 TC - /obj/item/storage/toolbox/syndicate, // 5 TC - /obj/item/storage/backpack/duffel/syndie/med/surgery, // 10 TC - /obj/item/storage/belt/military/traitor, // 10 TC - /obj/item/storage/box/syndie_kit/space, // 20 TC - /obj/item/multitool/ai_detect, // 5 TC - /obj/item/bio_chip_implanter/storage, // 40 TC - /obj/item/deck/cards/syndicate, // 2 TC - /obj/item/storage/secure/briefcase/syndie, // 5 TC - /obj/item/storage/fancy/cigarettes/cigpack_syndicate, // 7 TC - /obj/item/clothing/suit/jacket/bomber/syndicate, // 3 TC - /obj/item/melee/knuckleduster/syndie, // 10 TC + /obj/item/storage/bag/plasticbag, // 1TC + /obj/item/grenade/clown_grenade, // 15TC + /obj/item/seeds/ambrosia/cruciatus, // 5TC + /obj/item/gun/projectile/automatic/pistol, // 20TC + /obj/item/ammo_box/magazine/m10mm, // 3TC + /obj/item/soap/syndie, // 5TC + /obj/item/suppressor, // 5TC + /obj/item/clothing/under/chameleon, // 1TC. 10TC divided over 10 items. + /obj/item/clothing/shoes/chameleon/noslip, // 10TC + /obj/item/clothing/mask/chameleon/voice_change, // 10TC + /obj/item/dnascrambler, // 7TC + /obj/item/storage/backpack/satchel_flat, // 10TC + /obj/item/storage/toolbox/syndicate, // 5TC + /obj/item/storage/backpack/duffel/syndie/med/surgery, // 10TC + /obj/item/storage/belt/military/traitor, // 10TC + /obj/item/storage/box/syndie_kit/space, // 20TC + /obj/item/multitool/ai_detect, // 5TC + /obj/item/bio_chip_implanter/storage, // 40TC + /obj/item/deck/cards/syndicate, // 2TC + /obj/item/storage/secure/briefcase/syndie, // 5TC + /obj/item/storage/fancy/cigarettes/cigpack_syndicate, // 7TC + /obj/item/clothing/suit/jacket/bomber/syndicate, // 3TC + /obj/item/melee/knuckleduster/syndie, // 10TC ) /obj/item/storage/box/syndie_kit/bundle/populate_contents() @@ -556,3 +556,10 @@ /obj/item/storage/box/syndie_kit/pen_bomb/populate_contents() new /obj/item/grenade/syndieminibomb/pen(src) + +/obj/item/storage/box/syndie_kit/decoy + name = "\improper Decoy Grenade kit" + +/obj/item/storage/box/syndie_kit/decoy/populate_contents() + for(var/i in 1 to 5) + new /obj/item/grenade/firecracker/decoy(src) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 5885c3a39ae6..38f5ff839e4b 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -183,12 +183,9 @@ var/mob/living/L = M if(user.a_intent == INTENT_HARM) - . = ..() // Whack them too if in harm intent - if(.) // True is returned when blocked, false when not. I know. - return if(turned_on) - baton_stun(L, user, ignore_shield_check = TRUE) - return + baton_stun(L, user) + return ..() // Whack them too if in harm intent if(!turned_on) user.do_attack_animation(L) @@ -199,8 +196,8 @@ if(baton_stun(L, user)) user.do_attack_animation(L) -/// returning false results in no baton attack animation, returning true results in an animation. If ignore_shield_check is true, the baton will not run check shields, and will hit if not on cooldown. -/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user, skip_cooldown = FALSE, ignore_shield_check = FALSE) +/// returning false results in no baton attack animation, returning true results in an animation. +/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user, skip_cooldown = FALSE) if(cooldown > world.time && !skip_cooldown) return FALSE @@ -211,7 +208,7 @@ cooldown = world.time + initial(cooldown) // tracks the world.time when hitting will be next available. if(ishuman(L)) var/mob/living/carbon/human/H = L - if(!ignore_shield_check && H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) //No message; check_shields() handles that + if(H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) //No message; check_shields() handles that playsound(L, 'sound/weapons/genhit.ogg', 50, TRUE) return FALSE H.Confused(10 SECONDS) @@ -314,7 +311,7 @@ QDEL_NULL(sparkler) return ..() -/obj/item/melee/baton/cattleprod/baton_stun(mob/living/L, mob/user, skip_cooldown = FALSE, ignore_shield_check = FALSE) +/obj/item/melee/baton/cattleprod/baton_stun(mob/living/L, mob/user, skip_cooldown = FALSE) if(sparkler.activate()) return ..() diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index 86685a831972..2fd912cf4501 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -23,6 +23,8 @@ noz = make_noz() /obj/item/watertank/Destroy() + if(on) + remove_noz() QDEL_NULL(noz) return ..() @@ -69,12 +71,6 @@ M.unEquip(noz, 1) return -/obj/item/watertank/Destroy() - if(on) - remove_noz() - QDEL_NULL(noz) - return ..() - /obj/item/watertank/attack_hand(mob/user) if(loc == user) toggle_mister(user) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 121e103b2f41..328b49f4730c 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -29,6 +29,7 @@ /obj/item/fireaxe/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_FORCES_OPEN_DOORS_ITEM, ROUNDSTART_TRAIT) + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.7, _parryable_attack_types = MELEE_ATTACK, _parry_cooldown = (10 / 3) SECONDS, _requires_two_hands = TRUE) // 2.3333 seconds of cooldown for 30% uptime AddComponent(/datum/component/two_handed, force_unwielded = force_unwielded, force_wielded = force_wielded, icon_wielded = "[base_icon_state]1") /obj/item/fireaxe/update_icon_state() //Currently only here to fuck with the on-mob icons. @@ -52,10 +53,6 @@ force_wielded = 23 needs_permit = TRUE -/obj/item/fireaxe/boneaxe/Initialize(mapload) - . = ..() - AddComponent(/datum/component/two_handed, force_wielded = force_wielded, icon_wielded = "[base_icon_state]1") - /obj/item/fireaxe/energized desc = "Someone with a love for fire axes decided to turn this one into a high-powered energy weapon. Seems excessive." force_wielded = 35 @@ -109,7 +106,6 @@ throw_range = 5 w_class = WEIGHT_CLASS_SMALL var/w_class_on = WEIGHT_CLASS_BULKY - armour_penetration_flat = 10 armour_penetration_percentage = 50 origin_tech = "magnets=4;syndicate=5" @@ -123,8 +119,6 @@ var/blade_color var/brightness_on = 2 var/colormap = list(red = LIGHT_COLOR_RED, blue = LIGHT_COLOR_LIGHTBLUE, green = LIGHT_COLOR_GREEN, purple = LIGHT_COLOR_PURPLE, rainbow = LIGHT_COLOR_WHITE) - - var/force_unwielded = 3 var/force_wielded = 34 var/wieldsound = 'sound/weapons/saberon.ogg' @@ -134,7 +128,7 @@ . = ..() if(!blade_color) blade_color = pick("red", "blue", "green", "purple") - AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.25, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (4 / 3) SECONDS) // 0.3333 seconds of cooldown for 75% uptime + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.25, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (4 / 3) SECONDS, _requires_two_hands = TRUE) // 0.3333 seconds of cooldown for 75% uptime AddComponent(/datum/component/two_handed, force_wielded = force_wielded, force_unwielded = force_unwielded, wieldsound = wieldsound, unwieldsound = unwieldsound, wield_callback = CALLBACK(src, PROC_REF(on_wield)), unwield_callback = CALLBACK(src, PROC_REF(on_unwield)), only_sharp_when_wielded = TRUE) /obj/item/dualsaber/update_icon_state() @@ -261,6 +255,7 @@ /obj/item/spear/Initialize(mapload) . = ..() + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.7, _parryable_attack_types = MELEE_ATTACK, _parry_cooldown = (10 / 3) SECONDS, _requires_two_hands = TRUE) // 2.3333 seconds of cooldown for 30% uptime AddComponent(/datum/component/two_handed, \ force_wielded = force_wielded, \ force_unwielded = force_unwielded, \ @@ -566,6 +561,7 @@ /obj/item/singularityhammer/Initialize(mapload) . = ..() + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.25, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (4 / 3) SECONDS, _requires_two_hands = TRUE) // 0.3333 seconds of cooldown for 75% uptime AddComponent(/datum/component/two_handed, \ force_wielded = 40, \ force_unwielded = force, \ @@ -635,6 +631,7 @@ /obj/item/mjollnir/Initialize(mapload) . = ..() + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.25, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (4 / 3) SECONDS, _requires_two_hands = TRUE) // 0.3333 seconds of cooldown for 75% uptime AddComponent(/datum/component/two_handed, \ force_wielded = 25, \ force_unwielded = force, \ @@ -685,6 +682,7 @@ /obj/item/knighthammer/Initialize(mapload) . = ..() START_PROCESSING(SSobj, src) + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.25, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (4 / 3) SECONDS, _requires_two_hands = TRUE) // 0.3333 seconds of cooldown for 75% uptime AddComponent(/datum/component/two_handed, \ force_wielded = 30, \ force_unwielded = force, \ @@ -889,6 +887,7 @@ /obj/item/push_broom/Initialize(mapload) . = ..() + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.25, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (7 / 5) SECONDS, _requires_two_hands = TRUE) AddComponent(/datum/component/two_handed, \ force_wielded = 12, \ force_unwielded = force, \ @@ -959,7 +958,7 @@ /obj/item/push_broom/traitor/Initialize(mapload) . = ..() - AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.25, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (4 / 3) SECONDS) // 0.3333 seconds of cooldown for 75% uptime + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.25, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (4 / 3) SECONDS, _requires_two_hands = TRUE) // 0.3333 seconds of cooldown for 75% uptime // parent component handles this AddComponent(/datum/component/two_handed, force_wielded = 25, force_unwielded = force) @@ -1047,7 +1046,7 @@ . = ..() ADD_TRAIT(src, TRAIT_FORCES_OPEN_DOORS_ITEM, ROUNDSTART_TRAIT) ADD_TRAIT(src, TRAIT_SUPERMATTER_IMMUNE, ROUNDSTART_TRAIT) //so it can't be dusted by the SM - AddComponent(/datum/component/parry, _stamina_constant = 0, _stamina_coefficient = 0.25, _parryable_attack_types = ALL_ATTACK_TYPES) + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.25, _parryable_attack_types = ALL_ATTACK_TYPES, _parry_cooldown = (4 / 3) SECONDS, _requires_two_hands = TRUE) // 0.3333 seconds of cooldown for 75% uptime AddComponent(/datum/component/two_handed, force_wielded = 40, force_unwielded = force, icon_wielded = "[base_icon_state]1") /obj/item/supermatter_halberd/update_icon_state() diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 77878294b5ab..6848767af43f 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -67,19 +67,12 @@ // In the far future no checks are made in an overriding Topic() beyond if(..()) return // Instead any such checks are made in CanUseTopic() if(ui_status(usr, state, href_list) == UI_INTERACTIVE) - CouldUseTopic(usr) + var/atom/host = ui_host() + host.add_fingerprint(usr) return FALSE - CouldNotUseTopic(usr) return TRUE -/obj/proc/CouldUseTopic(mob/user) - var/atom/host = ui_host() - host.add_fingerprint(user) - -/obj/proc/CouldNotUseTopic(mob/user) - return - /obj/Destroy() if(!ismachinery(src)) if(!speed_process) @@ -89,15 +82,6 @@ STOP_PROCESSING(SSfastprocess, src) return ..() -//user: The mob that is suiciding -//damagetype: The type of damage the item will inflict on the user -//BRUTELOSS = 1 -//FIRELOSS = 2 -//TOXLOSS = 4 -//OXYLOSS = 8 -//SHAME = 16 -//OBLITERATION = 32 - //Output a creative message and then return the damagetype done /obj/proc/suicide_act(mob/user) return FALSE @@ -164,12 +148,8 @@ /mob/proc/unset_machine() if(machine) UnregisterSignal(machine, COMSIG_PARENT_QDELETING) - machine.on_unset_machine(src) machine = null -//called when the user unsets the machine. -/atom/movable/proc/on_unset_machine(mob/user) - return /mob/proc/set_machine(obj/O) if(src.machine) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm index 3c6dfde5b389..93d37f5f1fa6 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm @@ -14,7 +14,7 @@ new /obj/item/storage/bag/garment/captain(src) new /obj/item/cartridge/captain(src) new /obj/item/radio/headset/heads/captain/alt(src) - new /obj/item/storage/belt/rapier(src) + new /obj/item/storage/belt/sheath/rapier(src) new /obj/item/gun/energy/gun(src) new /obj/item/flash(src) new /obj/item/door_remote/captain(src) diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index 9d177ce35766..d2c956ece582 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -82,10 +82,6 @@ /obj/structure/closet/statue/open() return -/obj/structure/closet/statue/open() - return - - /obj/structure/closet/statue/close() return diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index d2d6a69bca23..bf36273ab16b 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -77,10 +77,8 @@ continue if(ismob(O) && !HAS_TRAIT(O, TRAIT_CONTORTED_BODY)) continue - if(istype(O, /obj/structure/bed)) //This is only necessary because of rollerbeds and swivel chairs. - var/obj/structure/bed/B = O - if(B.has_buckled_mobs()) - continue + if(O.has_buckled_mobs()) // You can't put mobs into crates, so naturally if a mob is attached to something, it shouldn't be able to go in the crate + continue O.forceMove(src) itemcount++ diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index 9eacf37ffb57..3753873db312 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -29,17 +29,16 @@ . = ..() . += "You can Alt-Click [src] to activate it." -/obj/structure/chair/e_chair/attackby(obj/item/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/wrench)) - var/obj/structure/chair/C = new /obj/structure/chair(loc) - playsound(loc, W.usesound, 50, 1) - C.dir = dir - part.loc = loc - part.master = null - part = null - qdel(src) - return - return ..() +/obj/structure/chair/e_chair/wrench_act(mob/user, obj/item/I) + . = TRUE + var/obj/structure/chair/C = new /obj/structure/chair(loc) + I.play_tool_sound(src, 50) + C.dir = dir + part.loc = loc + part.master = null + part = null + visible_message("[user] deconstructs [src].") + qdel(src) /obj/structure/chair/e_chair/AltClick(mob/user) if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user)) diff --git a/code/game/objects/structures/engicart.dm b/code/game/objects/structures/engicart.dm index 7a605c46ff6c..37b69f505c16 100644 --- a/code/game/objects/structures/engicart.dm +++ b/code/game/objects/structures/engicart.dm @@ -82,24 +82,35 @@ update_icon(UPDATE_OVERLAYS) else to_chat(user, fail_msg) - else if(istype(I, /obj/item/wrench)) - if(!anchored && !isinspace()) - playsound(src.loc, I.usesound, 50, 1) - user.visible_message( \ - "[user] tightens \the [src]'s casters.", \ - " You have tightened \the [src]'s casters.", \ - "You hear ratchet.") - anchored = TRUE - else if(anchored) - playsound(src.loc, I.usesound, 50, 1) - user.visible_message( \ - "[user] loosens \the [src]'s casters.", \ - " You have loosened \the [src]'s casters.", \ - "You hear ratchet.") - anchored = FALSE else to_chat(usr, "You cannot interface your modules [src]!") +/obj/structure/engineeringcart/tool_act(mob/living/user, obj/item/I, tool_type) + if(I.is_robot_module()) + to_chat(user, "You cannot interface your modules [src]!") + return FALSE + return ..() + +/obj/structure/engineeringcart/wrench_act(mob/living/user, obj/item/I) + if(!anchored && !isinspace()) + I.play_tool_sound(src, I.tool_volume) + user.visible_message( + "[user] tightens [src]'s casters.", + "You have tightened [src]'s casters.", + "You hear ratchet." + ) + anchored = TRUE + else if(anchored) + I.play_tool_sound(src, I.tool_volume) + user.visible_message( + "[user] loosens [src]'s casters.", + " You have loosened [src]'s casters.", + "You hear ratchet." + ) + anchored = FALSE + + return TRUE + /obj/structure/engineeringcart/attack_hand(mob/user) var/list/engicart_items = list() diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 47e9c6ffdfd0..effa8969f1c8 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -36,9 +36,6 @@ /obj/structure/flora/tree/dead/Initialize(mapload) . = ..() AddComponent(/datum/component/largetransparency, 0, 1, 0, 0) - -/obj/structure/flora/tree/dead/Initialize(mapload) - . = ..() icon_state = "tree_[rand(1, 6)]" /obj/structure/flora/tree/palm diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm index f816563f3a93..8dd48277574e 100644 --- a/code/game/objects/structures/fluff.dm +++ b/code/game/objects/structures/fluff.dm @@ -10,17 +10,18 @@ opacity = FALSE var/deconstructible = TRUE -/obj/structure/fluff/attackby(obj/item/I, mob/living/user, params) - if(istype(I, /obj/item/wrench) && deconstructible) - user.visible_message("[user] starts disassembling [src]...", "You start disassembling [src]...") - playsound(loc, I.usesound, 50, 1) - if(do_after(user, 5 SECONDS * I.toolspeed, target = src)) - user.visible_message("[user] disassembles [src]!", "You break down [src] into scrap metal.") - playsound(user, 'sound/items/deconstruct.ogg', 50, 1) - new /obj/item/stack/sheet/metal(drop_location()) - qdel(src) - return - return ..() +/obj/structure/fluff/wrench_act(mob/living/user, obj/item/I) + if(!deconstructible) + return FALSE + + user.visible_message("[user] starts disassembling [src]...", "You start disassembling [src]...") + playsound(loc, I.usesound, 50, TRUE) + if(I.use_tool(src, user, 5 SECONDS, 0, 50)) + user.visible_message("[user] disassembles [src]!", "You break down [src] into scrap metal.") + playsound(user, 'sound/items/deconstruct.ogg', 50, TRUE) + new /obj/item/stack/sheet/metal(drop_location()) + qdel(src) + return TRUE /// Empty terrariums are created when a preserved terrarium in a lavaland seed vault is activated. /obj/structure/fluff/empty_terrarium diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index f32aa68482e3..210dbed1bb91 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -25,7 +25,10 @@ . = ..() . += "A powered wire underneath this will cause the grille to shock anyone who touches the grill. An electric shock may leap forth if the grill is damaged." . += "Use wirecutters to deconstruct this item." - + if(anchored) + . += "It's secured in place with screws. The rods look like they could be cut through." + else + . += "The anchoring screws are unscrewed. The rods look like they could be cut through." /obj/structure/grille/fence var/width = 3 @@ -64,13 +67,6 @@ return icon_state = "grille50_[rand(0,3)]" -/obj/structure/grille/examine(mob/user) - . = ..() - if(anchored) - . += "It's secured in place with screws. The rods look like they could be cut through." - if(!anchored) - . += "The anchoring screws are unscrewed. The rods look like they could be cut through." - /obj/structure/grille/Bumped(atom/user) if(ismob(user)) if(!(shockcooldown <= world.time)) diff --git a/code/game/objects/structures/guillotine.dm b/code/game/objects/structures/guillotine.dm index 676c3f7786f1..3061e4dbbac3 100644 --- a/code/game/objects/structures/guillotine.dm +++ b/code/game/objects/structures/guillotine.dm @@ -32,6 +32,11 @@ LAZYINITLIST(buckled_mobs) return ..() +/obj/structure/guillotine/Destroy() + if(has_buckled_mobs()) + unbuckle_all_mobs() + return ..() + /obj/structure/guillotine/examine(mob/user) . = ..() diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index 6ed12684b0dc..e95355137716 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -10,17 +10,19 @@ anchored = TRUE max_integrity = 200 +/obj/structure/kitchenspike_frame/wrench_act(mob/living/user, obj/item/I) + if(!I.tool_use_check(user, 0)) + return FALSE + TOOL_ATTEMPT_DISMANTLE_MESSAGE + if(!I.use_tool(src, user, 4 SECONDS, volume = I.tool_volume)) + return TRUE + TOOL_DISMANTLE_SUCCESS_MESSAGE + deconstruct(TRUE) + return TRUE + /obj/structure/kitchenspike_frame/attackby(obj/item/I, mob/user, params) add_fingerprint(user) - if(istype(I, /obj/item/wrench)) - if(!I.tool_use_check(user, 0)) - return - TOOL_ATTEMPT_DISMANTLE_MESSAGE - if(!I.use_tool(src, user, 40, volume = I.tool_volume)) - return - TOOL_DISMANTLE_SUCCESS_MESSAGE - deconstruct(TRUE) - else if(istype(I, /obj/item/stack/rods)) + if(istype(I, /obj/item/stack/rods)) var/obj/item/stack/rods/R = I if(R.get_amount() >= 4) R.use(4) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 82218998c4d3..bebc1428a254 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -24,9 +24,6 @@ /obj/structure/lattice/examine(mob/user) . = ..() . += deconstruction_hints(user) - -/obj/structure/lattice/examine(mob/user) - . = ..() . += "Add a floor tile to build a floor on top of the lattice." /obj/structure/lattice/proc/deconstruction_hints(mob/user) diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 5e9d5804a4da..82fcc89c9992 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -464,14 +464,33 @@ lefthand_file = 'icons/mob/inhands/chairs_lefthand.dmi' righthand_file = 'icons/mob/inhands/chairs_righthand.dmi' w_class = WEIGHT_CLASS_HUGE - force = 8 + force = 6 throwforce = 10 throw_range = 3 hitsound = 'sound/items/trayhit1.ogg' hit_reaction_chance = 50 materials = list(MAT_METAL = 2000) - var/break_chance = 5 //Likely hood of smashing the chair. + /// Likelihood of smashing the chair. + var/break_chance = 5 + /// Used for when placing a chair back down. var/obj/structure/chair/origin_type = /obj/structure/chair + // Twohanded Component Vars + /// force applied with one hand. + var/force_unwielded = 6 + /// force applied with two hands. + var/force_wielded = 8 + // Parry Component Vars when wielding + /// the flat amount of damage the shield user takes per non-perfect parry + var/stamina_constant = 2 + /// stamina_coefficient * damage * time_since_time_parried = stamina damage taken per non perfect parry + var/stamina_coefficient = 1.5 + /// the attack types that are considered for parrying + var/parryable_attack_types = NON_PROJECTILE_ATTACKS + +/obj/item/chair/Initialize(mapload) + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded = force_unwielded, force_wielded = force_wielded) + AddComponent(/datum/component/parry, _stamina_constant = stamina_constant, _stamina_coefficient = stamina_coefficient, _parryable_attack_types = parryable_attack_types) /obj/item/chair/light icon_state = "chair_greyscale_toppled" @@ -482,11 +501,13 @@ icon = 'icons/obj/chairs.dmi' icon_state = "stool_toppled" item_state = "stool" - force = 10 - throwforce = 10 + force = 8 + throwforce = 8 w_class = WEIGHT_CLASS_HUGE origin_type = /obj/structure/chair/stool break_chance = 0 //It's too sturdy. + force_unwielded = 8 + force_wielded = 10 /obj/item/chair/stool/bar name = "bar stool" @@ -501,8 +522,10 @@ item_state = "stool_bamboo" origin_type = /obj/structure/chair/stool/bamboo -/obj/item/chair/attack_self(mob/user) - plant(user) +/obj/item/chair/AltClick(mob/user) + . = ..() + if(Adjacent(user)) + plant(user) /obj/item/chair/proc/plant(mob/user) if(QDELETED(src)) @@ -560,6 +583,10 @@ return ..() +/obj/item/chair/examine(mob/user) + . = ..() + . += "You can Alt-Click [src] to place it down." + /obj/item/chair/wood name = "wooden chair" icon_state = "wooden_chair_toppled" diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm index d38485b0c9b4..b5e20b076c96 100644 --- a/code/game/objects/structures/tank_dispenser.dm +++ b/code/game/objects/structures/tank_dispenser.dm @@ -103,17 +103,19 @@ if(istype(I, /obj/item/tank/internals/plasma)) try_insert_tank(user, stored_plasma_tanks, I) return - - if(istype(I, /obj/item/wrench)) - if(anchored) - to_chat(user, "You lean down and unwrench [src].") - anchored = FALSE - else - to_chat(user, "You wrench [src] into place.") - anchored = TRUE - return return ..() +/obj/structure/dispenser/wrench_act(mob/living/user, obj/item/I) + I.play_tool_sound(src, 50) + if(anchored) + to_chat(user, "You lean down and unwrench [src].") + anchored = FALSE + else + to_chat(user, "You wrench [src] into place.") + anchored = TRUE + return TRUE + + /// Called when the user clicks on the oxygen or plasma tank UI buttons, and tries to withdraw a tank. /obj/structure/dispenser/proc/try_remove_tank(mob/living/user, list/tank_list) if(!LAZYLEN(tank_list)) diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm index 45809087903c..cebaa4e5dc02 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm @@ -79,7 +79,7 @@ to_chat(user, "You uninstall [src].") qdel(src) -/obj/structure/transit_tube/wrench_act(mob/living/user, obj/item/I) +/obj/structure/transit_tube_pod/wrench_act(mob/living/user, obj/item/I) . = TRUE to_chat(user, "You must uninstall [src] before disassembling it!") diff --git a/code/game/turfs/simulated/floor/asteroid_floors.dm b/code/game/turfs/simulated/floor/asteroid_floors.dm index ed49637dec62..b898f7b74850 100644 --- a/code/game/turfs/simulated/floor/asteroid_floors.dm +++ b/code/game/turfs/simulated/floor/asteroid_floors.dm @@ -153,6 +153,10 @@ atmos_environment = ENVIRONMENT_LAVALAND baseturf = /turf/simulated/floor/lava/mapping_lava +/turf/simulated/floor/plating/asteroid/basalt/lowpressure + oxygen = 8 + nitrogen = 14 + /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface_hard oxygen = LAVALAND_OXYGEN nitrogen = LAVALAND_NITROGEN diff --git a/code/game/turfs/simulated/floor/chasm.dm b/code/game/turfs/simulated/floor/chasm.dm index 5d827fb5e398..61be5dd4a8b3 100644 --- a/code/game/turfs/simulated/floor/chasm.dm +++ b/code/game/turfs/simulated/floor/chasm.dm @@ -35,7 +35,8 @@ /obj/effect/dummy/slaughter, //no bloodcrawlers into chasms. /obj/effect/dummy/spell_jaunt, //No jaunters into chasms either. /mob/living/simple_animal/hostile/megafauna, //failsafe - /obj/tgvehicle/scooter/skateboard/hoverboard + /obj/tgvehicle/scooter/skateboard/hoverboard, + /obj/machinery/light // lights hanging on walls shouldn't get chasm'd )) var/drop_x = 1 var/drop_y = 1 @@ -294,3 +295,51 @@ drop_y = y var/list/target_z = levels_by_trait(SPAWN_RUINS) drop_z = pick(target_z) + +/turf/simulated/floor/chasm/space_ruin + /// Used to keep count of how many times we checked if our target turf was valid. + var/times_turfs_checked = 0 + /// List of all eligible Z levels. + var/list/target_z + /// Target turf that atoms will be teleported to. + var/turf/T + +/turf/simulated/floor/chasm/space_ruin/proc/pick_a_turf(atom/movable/AM) + if(times_turfs_checked <= 2) + target_z = levels_by_trait(SPAWN_RUINS) + target_z -= AM.z // excluding the one atom was already in from possible z levels + T = locate(rand(TRANSITIONEDGE + 1, world.maxx - TRANSITIONEDGE - 1), rand(TRANSITIONEDGE + 1, world.maxy - TRANSITIONEDGE - 1), pick(target_z)) + check_turf(AM) + else + // If we still fail to pick a random valid turf after 2 attempts, we just send the atom to somewhere valid for certain + T = locate(TRANSITIONEDGE + 1, TRANSITIONEDGE + 1, pick(target_z)) + + +/turf/simulated/floor/chasm/space_ruin/proc/check_turf(atom/movable/AM) + times_turfs_checked++ + if(istype(get_area(T), /area/space)) + return + else + pick_a_turf(AM) + +/turf/simulated/floor/chasm/space_ruin/drop(atom/movable/AM) + //Make sure the item is still there after our sleep + if(!AM || QDELETED(AM)) + return + falling_atoms[AM] = TRUE + pick_a_turf(AM) + if(T) + AM.visible_message("[AM] falls into [src]!", "GAH! Ah... where are you?") + T.visible_message("[AM] falls from above!") + AM.forceMove(T) + if(isliving(AM)) + var/mob/living/L = AM + L.Weaken(10 SECONDS) + L.adjustBruteLoss(30) + times_turfs_checked = 0 // We successfully teleported the atom, let's reset the count + falling_atoms -= AM + +/turf/simulated/floor/chasm/space_ruin/airless + oxygen = 0 + nitrogen = 0 + temperature = TCMB diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index 88037967d20e..0dbe2dc77e3a 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -140,7 +140,7 @@ /turf/simulated/floor/noslip/get_broken_states() return list("noslip-damaged1", "noslip-damaged2", "noslip-damaged3") -/turf/simulated/floor/plating/asteroid/snow/get_burnt_states() +/turf/simulated/floor/noslip/get_burnt_states() return list("noslip-scorched1", "noslip-scorched2") /turf/simulated/floor/noslip/MakeSlippery() diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 6e34004f1ea1..b2c1e3608302 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -208,17 +208,16 @@ acidpwr = min(acidpwr, 50) //we reduce the power so reinf floor never get melted. . = ..() -/turf/simulated/floor/engine/attackby(obj/item/C as obj, mob/user as mob, params) - if(!C || !user) +/turf/simulated/floor/engine/wrench_act(mob/living/user, obj/item/wrench/W) + if(!user) return - if(istype(C, /obj/item/wrench)) - to_chat(user, "You begin removing rods...") - playsound(src, C.usesound, 80, 1) - if(do_after(user, 30 * C.toolspeed, target = src)) - if(!istype(src, /turf/simulated/floor/engine)) - return - new /obj/item/stack/rods(src, 2) - ChangeTurf(/turf/simulated/floor/plating) + . = TRUE + to_chat(user, "You begin removing rods...") + if(W.use_tool(src, user, 3 SECONDS, 0, 50)) + if(!istype(src, /turf/simulated/floor/engine)) + return + new /obj/item/stack/rods(src, 2) + ChangeTurf(/turf/simulated/floor/plating) /turf/simulated/floor/engine/ex_act(severity) switch(severity) diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm index cfdbe60c94d5..e2f7bc5e67ad 100644 --- a/code/game/turfs/space/transit.dm +++ b/code/game/turfs/space/transit.dm @@ -146,10 +146,6 @@ /turf/space/transit/rpd_act() return -//Overwrite because we dont want people building rods in space. -/turf/space/transit/attackby() - return - /turf/space/transit/Initialize(mapload) . = ..() update_icon(UPDATE_ICON_STATE) diff --git a/code/modules/admin/misc_admin_procs.dm b/code/modules/admin/misc_admin_procs.dm index 887dbe86b4b9..fbbfd4166ba9 100644 --- a/code/modules/admin/misc_admin_procs.dm +++ b/code/modules/admin/misc_admin_procs.dm @@ -202,7 +202,7 @@ GLOBAL_VAR_INIT(nologevent, 0) Make Robot | Make Alien | Make Slime | - Make Superhero + Make Superhero | "} //Simple Animals diff --git a/code/modules/admin/verbs/tripAI.dm b/code/modules/admin/verbs/tripAI.dm index 5eedd9f28119..4fc6b4aade37 100644 --- a/code/modules/admin/verbs/tripAI.dm +++ b/code/modules/admin/verbs/tripAI.dm @@ -11,12 +11,16 @@ if(!job) to_chat(usr, "Unable to locate the AI job") return + if(HAS_TRAIT(SSstation, STATION_TRAIT_TRIAI)) + to_chat(usr, "The triple AI station trait is now enabled. This trait can be disabled in the Modify Station Traits menu.") + return + if(SSticker.triai) - SSticker.triai = 0 + SSticker.triai = FALSE to_chat(usr, "Only one AI will be spawned at round start.") message_admins("[key_name_admin(usr)] has toggled off triple AIs at round start.", 1) else - SSticker.triai = 1 + SSticker.triai = TRUE to_chat(usr, "There will be an AI Triumvirate at round start.") message_admins("[key_name_admin(usr)] has toggled on triple AIs at round start.", 1) return diff --git a/code/modules/antagonists/zombie/zombie_spells.dm b/code/modules/antagonists/zombie/zombie_spells.dm index 5d30f5a6d27b..19b5cc56124c 100644 --- a/code/modules/antagonists/zombie/zombie_spells.dm +++ b/code/modules/antagonists/zombie/zombie_spells.dm @@ -42,7 +42,7 @@ /obj/item/zombie_claw name = "claws" - desc = "Claws extending from your rotting hands, perfect for ripping open brain_holders for brains." + desc = "Claws extending from your rotting hands, perfect for ripping skulls open for the brains inside." icon = 'icons/effects/vampire_effects.dmi' icon_state = "vamp_claws" lefthand_file = 'icons/mob/inhands/weapons_lefthand.dmi' diff --git a/code/modules/arcade/prize_datums.dm b/code/modules/arcade/prize_datums.dm index 7e9481bceee8..c8d14c026339 100644 --- a/code/modules/arcade/prize_datums.dm +++ b/code/modules/arcade/prize_datums.dm @@ -111,6 +111,12 @@ GLOBAL_DATUM_INIT(global_prizes, /datum/prizes, new()) typepath = /obj/item/ammo_box/caps cost = 30 +/datum/prize_item/firecracker + name = "Firecracker Grenade" + desc = "A loud and obnoxious firecracker. Hold away from ears and small children." + typepath = /obj/item/grenade/firecracker + cost = 50 + /datum/prize_item/wallet name = "Cheap Wallet" desc = "A cheap and big enough for standard issue ID cards." diff --git a/code/modules/assembly/assembly_holder.dm b/code/modules/assembly/assembly_holder.dm index 02a526da94e2..2b6db0074412 100644 --- a/code/modules/assembly/assembly_holder.dm +++ b/code/modules/assembly/assembly_holder.dm @@ -13,12 +13,6 @@ var/obj/item/assembly/a_left = null var/obj/item/assembly/a_right = null -/obj/item/assembly_holder/proc/attach(obj/item/D, obj/item/D2, mob/user) - return - -/obj/item/assembly_holder/proc/process_activation(obj/item/D) - return - /obj/item/assembly_holder/IsAssemblyHolder() return TRUE @@ -29,7 +23,7 @@ a_right.holder = null return ..() -/obj/item/assembly_holder/attach(obj/item/D, obj/item/D2, mob/user) +/obj/item/assembly_holder/proc/attach(obj/item/D, obj/item/D2, mob/user) if(!D || !D2) return FALSE if(!isassembly(D) || !isassembly(D2)) @@ -191,7 +185,7 @@ qdel(src) -/obj/item/assembly_holder/process_activation(obj/D, normal = TRUE, special = TRUE) +/obj/item/assembly_holder/proc/process_activation(obj/D, normal = TRUE, special = TRUE) if(!D) return FALSE if(normal && a_right && a_left) diff --git a/code/modules/assembly/health.dm b/code/modules/assembly/health.dm index 6d128f01ce6d..32e0ae23cbbb 100644 --- a/code/modules/assembly/health.dm +++ b/code/modules/assembly/health.dm @@ -59,10 +59,6 @@ ..() ADD_TRAIT(user, TRAIT_CAN_VIEW_HEALTH, "HEALTH[UID()]") -/obj/item/gps/dropped(mob/user, silent) - REMOVE_TRAIT(user, TRAIT_CAN_VIEW_HEALTH, "HEALTH[UID()]") - return ..() - /obj/item/assembly/health/proc/toggle_scan() if(!secured) return FALSE diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index d8d0ca7cbc6f..02a5f9d9739e 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -14,18 +14,20 @@ QDEL_NULL(part2) return ..() -/obj/item/assembly/shock_kit/attackby(obj/item/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/wrench) && !status) - var/turf/T = loc - if(ismob(T)) - T = T.loc - part1.loc = T - part2.loc = T - part1.master = null - part2.master = null - part1 = null - part2 = null - qdel(src) +/obj/item/assembly/shock_kit/wrench_act(mob/living/user, obj/item/I) + if(status) + return + . = TRUE + var/turf/T = get_turf(src) + part1?.forceMove(T) + part2?.forceMove(T) + part1?.master = null + part2?.master = null + part1 = null + part2 = null + visible_message("[user] disassembles [src].") + qdel(src) + return TRUE /obj/item/assembly/shock_kit/screwdriver_act(mob/user, obj/item/I) status = !status diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index ce0a1ed401ea..1363484743c7 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -216,6 +216,9 @@ if(!building) first_run() + if(!master_is_operating()) + elect_master() + /obj/machinery/alarm/Destroy() SStgui.close_uis(wires) GLOB.air_alarms -= src @@ -231,11 +234,6 @@ apply_preset(AALARM_PRESET_HUMAN) // Don't cycle. GLOB.air_alarm_repository.update_cache(src) -/obj/machinery/alarm/Initialize(mapload) - . = ..() - if(!master_is_operating()) - elect_master() - /obj/machinery/alarm/proc/master_is_operating() if(!alarm_area) alarm_area = get_area(src) @@ -656,7 +654,7 @@ /obj/machinery/alarm/ui_data(mob/user) var/list/data = list() - data["name"] = sanitize(name) + data["name"] = name data["air"] = ui_air_status() data["alarmActivated"] = alarmActivated || danger_level == ATMOS_ALARM_DANGER data["thresholds"] = generate_thresholds_menu() @@ -696,7 +694,7 @@ for(var/obj/machinery/atmospherics/unary/vent_pump/P as anything in alarm_area.vents) var/list/vent_info = list() vent_info["id_tag"] = P.UID() - vent_info["name"] = sanitize(P.name) + vent_info["name"] = P.name vent_info["power"] = P.on vent_info["direction"] = P.releasing vent_info["checks"] = P.pressure_checks @@ -709,7 +707,7 @@ for(var/obj/machinery/atmospherics/unary/vent_scrubber/S as anything in alarm_area.scrubbers) var/list/scrubber_info = list() scrubber_info["id_tag"] = S.UID() - scrubber_info["name"] = sanitize(S.name) + scrubber_info["name"] = S.name scrubber_info["power"] = S.on scrubber_info["scrubbing"] = S.scrubbing scrubber_info["widenet"] = S.widenet @@ -724,11 +722,11 @@ /obj/machinery/alarm/proc/get_console_data(mob/user) var/list/data = list() - data["name"] = sanitize(name) + data["name"] = name data["ref"] = "\ref[src]" data["danger"] = max(danger_level, alarm_area.atmosalm) var/area/A = get_area(src) - data["area"] = sanitize(A.name) + data["area"] = A.name var/turf/T = get_turf(src) data["x"] = T.x data["y"] = T.y diff --git a/code/modules/atmospherics/machinery/atmospherics.dm b/code/modules/atmospherics/machinery/atmospherics.dm index 2ce2e9343d89..a42659c1302c 100644 --- a/code/modules/atmospherics/machinery/atmospherics.dm +++ b/code/modules/atmospherics/machinery/atmospherics.dm @@ -50,6 +50,9 @@ Pipelines + Other Objects -> Pipe network /// ID for automatic linkage of stuff. This is used to assist in connections at mapload. Dont try use it for other stuff var/autolink_id = null + /// Whether or not this can be unwrenched while on. + var/can_unwrench_while_on = TRUE + /obj/machinery/atmospherics/Initialize(mapload) . = ..() @@ -189,63 +192,73 @@ Pipelines + Other Objects -> Pipe network if(P) P.other_atmosmch -= src +/obj/machinery/atmospherics/wrench_act(mob/living/user, obj/item/wrench/W) + var/turf/T = get_turf(src) + if(!can_unwrench_while_on && !(stat & NOPOWER) && on) + to_chat(user, "You cannot unwrench this [name], turn it off first.") + return TRUE + if(!can_unwrench) + return FALSE + . = TRUE + if(level == 1 && T.transparent_floor && istype(src, /obj/machinery/atmospherics/pipe)) + to_chat(user, "You can't interact with something that's under the floor!") + return + if(level == 1 && isturf(T) && T.intact) + to_chat(user, "You must remove the plating first.") + return + var/datum/gas_mixture/int_air = return_obj_air() + var/datum/gas_mixture/env_air = T.get_readonly_air() + add_fingerprint(user) + + + var/unsafe_wrenching = FALSE + var/safefromgusts = FALSE + var/I = int_air ? int_air.return_pressure() : 0 + var/E = env_air ? env_air.return_pressure() : 0 + var/internal_pressure = I - E + + to_chat(user, "You begin to unfasten [src]...") + + if(HAS_TRAIT(user, TRAIT_MAGPULSE)) + safefromgusts = TRUE + + if(internal_pressure > 2 * ONE_ATMOSPHERE) + unsafe_wrenching = TRUE //Oh dear oh dear + if(internal_pressure > 1750 && !safefromgusts) // 1750 is the pressure limit to do 60 damage when thrown + to_chat(user, "As you struggle to unwrench [src] a huge gust of gas blows in your face! This seems like a terrible idea!") + else + to_chat(user, "As you begin unwrenching [src] a gust of air blows in your face... maybe you should reconsider?") + + if(!W.use_tool(src, user, 4 SECONDS, volume = 50) || QDELETED(src)) + return + + safefromgusts = FALSE + + if(HAS_TRAIT(user, TRAIT_MAGPULSE)) + safefromgusts = TRUE + + user.visible_message( + "[user] unfastens [src].", + "You have unfastened [src].", + "You hear ratcheting." + ) + investigate_log("was REMOVED by [key_name(usr)]", "atmos") + + //You unwrenched a pipe full of pressure? let's splat you into the wall silly. + if(unsafe_wrenching) + if(safefromgusts) + to_chat(user, "Your magboots cling to the floor as a great burst of wind bellows against you.") + else + unsafe_pressure_release(user,internal_pressure) + deconstruct(TRUE) + //(De)construction /obj/machinery/atmospherics/attackby(obj/item/W, mob/user) var/turf/T = get_turf(src) - if(can_unwrench && istype(W, /obj/item/wrench)) - if(level == 1 && T.transparent_floor && istype(src, /obj/machinery/atmospherics/pipe)) - to_chat(user, "You can't interact with something that's under the floor!") - return - if(level == 1 && isturf(T) && T.intact) - to_chat(user, "You must remove the plating first.") - return - var/datum/gas_mixture/int_air = return_obj_air() - var/datum/gas_mixture/env_air = T.get_readonly_air() - add_fingerprint(user) - - var/unsafe_wrenching = FALSE - var/safefromgusts = FALSE - var/I = int_air ? int_air.return_pressure() : 0 - var/E = env_air ? env_air.return_pressure() : 0 - var/internal_pressure = I - E - - playsound(loc, W.usesound, 50, 1) - to_chat(user, "You begin to unfasten \the [src]...") - - if(HAS_TRAIT(user, TRAIT_MAGPULSE)) - safefromgusts = TRUE - - if(internal_pressure > 2 * ONE_ATMOSPHERE) - unsafe_wrenching = TRUE //Oh dear oh dear - if(internal_pressure > 1750 && !safefromgusts) // 1750 is the pressure limit to do 60 damage when thrown - to_chat(user, "As you struggle to unwrench [src] a huge gust of gas blows in your face! This seems like a terrible idea!") - else - to_chat(user, "As you begin unwrenching [src] a gust of air blows in your face... maybe you should reconsider?") - - if(do_after(user, 40 * W.toolspeed, target = src) && !QDELETED(src)) - safefromgusts = FALSE - - if(HAS_TRAIT(user, TRAIT_MAGPULSE)) - safefromgusts = TRUE - - user.visible_message( \ - "[user] unfastens [src].", \ - "You have unfastened [src].", \ - "You hear ratcheting.") - investigate_log("was REMOVED by [key_name(usr)]", "atmos") - - //You unwrenched a pipe full of pressure? let's splat you into the wall silly. - if(unsafe_wrenching) - if(safefromgusts) - to_chat(user, "Your magboots cling to the floor as a great burst of wind bellows against you.") - else - unsafe_pressure_release(user,internal_pressure) - deconstruct(TRUE) - else - if(T.transparent_floor) - to_chat(user, "You can't interact with something that's under the floor!") - return TRUE - return ..() + if(T.transparent_floor) + to_chat(user, "You can't interact with something that's under the floor!") + return TRUE + return ..() //Called when an atmospherics object is unwrenched while having a large pressure difference //with it's locs air contents. diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index 8ec612546e96..d372c47af00d 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -8,12 +8,13 @@ desc = "A one-way air valve that does not require power" can_unwrench = TRUE + can_unwrench_while_on = FALSE target_pressure = ONE_ATMOSPHERE var/id = null -/obj/machinery/atmospherics/binary/volume_pump/can_be_pulled(user, grab_state, force, show_message) +/obj/machinery/atmospherics/binary/passive_gate/can_be_pulled(user, grab_state, force, show_message) return FALSE /obj/machinery/atmospherics/binary/passive_gate/CtrlClick(mob/living/user) @@ -126,11 +127,3 @@ . = TRUE if(.) investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos") - -/obj/machinery/atmospherics/binary/passive_gate/attackby(obj/item/W, mob/user, params) - if(!istype(W, /obj/item/wrench)) - return ..() - if(on) - to_chat(user, "You cannot unwrench this [src], turn it off first.") - return 1 - return ..() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index 86f63455d990..25c0758b0ae2 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -13,13 +13,13 @@ Thus, the two variables affect pump operation are set in New(): */ /obj/machinery/atmospherics/binary/pump + name = "gas pump" + desc = "A pump." icon = 'icons/atmos/pump.dmi' icon_state = "map_off" - name = "gas pump" - desc = "A pump" - can_unwrench = TRUE + can_unwrench_while_on = FALSE target_pressure = ONE_ATMOSPHERE @@ -160,10 +160,5 @@ Thus, the two variables affect pump operation are set in New(): /obj/machinery/atmospherics/binary/pump/attackby(obj/item/W, mob/user, params) if(is_pen(W)) rename_interactive(user, W) - return - else if(!istype(W, /obj/item/wrench)) - return ..() - if(!(stat & NOPOWER) && on) - to_chat(user, "You cannot unwrench this [src], turn it off first.") - return 1 + return TRUE return ..() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm index daa791d502c9..1690df3deffe 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm @@ -15,9 +15,6 @@ /obj/machinery/atmospherics/binary/valve/examine(mob/user) . = ..() . += "It is currently [open ? "open" : "closed"]." - -/obj/machinery/atmospherics/binary/valve/examine(mob/user) - . = ..() . += "Click this to turn the valve. If red, the pipes on each end are separated. Otherwise, they are connected." /obj/machinery/atmospherics/binary/valve/open diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index cce6166a2232..cdea20e78b14 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -20,6 +20,7 @@ Thus, the two variables affect pump operation are set in New(): desc = "A volumetric pump" can_unwrench = TRUE + can_unwrench_while_on = FALSE var/transfer_rate = 200 @@ -155,10 +156,5 @@ Thus, the two variables affect pump operation are set in New(): /obj/machinery/atmospherics/binary/volume_pump/attackby(obj/item/W, mob/user, params) if(is_pen(W)) rename_interactive(user, W) - return - else if(!istype(W, /obj/item/wrench)) - return ..() - if(!(stat & NOPOWER) && on) - to_chat(user, "You cannot unwrench this [src], turn it off first.") - return 1 + return TRUE return ..() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index e884e77593cf..e6631a395b76 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -108,10 +108,10 @@ ..() if(A == beaker) beaker = null - updateUsrDialog() + SStgui.update_uis(src) if(A == occupant) occupant = null - updateUsrDialog() + SStgui.update_uis(src) update_icon() /obj/machinery/atmospherics/unary/cryo_cell/on_deconstruction() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index d320f0fb4f5c..9329f4a46a06 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -10,6 +10,7 @@ GLOBAL_LIST_EMPTY(air_injectors) resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF //really helpful in building gas chambers for xenomorphs can_unwrench = TRUE + can_unwrench_while_on = TRUE name = "air injector" desc = "Has a valve and pump attached to it." @@ -78,10 +79,3 @@ GLOBAL_LIST_EMPTY(air_injectors) var/obj/item/multitool/M = I M.buffer_uid = UID() to_chat(user, "You save [src] into [M]'s buffer") - -/obj/machinery/atmospherics/unary/outlet_injector/attackby(obj/item/W, mob/user) - if(iswrench(W)) - if(!(stat & NOPOWER) && on) - to_chat(user, "You cannot unwrench this [src], turn if off first.") - return TRUE - return ..() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm index c3cfc1990b32..ed2179aef1f7 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm @@ -32,11 +32,10 @@ return 0 parent.update = 1 -/obj/machinery/atmospherics/unary/portables_connector/attackby(obj/item/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/wrench)) - if(connected_device) - to_chat(user, "You cannot unwrench this [src], detach [connected_device] first.") - return 1 +/obj/machinery/atmospherics/unary/portables_connector/wrench_act(mob/living/user, obj/item/wrench/W) + if(connected_device) + to_chat(user, "You cannot unwrench this [name], detach [connected_device] first.") + return TRUE return ..() /obj/machinery/atmospherics/unary/portables_connector/portableConnectorReturnAir() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 22893029b46e..731d9c8ccbac 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -43,6 +43,10 @@ /obj/machinery/atmospherics/unary/thermomachine/examine(mob/user) . = ..() . += "Cools or heats the gas of the connected pipenet, uses a large amount of electricity while activated." + . += "The thermostat is set to [target_temperature]K ([(T0C - target_temperature) * -1]C)." + if(in_range(user, src) || isobserver(user)) + . += "The status display reads: Efficiency [(heat_capacity / 5000) * 100]%." + . += "Temperature range [min_temperature]K - [max_temperature]K ([(T0C - min_temperature) * -1]C - [(T0C-max_temperature) * -1]C)." /obj/machinery/atmospherics/unary/thermomachine/proc/swap_function() cooling = !cooling @@ -84,14 +88,6 @@ else icon_state = icon_state_off -/obj/machinery/atmospherics/unary/thermomachine/examine(mob/user) - . = ..() - . += "The thermostat is set to [target_temperature]K ([(T0C - target_temperature) * -1]C)." - if(in_range(user, src) || isobserver(user)) - . += "The status display reads: Efficiency [(heat_capacity / 5000) * 100]%." - . += "Temperature range [min_temperature]K - [max_temperature]K ([(T0C - min_temperature) * -1]C - [(T0C-max_temperature) * -1]C)." - - /obj/machinery/atmospherics/unary/thermomachine/process_atmos() if(!on) return @@ -135,11 +131,11 @@ /obj/machinery/atmospherics/unary/thermomachine/wrench_act(mob/user, obj/item/I) . = TRUE - if(!I.use_tool(src, user, 0, volume = I.tool_volume)) - return if(!panel_open) to_chat(user, "Open the maintenance panel first.") return + if(!I.use_tool(src, user, 0, volume = I.tool_volume)) + return var/list/choices = list("West" = WEST, "East" = EAST, "South" = SOUTH, "North" = NORTH) var/selected = tgui_input_list(user, "Select a direction for the connector.", "Connector Direction", choices) if(!selected) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index 2050b13f5816..6bf7a368259d 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -40,6 +40,8 @@ /obj/machinery/atmospherics/unary/vent_pump/examine(mob/user) . = ..() . += "This pumps the contents of the attached pipenet out into the atmosphere. Can be controlled from an Air Alarm." + if(welded) + . += "It seems welded shut." /obj/machinery/atmospherics/unary/vent_pump/on on = TRUE @@ -193,11 +195,6 @@ to_chat(user, "The vent is welded.") return TRUE - if(iswrench(W)) - if(!(stat & NOPOWER) && on) - to_chat(user, "You cannot unwrench this [src], turn it off first.") - return TRUE - return ..() /obj/machinery/atmospherics/unary/vent_pump/multitool_act(mob/living/user, obj/item/I) @@ -243,11 +240,6 @@ continue W.forceMove(get_turf(src)) -/obj/machinery/atmospherics/unary/vent_pump/examine(mob/user) - . = ..() - if(welded) - . += "It seems welded shut." - /obj/machinery/atmospherics/unary/vent_pump/power_change() if(!..()) return diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index 5d470e590a6e..6184c5e4ba08 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -9,6 +9,7 @@ power_state = ACTIVE_POWER_USE idle_power_consumption = 10 active_power_consumption = 60 + can_unwrench_while_on = FALSE can_unwrench = TRUE @@ -44,6 +45,8 @@ /obj/machinery/atmospherics/unary/vent_scrubber/examine(mob/user) . = ..() . += "This filters the atmosphere of harmful gas. Filtered gas goes straight into the connected pipenet. Controlled by an Air Alarm." + if(welded) + . += "It seems welded shut." /obj/machinery/atmospherics/unary/vent_scrubber/Destroy() if(initial_loc) @@ -51,11 +54,6 @@ return ..() -/obj/machinery/atmospherics/unary/vent_scrubber/examine(mob/user) - . = ..() - if(welded) - . += "It seems welded shut." - /obj/machinery/atmospherics/unary/vent_scrubber/update_overlays() . = ..() plane = FLOOR_PLANE @@ -218,14 +216,6 @@ pipe_image.plane = ABOVE_HUD_PLANE playsound(loc, 'sound/weapons/bladeslice.ogg', 100, TRUE) -/obj/machinery/atmospherics/unary/vent_scrubber/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/wrench)) - if(!(stat & NOPOWER) && on) - to_chat(user, "You cannot unwrench this [src], turn it off first.") - return TRUE - - return ..() - /obj/machinery/atmospherics/unary/vent_scrubber/welder_act(mob/user, obj/item/I) . = TRUE if(!I.tool_use_check(user, 0)) diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index 032ffa60068e..0f6deb15046b 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -83,17 +83,19 @@ GLOBAL_LIST_EMPTY(gas_meters) return ..() -/obj/machinery/atmospherics/meter/attackby(obj/item/W as obj, mob/user as mob, params) - if(!iswrench(W)) - return ..() - playsound(loc, W.usesound, 50, 1) - to_chat(user, "You begin to unfasten \the [src]...") - if(do_after(user, 40 * W.toolspeed, target = src)) - user.visible_message( \ - "[user] unfastens \the [src].", \ - "You have unfastened \the [src].", \ - "You hear ratchet.") - deconstruct(TRUE) +/obj/machinery/atmospherics/meter/wrench_act(mob/living/user, obj/item/wrench/W) + // don't call parent here, we're kind of different + to_chat(user, "You begin to unfasten [src]...") + if(!W.use_tool(src, user, volume = W.tool_volume)) + return + + user.visible_message( + "[user] unfastens [src].", + "You have unfastened [src].", + "You hear ratchet." + ) + deconstruct(TRUE) + return TRUE /obj/machinery/atmospherics/meter/deconstruct(disassembled = TRUE) if(!(flags & NODECONSTRUCT)) diff --git a/code/modules/awaymissions/mission_code/ruins/deepstorage.dm b/code/modules/awaymissions/mission_code/ruins/deepstorage.dm new file mode 100644 index 000000000000..8dc9de2314bb --- /dev/null +++ b/code/modules/awaymissions/mission_code/ruins/deepstorage.dm @@ -0,0 +1,381 @@ +#define DS_BOSS_STORAGE "DS_BossStorage" +#define DS_ENGINEERING "DS_Engineering" +/mob/living/simple_animal/hostile/megafauna/fleshling + name = "Fleshling" + desc = "A sinister mass of flesh molded into a grotesque shape. Nothing about it looks like the result of natural evolution. It looks agitated and clearly doesn't want you to leave here alive." + health = 1000 + icon = 'icons/mob/fleshling.dmi' + icon_state = "fleshling" + icon_living = "fleshling" + icon_dead = "" + speed = 5 + move_to_delay = 4 + ranged = TRUE + pixel_x = -16 + attack_sound = 'sound/misc/demon_attack1.ogg' + melee_damage_lower = 20 + melee_damage_upper = 20 + wander = TRUE + move_force = MOVE_FORCE_VERY_STRONG + move_resist = MOVE_FORCE_VERY_STRONG + pull_force = MOVE_FORCE_VERY_STRONG + sentience_type = SENTIENCE_BOSS + a_intent = INTENT_HARM + deathmessage = "collapses into a pile of gibs. From the looks of it this is the deadest it can get... " + del_on_death = TRUE + death_sound = 'sound/misc/demon_dies.ogg' + attack_sound = 'sound/misc/demon_attack1.ogg' + + /// Is the boss charging right now? + var/charging = FALSE + /// Did our boss die? + var/boss_killed = FALSE + +// Below here is copy-pasted from /asteroid/big_legion + +/mob/living/simple_animal/hostile/megafauna/fleshling/AttackingTarget() + if(!isliving(target)) + return ..() + var/mob/living/L = target + var/datum/status_effect/stacking/ground_pound/G = L.has_status_effect(STATUS_EFFECT_GROUNDPOUND) + if(!G) + L.apply_status_effect(STATUS_EFFECT_GROUNDPOUND, 1, src) + return ..() + if(G.add_stacks(stacks_added = 1, attacker = src)) + return ..() + +/mob/living/simple_animal/hostile/megafauna/fleshling/proc/throw_mobs() + playsound(src, 'sound/effects/meteorimpact.ogg', 200, TRUE, 2, TRUE) + for(var/mob/living/L in range(3, src)) + if(faction_check(faction, L.faction, FALSE)) + continue + + L.visible_message("[L] was thrown by [src]!", + "You feel a strong force throwing you!", + "You hear a thud.") + var/atom/throw_target = get_edge_target_turf(L, get_dir(src, get_step_away(L, src))) + L.throw_at(throw_target, 4, 4) + var/limb_to_hit = L.get_organ(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)) + var/armor = L.run_armor_check(def_zone = limb_to_hit, attack_flag = MELEE, armour_penetration_percentage = 50) + L.apply_damage(40, BRUTE, limb_to_hit, armor) + +// Below here is edited from Bubblegum + +/mob/living/simple_animal/hostile/megafauna/fleshling/proc/charge(atom/chargeat = target, delay = 5, chargepast = 2) + if(!chargeat) + return + if(chargeat.z != z) + return + var/chargeturf = get_turf(chargeat) + if(!chargeturf) + return + var/dir = get_dir(src, chargeturf) + var/turf/T = get_ranged_target_turf(chargeturf, dir, chargepast) + if(!T) + return + new /obj/effect/temp_visual/dragon_swoop/bubblegum(T) + charging = TRUE + walk(src, 0) + setDir(dir) + var/obj/effect/temp_visual/decoy/D = new /obj/effect/temp_visual/decoy(loc,src) + animate(D, alpha = 0, color = "#FF0000", transform = matrix()*2, time = 3) + SLEEP_CHECK_DEATH(delay) + var/movespeed = 0.8 + walk_towards(src, T, movespeed) + SLEEP_CHECK_DEATH(get_dist(src, T) * movespeed) + walk(src, 0) + charging = FALSE + loot = list(/obj/effect/decal/cleanable/blood/innards, + /obj/effect/decal/cleanable/blood, + /obj/effect/gibspawner/generic, + /obj/effect/gibspawner/generic) + +/mob/living/simple_animal/hostile/megafauna/fleshling/ListTargetsLazy() + return ListTargets() + +/mob/living/simple_animal/hostile/megafauna/fleshling/Aggro() + . = ..() + if(target) + playsound(loc, 'sound/voice/zombie_scream.ogg', 70, TRUE) + +/mob/living/simple_animal/hostile/megafauna/fleshling/OpenFire() + if(charging) + return + charge(delay = 3) + SetRecoveryTime(15) + +/mob/living/simple_animal/hostile/megafauna/fleshling/Moved(atom/OldLoc, Dir, Forced = FALSE) + if(Dir) + new /obj/effect/decal/cleanable/blood/bubblegum(loc) + playsound(src, 'sound/effects/meteorimpact.ogg', 25, TRUE, 2, TRUE) + return ..() + +/mob/living/simple_animal/hostile/megafauna/fleshling/Bump(atom/A, yes) + if(charging && yes) + if(isliving(A)) + var/mob/living/L = A + L.visible_message("[src] slams into [L]!", "[src] tramples you into the ground!") + forceMove(get_turf(L)) + L.apply_damage(istype(src, /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination) ? 15 : 30, BRUTE) + playsound(get_turf(L), 'sound/effects/meteorimpact.ogg', 100, TRUE) + shake_camera(L, 4, 3) + shake_camera(src, 2, 3) + ..() + +/mob/living/simple_animal/hostile/megafauna/fleshling/Destroy() + handle_dying() + return ..() + +/mob/living/simple_animal/hostile/megafauna/fleshling/proc/handle_dying() + if(!boss_killed) + boss_killed = TRUE + +/mob/living/simple_animal/hostile/megafauna/fleshling/death(gibbed) + if(can_die() && !boss_killed) + unlock_blast_doors(DS_BOSS_STORAGE) + src.visible_message("Somewhere, a heavy door has opened.") + return ..(gibbed) + +/mob/living/simple_animal/hostile/megafauna/fleshling/proc/unlock_blast_doors(target_id_tag) + for(var/obj/machinery/door/poddoor/P in GLOB.airlocks) + if(P.density && P.id_tag == target_id_tag && P.z == z && !P.operating) + P.open() + +/mob/living/simple_animal/hostile/spaceinfected + name = "Infected" + desc = "A reanimated corpse, wandering around aimlessly." + icon = 'icons/mob/simple_human.dmi' + icon_state = "spaceinfected" + icon_living = "spaceinfected" + mob_biotypes = MOB_ORGANIC | MOB_HUMANOID + speak_chance = 1 + turns_per_move = 3 + death_sound = 'sound/effects/bodyfall1.ogg' + speed = 0 + maxHealth = 150 + health = 150 + melee_damage_lower = 20 + melee_damage_upper = 20 + attacktext = "hits" + attack_sound = 'sound/effects/blobattack.ogg' + del_on_death = TRUE + sentience_type = SENTIENCE_OTHER + footstep_type = FOOTSTEP_MOB_SHOE + 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 + loot = list(/obj/effect/decal/cleanable/blood/innards, + /obj/effect/decal/cleanable/blood, + /obj/effect/gibspawner/generic, + /obj/effect/gibspawner/generic) + +/mob/living/simple_animal/hostile/spaceinfected/ListTargetsLazy() + return ListTargets() + +/mob/living/simple_animal/hostile/spaceinfected/Aggro() + . = ..() + if(target) + playsound(loc, 'sound/voice/zombie_scream.ogg', 70, TRUE) + +/mob/living/simple_animal/hostile/spaceinfected/Move(atom/newloc) + if(ischasm(newloc)) // as this place filled with chasms, they shouldn't randomly fall in while wandering around + return FALSE + return ..() + +/mob/living/simple_animal/hostile/spaceinfected/default + +/mob/living/simple_animal/hostile/spaceinfected/default/Initialize(mapload) + . = ..() + var/loot_num = rand(1, 100) + switch(loot_num) + if(1 to 10) + loot = list(/obj/item/salvage/ruin/nanotrasen, + /obj/effect/decal/cleanable/blood/innards, + /obj/effect/decal/cleanable/blood, + /obj/effect/gibspawner/generic, + /obj/effect/gibspawner/generic) + + if(11 to 30) + loot = list(/obj/item/salvage/ruin/brick, + /obj/effect/decal/cleanable/blood/innards, + /obj/effect/decal/cleanable/blood, + /obj/effect/gibspawner/generic, + /obj/effect/gibspawner/generic) + +/mob/living/simple_animal/hostile/spaceinfected/gateopener // When this mob dies it'll trigger a poddoor open + /// Is our mob dead? + var/has_died = FALSE + loot = list(/obj/item/gun/energy/laser, + /obj/effect/decal/cleanable/blood/innards, + /obj/effect/decal/cleanable/blood, + /obj/effect/gibspawner/generic, + /obj/effect/gibspawner/generic) // First weapon this ruin provides + +/mob/living/simple_animal/hostile/spaceinfected/gateopener/Destroy() + handle_dying() + return ..() + +/mob/living/simple_animal/hostile/spaceinfected/gateopener/proc/handle_dying() + if(!has_died) + has_died = TRUE + +/mob/living/simple_animal/hostile/spaceinfected/gateopener/death(gibbed) + if(can_die() && !has_died) + unlock_blast_doors(DS_ENGINEERING) + src.visible_message("Somewhere, a heavy door has opened.") + return ..(gibbed) + +/mob/living/simple_animal/hostile/spaceinfected/gateopener/proc/unlock_blast_doors(target_id_tag) + for(var/obj/machinery/door/poddoor/P in GLOB.airlocks) + if(P.density && P.id_tag == target_id_tag && P.z == z && !P.operating) + P.open() + +/mob/living/simple_animal/hostile/spaceinfected/default/ranged + desc = "A reanimated corpse. This one is keeping its distance from you." + icon_state = "spaceinfected_ranged" + ranged = TRUE + retreat_distance = 5 + minimum_distance = 5 + projectiletype = /obj/item/projectile/neurotox + projectilesound = 'sound/weapons/pierce.ogg' + +// Below here is ruin specific code + +/obj/structure/blob/normal/deepstorage + name = "flesh wall" + desc = "What even..." + color = rgb(80, 39, 39) + +/obj/machinery/deepstorage_teleporter + name = "package teleporter" + desc = "It's tuned to maintain one-way teleportation." + icon = 'icons/obj/stationobjs.dmi' + icon_state = "controller" + density = TRUE + anchored = TRUE + + /// How many portals are present right now? + var/active_portals = 0 + /// Does user have the TGUI menu open right now? + var/menu_open = FALSE + +/obj/machinery/deepstorage_teleporter/attack_hand(mob/user) + if(active_portals != 0 || menu_open) + return + menu_open = TRUE + var/list/boss_warning = list("Proceed" = TRUE) + var/final_decision = tgui_input_list(user, "Just a hunch but wherever this machine may lead, it won't be somewhere pleasant. Are you sure about this?", "Make your decision", boss_warning) + if(!final_decision) + to_chat(user, "The teleporter machine remains untouched.") + menu_open = FALSE + return + + new /obj/effect/portal/advanced/deepstorage(locate(x, y + 1, z), locate(x + 3, y- 6, z), src, 200) + playsound(loc, 'sound/machines/twobeep.ogg', 50, TRUE) + active_portals++ + addtimer(CALLBACK(src, PROC_REF(cooldown_passed)), 20 SECONDS) + menu_open = FALSE + +// This proc is called when portal disappears after a while, so users can interact with teleporter again +/obj/machinery/deepstorage_teleporter/proc/cooldown_passed() + active_portals-- + +/obj/effect/portal/advanced/deepstorage + name = "portal" + desc = "Good luck." + +// paper stuff & lore + +/obj/item/paper/fluff/ruins/deepstorage/log1 + name = "a note" + info = {"As per administration's request, I will be keeping the auxiliary power room locked from now on.
+
+ If you need in for whatever reason, find me in the western area of the cave tunnels."} + +/obj/item/paper/fluff/ruins/deepstorage/log2 + name = "to my love" + info = {"Everything went batshit insane, at first we all thought it was a terrorist attack or something... + All floors were put into lockdown, then shortly after all communication across the facility went black.
+
+ Guards never said what happened but the fear in their eyes told us everything.
+
+ Our colleagues, friends and other folks started arguing, hurting then killing each other in time. Me and four others managed to isolate ourselves in the cafeteria.
+
+ We have enough supplies to last a few weeks here, should be enough until reinforcements arrive, right?
+
+ If it won't, then god help us... I can't wait to see you again.
+
+ Sincerely yours..."} + +/obj/item/paper/fluff/ruins/deepstorage/log3 + name = "quartermaster's personal log" + info = {"(beginning of record...)
+
+ Day 5 since the lockdown, we can't communicate with other floors which is quite a nuisance. We were already behind 13 deliveries. + At these very times i miss my time back at-
+
+ (end of record.)
+
+ (beginning of record...)
+
+ Day 5, since the lockdown. More people are getting sick. I heard the body count was so high they had to start cremating them. + The fewer bodies, the better.
+
+ (end of record.)
+
+ (beginning of record...)
+
+ Day... 5, since the-. God, I just checked my previous entries and there were like, 14 in total? In so many I start with 'day 5 of this, of that'. + Weird part is, I don't recall making any of those records. It must be my insolent staff. If they want a bad review in their employee records, + they got it...
+
+ (end of record.)
"} + +/obj/item/paper/fluff/ruins/deepstorage/log4 + name = "crematorium report" + info = {"We burnt so many... There's no end to this. It's been days and we're still burning them."} + + +/obj/item/paper/fluff/ruins/deepstorage/log5 + name = "subject: my concerns" + info = {"First of all, I appreciate your initiative in cutting off comms, although I'm sure there are some rats listening on the private frequency. + Unless you want a riot on your hands, I suggest keeping quiet in there.
+
+ Getting down to business: we have been working on the sample tissues you've been sending non-stop. In my expert opinion, I don't think there's a single + bio-abomination we haven't discovered. I've never seen anything like this. It's nothing like a virus or disease you might be familiar with.
+
+ Yes, it's contagious, and I don't think it's limited to physical contact. We have been burning the corpses; there's still more to burn. + This will not end well. I advise evacuating workers to a more suitable quarantine zone before things get out of hand."} + +/obj/item/paper/fluff/ruins/deepstorage/log6 + name = "warning" + info = {"We sealed that thing in the warehouse. It tore apart half of my squad. We were no match.
+
+ For whatever reason you want to go in, the package teleporter is still functional. Gates will remain sealed as long as that thing is alive so proceed at your own risk."} + +/obj/item/paper/fluff/ruins/deepstorage/log7 + name = "???" + info = {"Entry 1

By now it's safe to assume they know we're listening on their frequency. If it weren't for a copy of the manual + I laid my hands on, they would've shaken us off already.
+
+ Entry 2

I keep hearing discussions of "resonance" brought up. I don't understand a single thing they're talking + about but I know it is connected to what we're going through. Today guards arrested three more workers. They're desperately looking for us.
+

...

+ Entry 4

Elevators between floors and trams are now shut off, communications across floors followed soon after. Now there is a sickness... + I still have two months until my transfer to some other facility in the sector. This too shall pass...
+

...

+ Entry 9

I no longer can tell where the dream ends and reality begins. Is this real, or still a dream... How many times did I write this? Where are we? + This isn't our facility. Who are these people? They're not from our post... +

...

+ Entry 13

KICK THEM. KICK THEM WHILE THEY ARE DOWN. + "} + +/obj/item/paper/fluff/ruins/deepstorage/log8 + name = "notice" + info = {"Until further notice elevators will be out of service. Contact the floor administrator should you require access."} + +/obj/item/paper/fluff/ruins/deepstorage/log9 + name = "attention" + info = {"As per administration's order, unauthorized entry to supply storage is forbidden. Make your requests from the guard wing if you have a pending delivery."} + +#undef DS_BOSS_STORAGE +#undef DS_ENGINEERING diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index 1f724e7386a3..eb0ce0a7132a 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -227,17 +227,3 @@ /// The current fullscreen state for /client/toggle_fullscreen() var/fullscreen = FALSE - -/client/vv_edit_var(var_name, var_value) - switch(var_name) - // I know we will never be in a world where admins are editing client vars to let people bypass TOS - // But guess what, if I have the ability to overengineer something, I am going to do it - if("tos_consent") - return FALSE - // Dont fuck with this - if("cui_entries") - return FALSE - // or this - if("jbh") - return FALSE - return ..() diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 9234e19c6807..9baed58985b7 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -47,6 +47,7 @@ /obj/item/clothing/head/helmet/space/hardsuit/Destroy() STOP_PROCESSING(SSobj, src) QDEL_NULL(soundloop) + suit = null return ..() /obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user) @@ -181,10 +182,6 @@ QDEL_NULL(jetpack) return ..() -/obj/item/clothing/head/helmet/space/hardsuit/Destroy() - suit = null - return ..() - /obj/item/clothing/suit/space/hardsuit/proc/MakeHelmet() if(!helmettype) return @@ -230,6 +227,8 @@ /obj/item/clothing/suit/space/hardsuit/equipped(mob/user, slot) ..() + if(helmettype && slot != SLOT_HUD_OUTER_SUIT) + RemoveHelmet() if(jetpack) if(slot == SLOT_HUD_OUTER_SUIT) for(var/X in jetpack.actions) @@ -238,6 +237,7 @@ /obj/item/clothing/suit/space/hardsuit/dropped(mob/user) ..() + RemoveHelmet() if(jetpack) for(var/X in jetpack.actions) var/datum/action/A = X diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 1cd0e2f1e207..c6b4c1beb536 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -5,13 +5,6 @@ ..() ToggleHelmet() -/obj/item/clothing/suit/space/hardsuit/equipped(mob/user, slot) - if(!helmettype) - return - if(slot != SLOT_HUD_OUTER_SUIT) - RemoveHelmet() - ..() - /obj/item/clothing/suit/space/hardsuit/proc/RemoveHelmet() if(!helmet) return @@ -28,10 +21,6 @@ else helmet.forceMove(src) -/obj/item/clothing/suit/space/hardsuit/dropped() - ..() - RemoveHelmet() - /obj/item/clothing/suit/space/hardsuit/proc/ToggleHelmet() var/mob/living/carbon/human/H = src.loc if(!helmettype) diff --git a/code/modules/events/blob/blob_mobs.dm b/code/modules/events/blob/blob_mobs.dm index 85f57c126ab8..57d8dc3232b4 100644 --- a/code/modules/events/blob/blob_mobs.dm +++ b/code/modules/events/blob/blob_mobs.dm @@ -204,6 +204,8 @@ . = ..() var/datum/action/innate/communicate_overmind_blob/overmind_chat = new overmind_chat.Grant(src) + if(name == "blobbernaut") + name = "blobbernaut ([rand(1, 1000)])" /datum/action/innate/communicate_overmind_blob name = "Speak with the overmind" @@ -228,11 +230,6 @@ adjustFireLoss(0.2) ..() -/mob/living/simple_animal/hostile/blob/blobbernaut/Initialize(mapload) - . = ..() - if(name == "blobbernaut") - name = "blobbernaut ([rand(1, 1000)])" - /mob/living/simple_animal/hostile/blob/blobbernaut/death(gibbed) // Only execute the below if we successfully died . = ..() diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index bc65ffb4d85b..106fe9c902dd 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -190,7 +190,8 @@ GLOBAL_LIST_EMPTY(event_last_fired) new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/spawn_morph, 40, list(ASSIGNMENT_SECURITY = 10), is_one_shot = TRUE), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Pulse Demon Infiltration", /datum/event/spawn_pulsedemon, 150, list(ASSIGNMENT_ENGINEER = 10), is_one_shot = TRUE), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Disease Outbreak", /datum/event/disease_outbreak, 50, list(ASSIGNMENT_MEDICAL = 30), TRUE), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Door Runtime", /datum/event/door_runtime, 50, list(ASSIGNMENT_ENGINEER = 25, ASSIGNMENT_AI = 150), TRUE) + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Door Runtime", /datum/event/door_runtime, 50, list(ASSIGNMENT_ENGINEER = 25, ASSIGNMENT_AI = 150), TRUE), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Tourist Arrivals", /datum/event/tourist_arrivals, 100, list(ASSIGNMENT_SECURITY = 15), TRUE) ) /datum/event_container/major diff --git a/code/modules/food_and_drinks/food_base.dm b/code/modules/food_and_drinks/food_base.dm index 005b1f28a004..9fd4583acd2f 100644 --- a/code/modules/food_and_drinks/food_base.dm +++ b/code/modules/food_and_drinks/food_base.dm @@ -319,6 +319,11 @@ to_chat(user, "You cannot slice [src] here! You need a table or at least a tray to do it.") return TRUE var/slices_lost = 0 + var/initial_volume = 0 // the total some of reagents this food had initially + for(var/ingredient in list_reagents) + initial_volume += list_reagents[ingredient] + // we want to account for how much has been eaten already, reduce slices by how is left vs. how much food we started with + slices_num = clamp(slices_num * (reagents.total_volume / initial_volume), 1, slices_num) if(!inaccurate) user.visible_message("[user] slices [src]!", "You slice [src]!") diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index a794a6c784a1..199a7add0bcf 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -163,7 +163,11 @@ H.parentdeck = src H.update_values() H.update_appearance(UPDATE_NAME|UPDATE_DESC|UPDATE_OVERLAYS) - user.visible_message("[user] draws a card.","You draw a card.") + user.visible_message( + "[user] draws a card.", + "You draw a card.", + "You hear a card being drawn." + ) to_chat(user,"It's the [P].") /obj/item/deck/proc/deal_card() @@ -217,12 +221,19 @@ H.concealed = TRUE H.update_appearance(UPDATE_NAME|UPDATE_DESC|UPDATE_OVERLAYS) if(user == target) - user.visible_message("[user] deals [dcard] card(s) to [user.p_themselves()].") + user.visible_message( + "[user] deals [dcard] card\s to [user.p_themselves()].", + "You deal [dcard] card\s to yourself.", + "You hear cards being dealt." + ) else - user.visible_message("[user] deals [dcard] card(s) to [target].") + user.visible_message( + "[user] deals [dcard] card\s to [target].", + "You deal [dcard] card\s to [target].", + "You hear cards being dealt." + ) H.throw_at(get_step(target, target.dir), 3, 1, null) - /obj/item/deck/attack_self() deckshuffle() @@ -235,7 +246,11 @@ cards = shuffle(cards) if(user) - user.visible_message("[user] shuffles [src].") + user.visible_message( + "[user] shuffles [src].", + "You shuffle [src].", + "You hear cards being shuffled." + ) playsound(user, 'sound/items/cardshuffle.ogg', 50, TRUE) cooldown = world.time @@ -244,6 +259,7 @@ var/mob/M = usr if(M.incapacitated() || !Adjacent(M)) return + if(!ishuman(M)) return @@ -278,7 +294,11 @@ /obj/item/pack/attack_self(mob/user as mob) - user.visible_message("[name] rips open [src]!", "You rip open [src]!") + user.visible_message( + "[name] rips open [src]!", + "You rip open [src]!", + "You hear the sound of a packet being ripped open." + ) var/obj/item/cardhand/H = new(get_turf(user)) H.cards += cards @@ -352,7 +372,11 @@ /obj/item/cardhand/proc/turn_hand(mob/user) concealed = !concealed update_appearance(UPDATE_NAME|UPDATE_DESC|UPDATE_OVERLAYS) - user.visible_message("[user] [concealed ? "conceals" : "reveals"] their hand.") + user.visible_message( + "[user] [concealed ? "conceals" : "reveals"] their hand.", + "You[concealed ? "conceal" : "reveal"] your hand.", + "You hear a hand of cards being flipped over." + ) /obj/item/cardhand/interact(mob/user) var/dat = "You have:
" @@ -440,7 +464,11 @@ var/datum/playingcard/card = pickablecards[pickedcard] if(loc != user) // Don't want people teleporting cards return - user.visible_message("[user] draws a card from [user.p_their()] hand.", "You take the [pickedcard] from your hand.") + user.visible_message( + "[user] draws a card from [user.p_their()] hand.", + "You take \the [pickedcard] from your hand.", + "You hear a card being drawn." + ) pickedcard = null var/obj/item/cardhand/H = new(get_turf(src)) @@ -492,7 +520,11 @@ if(length(cards)) update_appearance(UPDATE_NAME|UPDATE_DESC|UPDATE_OVERLAYS) if(length(H.cards)) - user.visible_message("[user] plays the [discarding].", "You play the [discarding].") + user.visible_message( + "[user] plays \the [discarding].", + "You play \the [discarding].", + "You hear a card being played." + ) H.loc = get_step(user, user.dir) if(!length(cards)) diff --git a/code/modules/games/tarot.dm b/code/modules/games/tarot.dm index eba209dd8922..6f0485d0da3f 100644 --- a/code/modules/games/tarot.dm +++ b/code/modules/games/tarot.dm @@ -25,7 +25,11 @@ newcards += P cards -= P cards = newcards - playsound(user, 'sound/items/cardshuffle.ogg', 50, 1) - user.visible_message("[user] shuffles [src].", "You shuffle [src].") + playsound(user, 'sound/items/cardshuffle.ogg', 50, TRUE) + user.visible_message( + "[user] shuffles [src].", + "You shuffle [src].", + "You hear cards being shuffled." + ) cooldown = world.time diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm index 834f58222a43..89757f89d5e3 100644 --- a/code/modules/lighting/lighting_atom.dm +++ b/code/modules/lighting/lighting_atom.dm @@ -48,16 +48,6 @@ /atom/proc/extinguish_light(force = FALSE) return -// If we have opacity, make sure to tell (potentially) affected light sources. -/atom/movable/Destroy() - var/turf/T = loc - . = ..() - if(opacity && istype(T)) - var/old_has_opaque_atom = T.has_opaque_atom - T.recalc_atom_opacity() - if(old_has_opaque_atom != T.has_opaque_atom) - T.reconsider_lights() - // Should always be used to change the opacity of an atom. // It notifies (potentially) affected light sources so they can update (if needed). /atom/proc/set_opacity(new_opacity) @@ -78,23 +68,6 @@ if(old_has_opaque_atom != T.has_opaque_atom) T.reconsider_lights() -/atom/vv_edit_var(var_name, var_value) - switch(var_name) - if("light_range") - set_light(l_range=var_value) - return TRUE - - if("light_power") - set_light(l_power=var_value) - return TRUE - - if("light_color") - set_light(l_color=var_value) - return TRUE - - return ..() - - /atom/proc/flash_lighting_fx(_range = FLASH_LIGHT_RANGE, _power = FLASH_LIGHT_POWER, _color = LIGHT_COLOR_WHITE, _duration = FLASH_LIGHT_DURATION, _reset_lighting = TRUE) return diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 7f50e031d798..0ea3a5eb9137 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -36,7 +36,7 @@ /obj/item/kinetic_crusher/Initialize(mapload) . = ..() - AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.7, _parryable_attack_types = MELEE_ATTACK, _parry_cooldown = (10 / 3) SECONDS ) // 2.3333 seconds of cooldown for 30% uptime + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.7, _parryable_attack_types = MELEE_ATTACK, _parry_cooldown = (10 / 3) SECONDS, _requires_two_hands = TRUE) // 2.3333 seconds of cooldown for 30% uptime AddComponent(/datum/component/two_handed, force_wielded = force_wielded, force_unwielded = force) /obj/item/kinetic_crusher/Destroy() diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index f6ec847f9239..2cab7e579075 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -201,15 +201,16 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/economy/vending/wallmed/survival_pod, density = TRUE pixel_y = -32 -/obj/item/gps/computer/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/wrench)) - playsound(loc, W.usesound, 50, 1) - user.visible_message("[user] disassembles the gps.", \ - "You start to disassemble the gps...", "You hear clanking and banging noises.") - if(do_after(user, 20 * W.toolspeed, target = src)) - new /obj/item/gps(loc) - qdel(src) - return ..() +/obj/item/gps/computer/wrench_act(mob/living/user, obj/item/I) + . = TRUE + user.visible_message("[user] starts to disassemble [src].", \ + "You start to disassemble [src]...", "You hear clanking and banging noises.") + if(!I.use_tool(src, user, 2 SECONDS, 0, 50)) + return + user.visible_message("[user] disassembles [src].", \ + "You disassemble [src].", "You hear clanking and banging noises.") + new /obj/item/gps(loc) + qdel(src) /obj/item/gps/computer/attack_hand(mob/user) attack_self(user) @@ -296,14 +297,15 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/economy/vending/wallmed/survival_pod, new buildstacktype(loc, buildstackamount) qdel(src) -/obj/structure/fans/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/wrench)) - playsound(loc, W.usesound, 50, 1) - user.visible_message("[user] disassembles the fan.", \ - "You start to disassemble the fan...", "You hear clanking and banging noises.") - if(do_after(user, 20 * W.toolspeed, target = src)) - deconstruct() - return ..() +/obj/structure/fans/wrench_act(mob/living/user, obj/item/I) + . = TRUE + user.visible_message("[user] starts to disassemble [src].", \ + "You start to disassemble [src]...", "You hear clanking and banging noises.") + if(!I.use_tool(src, user, 2 SECONDS, volume = 50)) + return + user.visible_message("[user] disassembles [src].", \ + "You disassemble [src].", "You hear something fall on the floor.") + deconstruct() /obj/structure/fans/tiny name = "tiny fan" @@ -343,15 +345,14 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/economy/vending/wallmed/survival_pod, layer = MOB_LAYER - 0.2 density = FALSE -/obj/structure/tubes/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/wrench)) - playsound(loc, W.usesound, 50, 1) - user.visible_message("[user] disassembles [src].", \ - "You start to disassemble [src]...", "You hear clanking and banging noises.") - if(do_after(user, 20 * W.toolspeed, target = src)) - new /obj/item/stack/rods(loc) - qdel(src) - return ..() +/obj/structure/tubes/wrench_act(mob/living/user, obj/item/W) + . = TRUE + user.visible_message("[user] disassembles [src].", \ + "You start to disassemble [src]...", "You hear clanking and banging noises.") + if(!W.use_tool(src, user, 2 SECONDS, volume = 50)) + return + new /obj/item/stack/rods(loc) + qdel(src) /obj/item/fakeartefact name = "expensive forgery" diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index f5e1a869df43..eaff6e6c647e 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -27,8 +27,6 @@ component_parts += new /obj/item/stack/sheet/glass(null) RefreshParts() -/obj/machinery/mineral/equipment_vendor/Initialize(mapload) - . = ..() prize_list = list() prize_list["Gear"] = list( EQUIPMENT("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800), @@ -313,8 +311,6 @@ component_parts += new /obj/item/stack/sheet/glass(null) RefreshParts() -/obj/machinery/mineral/equipment_vendor/golem/Initialize() - . = ..() desc += "\nIt seems a few selections have been added." prize_list["Extra"] += list( EQUIPMENT("Extra ID", /obj/item/card/id/golem, 250), @@ -344,8 +340,6 @@ component_parts += new /obj/item/stack/sheet/glass(null) RefreshParts() -/obj/machinery/mineral/equipment_vendor/labor/Initialize() - . = ..() prize_list = list() prize_list["Scum"] += list( EQUIPMENT("Trauma Kit", /obj/item/stack/medical/bruise_pack/advanced, 150), @@ -388,8 +382,6 @@ component_parts += new /obj/item/stack/sheet/glass(null) RefreshParts() -/obj/machinery/mineral/equipment_vendor/explorer/Initialize(mapload) - . = ..() prize_list = list() prize_list["Equipment"] = list( EQUIPMENT("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800), diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index 79cbaac0bb19..1d0a465f01b4 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -48,6 +48,7 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new) var/list/ghosts = list() var/list/misc = list() var/list/npcs = list() + var/list/tourist = list() var/length_of_ghosts = length(get_observers()) var/list/pois = getpois(mobs_only = FALSE, skip_mindless = FALSE) @@ -91,6 +92,8 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new) var/datum/mind/mind = M.mind if(mind.special_role in list(SPECIAL_ROLE_ERT, SPECIAL_ROLE_DEATHSQUAD, SPECIAL_ROLE_SYNDICATE_DEATHSQUAD)) response_teams += list(serialized) + if(mind.special_role == SPECIAL_ROLE_TOURIST) + tourist += list(serialized) if(user.antagHUD) /* @@ -166,6 +169,7 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new) data["antagonists"] = antagonists data["highlights"] = highlights data["response_teams"] = response_teams + data["tourist"] = tourist data["alive"] = alive data["ssd"] = ssd data["dead"] = dead diff --git a/code/modules/mob/living/carbon/alien/alien_base.dm b/code/modules/mob/living/carbon/alien/alien_base.dm index b9de6c57733e..2786d40ae5aa 100644 --- a/code/modules/mob/living/carbon/alien/alien_base.dm +++ b/code/modules/mob/living/carbon/alien/alien_base.dm @@ -164,13 +164,6 @@ return threatcount -/mob/living/carbon/alien/death(gibbed) - . = ..() - if(!.) - return - - deathrattle() - /mob/living/carbon/alien/proc/deathrattle() var/alien_message = deathrattle_message() for(var/mob/living/carbon/alien/M in GLOB.player_list) diff --git a/code/modules/mob/living/carbon/alien/alien_death.dm b/code/modules/mob/living/carbon/alien/alien_death.dm index d6bf44791b16..58be5381c597 100644 --- a/code/modules/mob/living/carbon/alien/alien_death.dm +++ b/code/modules/mob/living/carbon/alien/alien_death.dm @@ -72,3 +72,5 @@ playsound(loc, death_sound, 80, TRUE, 1) visible_message("[src] [death_message]") update_icons() + + deathrattle() diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 7ad0690d6d7d..a2db48cfdcf7 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -498,13 +498,13 @@ emp_act send_item_attack_message(I, user, hit_area) + if(!I.force) + return FALSE //item force is zero + var/armor = run_armor_check(affecting, MELEE, "Your armour has protected your [hit_area].", "Your armour has softened hit to your [hit_area].", armour_penetration_flat = I.armour_penetration_flat, armour_penetration_percentage = I.armour_penetration_percentage) if(armor == INFINITY) return FALSE - if(!I.force) - return TRUE // item force is zero, it deals no damage, we do not apply damage - var/weapon_sharp = I.sharp // do not roll for random blunt if the target mob is dead for the ease of decaps if(stat != DEAD) @@ -570,7 +570,6 @@ emp_act update_inv_w_uniform() dna.species.spec_attacked_by(I, user, affecting, user.a_intent, src) - return TRUE //this proc handles being hit by a thrown atom /mob/living/carbon/human/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index dd035515c2e2..f9d728abfab8 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -4,28 +4,6 @@ . += GLOB.configuration.movement.human_delay . += dna.species.movement_delay(src) -/mob/living/carbon/human/Process_Spacemove(movement_dir = 0) - - if(..()) - return TRUE - - //Do we have a working jetpack? - var/obj/item/tank/jetpack/thrust - if(istype(back, /obj/item/tank/jetpack)) - thrust = back - else if(istype(wear_suit, /obj/item/clothing/suit/space/hardsuit)) - var/obj/item/clothing/suit/space/hardsuit/C = wear_suit - thrust = C.jetpack - else if(ismodcontrol(back)) - var/obj/item/mod/control/C = back - thrust = locate(/obj/item/mod/module/jetpack) in C - if(thrust) - if((movement_dir || thrust.stabilizers) && thrust.allow_thrust(0.01, src)) - return TRUE - if(dna.species.spec_Process_Spacemove(src)) - return TRUE - return FALSE - /mob/living/carbon/human/mob_has_gravity() . = ..() if(!.) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index c9cf61fc8a4a..c986e24f10d7 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1086,8 +1086,6 @@ GLOB.dead_mob_list += src . = ..() switch(var_name) - if("maxHealth") - updatehealth() if("resize") update_transform() if("lighting_alpha") @@ -1095,6 +1093,10 @@ if("advanced_bullet_dodge_chance") UnregisterSignal(src, COMSIG_ATOM_PREHIT) RegisterSignal(src, COMSIG_ATOM_PREHIT, PROC_REF(advanced_bullet_dodge)) + if("maxHealth") + updatehealth("var edit") + if("resize") + update_transform() /mob/living/throw_at(atom/target, range, speed, mob/thrower, spin, diagonals_first, datum/callback/callback, force, dodgeable, block_movement) stop_pulling() diff --git a/code/modules/mob/living/living_life.dm b/code/modules/mob/living/living_life.dm index 55d40f5d536c..e5cde5004aad 100644 --- a/code/modules/mob/living/living_life.dm +++ b/code/modules/mob/living/living_life.dm @@ -95,9 +95,6 @@ if(forced_look) setDir() - if(machine) - machine.check_eye(src) - if(stat != DEAD) return TRUE diff --git a/code/modules/mob/living/living_update_status.dm b/code/modules/mob/living/living_update_status.dm index 5f729221cf5c..8ffe9b213c74 100644 --- a/code/modules/mob/living/living_update_status.dm +++ b/code/modules/mob/living/living_update_status.dm @@ -89,11 +89,3 @@ /mob/living/proc/update_stamina() return - -/mob/living/vv_edit_var(var_name, var_value) - . = ..() - switch(var_name) - if("maxHealth") - updatehealth("var edit") - if("resize") - update_transform() diff --git a/code/modules/mob/living/silicon/ai/ai_life.dm b/code/modules/mob/living/silicon/ai/ai_life.dm index cacd568f6aa4..32ea44829902 100644 --- a/code/modules/mob/living/silicon/ai/ai_life.dm +++ b/code/modules/mob/living/silicon/ai/ai_life.dm @@ -22,8 +22,9 @@ if(!eyeobj || QDELETED(eyeobj) || !eyeobj.loc) view_core() - if(machine) - machine.check_eye(src) + // Do holopad AI checks + if(istype(machine, /obj/machinery/hologram)) + check_holopad_eye() if(malfhack && malfhack.aidisabled) to_chat(src, "ERROR: APC access disabled, hack attempt canceled.") diff --git a/code/modules/mob/living/silicon/ai/ai_mob.dm b/code/modules/mob/living/silicon/ai/ai_mob.dm index 965062ff0381..119d0fd7d0fb 100644 --- a/code/modules/mob/living/silicon/ai/ai_mob.dm +++ b/code/modules/mob/living/silicon/ai/ai_mob.dm @@ -662,7 +662,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( ai_announcement() -/mob/living/silicon/ai/check_eye(mob/user) +/mob/living/silicon/ai/proc/check_holopad_eye(mob/user) if(!current) return null user.reset_perspective(current) @@ -1247,27 +1247,22 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( C.Togglelight(1) lit_cameras |= C - -/mob/living/silicon/ai/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/wrench)) - if(anchored) - user.visible_message("[user] начинает откручивать [src] от пола...") - if(!do_after(user, 40 * W.toolspeed, target = src)) - user.visible_message("[user] решает не откручивать [src].") - return - user.visible_message(" [user] закончил открутку [src]!") - anchored = FALSE - return - else - user.visible_message("[user] начинает прикручивть [src] к полу...") - if(!do_after(user, 40 * W.toolspeed, target = src)) - user.visible_message("[user] решает не закручивать [src].") - return - user.visible_message("[user] закончил закручивать [src]!") - anchored = TRUE +/mob/living/silicon/ai/wrench_act(mob/living/user, obj/item/I) + . = TRUE + if(anchored) + user.visible_message("[user] начинает откручивать [src] от пола...") + if(I.use_tool(src, user, 4 SECONDS, 0, 50)) + user.visible_message("[user] решает не откручивать [src].") return - else - return ..() + user.visible_message("[user] закончил открутку [src]!") + anchored = FALSE + return + user.visible_message("[user] начинает прикручивать [src] к полу...") + if(!I.use_tool(src, user, 4 SECONDS, 0, 50)) + user.visible_message("[user] решает не закручивать [src].") + return FALSE + user.visible_message("[user] закончил закручивать [src]!") + anchored = TRUE /mob/living/silicon/ai/welder_act() return @@ -1333,15 +1328,6 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( /mob/living/silicon/ai/can_buckle() return FALSE -/mob/living/silicon/ai/switch_to_camera(obj/machinery/camera/C) - if(!C.can_use() || !is_in_chassis()) - return FALSE - - eyeobj.setLoc(get_turf(C)) - client.eye = eyeobj - return TRUE - - /mob/living/silicon/ai/proc/can_see(atom/A) if(isturf(loc)) //AI in core, check if on cameras //get_turf_pixel() is because APCs in maint aren't actually in view of the inner camera diff --git a/code/modules/mob/living/silicon/robot/robot_laws.dm b/code/modules/mob/living/silicon/robot/robot_laws.dm index 7dfb82c861fc..c8a1ae9a12e3 100644 --- a/code/modules/mob/living/silicon/robot/robot_laws.dm +++ b/code/modules/mob/living/silicon/robot/robot_laws.dm @@ -68,6 +68,8 @@ /mob/living/silicon/robot/set_zeroth_law(law, law_borg) if(mmi && mmi.syndiemmi) return FALSE + if(tracking_entities) + to_chat(src, "Internal camera is currently being accessed.") ..() /mob/living/silicon/robot/clear_zeroth_law() diff --git a/code/modules/mob/living/silicon/robot/syndicate_robot.dm b/code/modules/mob/living/silicon/robot/syndicate_robot.dm index 47f25fa6dbf3..17801c1a2e3b 100644 --- a/code/modules/mob/living/silicon/robot/syndicate_robot.dm +++ b/code/modules/mob/living/silicon/robot/syndicate_robot.dm @@ -136,8 +136,3 @@ if(cham_proj) cham_proj.disrupt(src) ..() - -/mob/living/silicon/robot/syndicate/saboteur/attackby() - if(cham_proj) - cham_proj.disrupt(src) - ..() diff --git a/code/modules/mob/living/silicon/silicon_death.dm b/code/modules/mob/living/silicon/silicon_death.dm index f750829e1fba..a829d5e944e8 100644 --- a/code/modules/mob/living/silicon/silicon_death.dm +++ b/code/modules/mob/living/silicon/silicon_death.dm @@ -46,3 +46,5 @@ if(. && !gibbed) if(death_sound) playsound(get_turf(src), death_sound, 200, 1) + if(gibbed) + drop_hat() diff --git a/code/modules/mob/living/silicon/silicon_laws.dm b/code/modules/mob/living/silicon/silicon_laws.dm index d8659cea92e6..fbe928b94a95 100644 --- a/code/modules/mob/living/silicon/silicon_laws.dm +++ b/code/modules/mob/living/silicon/silicon_laws.dm @@ -14,11 +14,6 @@ if(!isnull(usr) && law) log_and_message_admins("has given [src] the zeroth laws: [law]/[law_borg ? law_borg : "N/A"]") -/mob/living/silicon/robot/set_zeroth_law(law, law_borg) - ..() - if(tracking_entities) - to_chat(src, "Internal camera is currently being accessed.") - /mob/living/silicon/proc/add_ion_law(law) throw_alert("newlaw", /atom/movable/screen/alert/newlaw) laws_sanity_check() diff --git a/code/modules/mob/living/silicon/silicon_mob.dm b/code/modules/mob/living/silicon/silicon_mob.dm index 5ef235c00b05..34dde783afe5 100644 --- a/code/modules/mob/living/silicon/silicon_mob.dm +++ b/code/modules/mob/living/silicon/silicon_mob.dm @@ -589,11 +589,6 @@ hat_alpha = null hat_color = null -/mob/living/silicon/death(gibbed) - if(gibbed) - drop_hat() - . = ..() - /mob/living/silicon/examine(mob/user) . = ..() if(silicon_hat) diff --git a/code/modules/mob/living/simple_animal/bot/bot_construction.dm b/code/modules/mob/living/simple_animal/bot/bot_construction.dm index 79cd8ab61e75..d73819b64759 100644 --- a/code/modules/mob/living/simple_animal/bot/bot_construction.dm +++ b/code/modules/mob/living/simple_animal/bot/bot_construction.dm @@ -505,7 +505,7 @@ //General Griefsky - else if(istype(I, /obj/item/wrench) && build_step == 3) + else if(iswrench(I) && build_step == 3) var/obj/item/griefsky_assembly/A = new /obj/item/griefsky_assembly(get_turf(src)) user.put_in_hands(A) to_chat(user, "You adjust the arm slots for extra weapons!") diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index f0ab0f285bd9..f01dcf6f015e 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -202,6 +202,24 @@ set_weapon() /mob/living/simple_animal/bot/ed209/bullet_act(obj/item/projectile/Proj) + if(!disabled) + var/lasertag_check = FALSE + if(lasercolor == "b") + if(istype(Proj, /obj/item/projectile/beam/lasertag/redtag)) + lasertag_check = TRUE + + else if(lasercolor == "r") + if(istype(Proj, /obj/item/projectile/beam/lasertag/bluetag)) + lasertag_check = TRUE + + if(lasertag_check) + icon_state = "[lasercolor]ed2090" + disabled = TRUE + walk_to(src, 0) + target = null + addtimer(CALLBACK(src, PROC_REF(unset_disabled)), 10 SECONDS) + return TRUE + if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet)) if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) if(!Proj.nodamage && Proj.damage < src.health) @@ -498,32 +516,6 @@ target = toarrest mode = BOT_HUNT - -/mob/living/simple_animal/bot/ed209/bullet_act(obj/item/projectile/Proj) - if(!disabled) - var/lasertag_check = 0 - if(lasercolor == "b") - if(istype(Proj, /obj/item/projectile/beam/lasertag/redtag)) - lasertag_check++ - - else if(lasercolor == "r") - if(istype(Proj, /obj/item/projectile/beam/lasertag/bluetag)) - lasertag_check++ - - if(lasertag_check) - icon_state = "[lasercolor]ed2090" - disabled = TRUE - walk_to(src, 0) - target = null - addtimer(CALLBACK(src, PROC_REF(unset_disabled)), 10 SECONDS) - return TRUE - - else - ..(Proj) - - else - ..(Proj) - /mob/living/simple_animal/bot/ed209/proc/unset_disabled() disabled = FALSE icon_state = "[lasercolor]ed2091" diff --git a/code/modules/mob/living/simple_animal/bot/griefsky.dm b/code/modules/mob/living/simple_animal/bot/griefsky.dm index 369ee5089a01..5d4f8d95b006 100644 --- a/code/modules/mob/living/simple_animal/bot/griefsky.dm +++ b/code/modules/mob/living/simple_animal/bot/griefsky.dm @@ -207,18 +207,7 @@ //this section is blocking attack -/mob/living/simple_animal/bot/secbot/griefsky/bullet_act(obj/item/projectile/P) //so uncivilized - retaliate(P.firer) - if((icon_state == spin_icon) && (prob(block_chance_ranged))) //only when the eswords are on - visible_message("[src] deflects [P] with its energy swords!") - playsound(loc, 'sound/weapons/blade1.ogg', 50, TRUE, 0) - else - ..() - -/mob/living/simple_animal/bot/secbot/griefsky/proc/special_retaliate_after_attack(mob/user) //allows special actions to take place after being attacked. - return - -/mob/living/simple_animal/bot/secbot/griefsky/special_retaliate_after_attack(mob/user) +/mob/living/simple_animal/bot/secbot/griefsky/proc/special_retaliate_after_attack(mob/user) if(icon_state != spin_icon) return if(prob(block_chance_melee)) diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm index 3afe53239e36..5d28b33ca164 100644 --- a/code/modules/mob/living/simple_animal/corpse.dm +++ b/code/modules/mob/living/simple_animal/corpse.dm @@ -120,7 +120,7 @@ name = "Corpse of a Space Wizard" outfit = /datum/outfit/wizardcorpse -/obj/effect/mob_spawn/human/corpse/clown/officer/Initialize(mapload) +/obj/effect/mob_spawn/human/corpse/wizard/officer/Initialize(mapload) mob_name = "[pick(GLOB.wizard_first)], [pick(GLOB.wizard_second)]" . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index 56c38fb4dddd..ad8b1f7becbf 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -281,13 +281,13 @@ Difficulty: Medium if(time_until_next_transform <= world.time) miner_saw.transform_cooldown = 0 miner_saw.transform_weapon(src, TRUE) - if(!miner_saw.active) + if(!HAS_TRAIT(miner_saw, TRAIT_ITEM_ACTIVE)) rapid_melee = 5 // 4 deci cooldown before changes, npcpool subsystem wait is 20, 20/4 = 5 else rapid_melee = 3 // same thing but halved (slightly rounded up) transform_stop_attack = TRUE - icon_state = "miner[miner_saw.active ? "_transformed":""]" - icon_living = "miner[miner_saw.active ? "_transformed":""]" + icon_state = "miner[HAS_TRAIT(miner_saw, TRAIT_ITEM_ACTIVE) ? "_transformed":""]" + icon_living = "miner[HAS_TRAIT(miner_saw, TRAIT_ITEM_ACTIVE) ? "_transformed":""]" time_until_next_transform = world.time + rand(50, 100) /obj/effect/temp_visual/dir_setting/miner_death diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm index 04670f69d5ab..063ac6b55eaa 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm @@ -1,21 +1,3 @@ -// This is important -/mob/living/attack_ghost(mob/dead/observer/user) - if(prob(80)) return ..() - var/found = 0 - for(var/mob/living/simple_animal/hostile/retaliate/R in range(4,src)) - if(R.faction != "undead" || R == src || prob(50)) continue - found = 1 - R.enemies ^= src - if(src in R.enemies) - R.visible_message("[R]'s head swivels eerily towards [src].") - else - R.visible_message("[R] stares at [src] for a minute before turning away.") - if(R.target == src) - R.target = null - if(!found) - return ..() - - /mob/living/simple_animal/hostile/retaliate/ghost icon = 'icons/mob/mob.dmi' name = "ghost" diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm index 8cf7af301e17..a5474f7f6e1a 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm @@ -30,6 +30,8 @@ /obj/structure/spider/spiderling/terror_spiderling/Destroy() GLOB.ts_spiderling_list -= src + for(var/obj/structure/spider/spiderling/terror_spiderling/S in view(7, src)) + S.immediate_ventcrawl = TRUE return ..() /obj/structure/spider/spiderling/terror_spiderling/Bump(obj/O) @@ -37,12 +39,6 @@ forceMove(O.loc) . = ..() - -/obj/structure/spider/spiderling/terror_spiderling/Destroy() - for(var/obj/structure/spider/spiderling/terror_spiderling/S in view(7, src)) - S.immediate_ventcrawl = TRUE - return ..() - /obj/structure/spider/spiderling/terror_spiderling/proc/score_surroundings(atom/A = src) var/safety_score = 0 var/turf/T = get_turf(A) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 8cb03da0998f..9b2a77bc05e5 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -386,6 +386,14 @@ /mob/living/simple_animal/revive() ..() density = initial(density) + health = maxHealth + icon = initial(icon) + icon_state = icon_living + density = initial(density) + flying = initial(flying) + if(collar_type) + collar_type = "[initial(collar_type)]" + regenerate_icons() /mob/living/simple_animal/death(gibbed) // Only execute the below if we successfully died @@ -465,17 +473,6 @@ if(on_fire) overlays += image("icon"='icons/mob/OnFire.dmi', "icon_state"="Generic_mob_burning") -/mob/living/simple_animal/revive() - ..() - health = maxHealth - icon = initial(icon) - icon_state = icon_living - density = initial(density) - flying = initial(flying) - if(collar_type) - collar_type = "[initial(collar_type)]" - regenerate_icons() - /mob/living/simple_animal/proc/make_babies() // <3 <3 <3 if(current_offspring >= max_offspring) return FALSE @@ -620,12 +617,6 @@ if(pulledby || shouldwakeup) toggle_ai(AI_ON) -/mob/living/simple_animal/adjustHealth(amount, updating_health = TRUE) - . = ..() - if(!ckey && stat == CONSCIOUS)//Not unconscious - if(AIStatus == AI_IDLE) - toggle_ai(AI_ON) - /mob/living/simple_animal/onTransitZ(old_z, new_z) ..() if(AIStatus == AI_Z_OFF) diff --git a/code/modules/mob/living/simple_animal/simple_animal_damage.dm b/code/modules/mob/living/simple_animal/simple_animal_damage.dm index fdcbf95216b7..d2ddc3c894f3 100644 --- a/code/modules/mob/living/simple_animal/simple_animal_damage.dm +++ b/code/modules/mob/living/simple_animal/simple_animal_damage.dm @@ -11,6 +11,9 @@ . = STATUS_UPDATE_HEALTH if(updating_health) updatehealth() + if(!ckey && stat == CONSCIOUS)//Not unconscious + if(AIStatus == AI_IDLE) + toggle_ai(AI_ON) /mob/living/simple_animal/adjustBruteLoss(amount, updating_health = TRUE) if(damage_coeff[BRUTE]) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 4feac84bdecd..64191fe25910 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1031,10 +1031,6 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \ qdel(S) mob_spell_list -= S -//override to avoid rotating pixel_xy on mobs -/mob/shuttleRotate(rotation) - dir = angle2dir(rotation+dir2angle(dir)) - /mob/proc/handle_ventcrawl() return // Only living mobs can ventcrawl diff --git a/code/modules/mob/mob_misc_procs.dm b/code/modules/mob/mob_misc_procs.dm index 02ce69b9215d..d9e460f5b960 100644 --- a/code/modules/mob/mob_misc_procs.dm +++ b/code/modules/mob/mob_misc_procs.dm @@ -580,12 +580,6 @@ return FALSE return TRUE -/mob/proc/switch_to_camera(obj/machinery/camera/C) - if(!C.can_use() || incapacitated() || (get_dist(C, src) > 1 || machine != src || !has_vision())) - return FALSE - check_eye(src) - return TRUE - /mob/proc/rename_character(oldname, newname) if(!newname) return FALSE diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index 8b58152f4f15..3c41d1ba3b93 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -253,6 +253,7 @@ if(!wearer || old_loc != wearer || loc == wearer) return clean_up() + bag?.update_viewers() /obj/item/mod/control/MouseDrop(atom/over_object) if(iscarbon(usr)) @@ -775,7 +776,3 @@ . = ..() for(var/obj/item/mod/module/module as anything in modules) module.extinguish_light(force) - -/obj/item/mod/control/Moved(atom/oldloc, dir, forced = FALSE) - . = ..() - bag?.update_viewers() diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index f4f6624fec1b..f7dc549a2b78 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -19,6 +19,13 @@ /obj/item/mod/module/storage/Initialize() . = ..() ADD_TRAIT(src, TRAIT_ADJACENCY_TRANSPARENT, ROUNDSTART_TRAIT) + var/obj/item/storage/backpack/modstorage/S = new(src) + bag = S + bag.max_w_class = max_w_class + bag.max_combined_w_class = max_combined_w_class + bag.storage_slots = max_items + bag.source = src + bag.forceMove(src) /obj/item/mod/module/storage/serialize() var/list/data = ..() @@ -31,16 +38,6 @@ bag = list_to_object(data["bag"], src) bag.source = src -/obj/item/mod/module/storage/Initialize(mapload) - . = ..() - var/obj/item/storage/backpack/modstorage/S = new(src) - bag = S - bag.max_w_class = max_w_class - bag.max_combined_w_class = max_combined_w_class - bag.storage_slots = max_items - bag.source = src - bag.forceMove(src) - /obj/item/mod/module/storage/Destroy() QDEL_NULL(bag) return ..() diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm index f0c31a299555..06c4704c21f2 100644 --- a/code/modules/mod/modules/modules_supply.dm +++ b/code/modules/mod/modules/modules_supply.dm @@ -312,16 +312,6 @@ /obj/item/mod/module/ash_accretion/Initialize(mapload) . = ..() armor_mod_2 = new armor_mod_1 - -/obj/item/mod/module/ash_accretion/Destroy() - QDEL_NULL(armor_mod_2) - return ..() - -/obj/item/mod/armor/mod_ash_accretion - armor = list(MELEE = 4, BULLET = 1, LASER = 2, ENERGY = 1, BOMB = 4, RAD = 0, FIRE = 0, ACID = 0) - -/obj/item/mod/module/ash_accretion/Initialize(mapload) - . = ..() if(!accretion_turfs) accretion_turfs = typecacheof(list( /turf/simulated/floor/plating/asteroid @@ -333,6 +323,13 @@ /turf/simulated/floor/indestructible/necropolis )) +/obj/item/mod/module/ash_accretion/Destroy() + QDEL_NULL(armor_mod_2) + return ..() + +/obj/item/mod/armor/mod_ash_accretion + armor = list(MELEE = 4, BULLET = 1, LASER = 2, ENERGY = 1, BOMB = 4, RAD = 0, FIRE = 0, ACID = 0) + /obj/item/mod/module/ash_accretion/on_suit_activation() RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index af8c580e2631..cc8ce408628d 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -141,11 +141,11 @@ dist = get_dist(src, user.current) else //cyborg or AI not seeing through a camera dist = get_dist(src, user) + if(dist < 2) show_content(user, forceshow = 1) else show_content(user, forcestars = 1) - return /obj/item/paper/attack(mob/living/carbon/M, mob/living/carbon/user, def_zone) if(!ishuman(M)) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 14f700299f0d..0c326747ddfa 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -494,6 +494,8 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor /obj/item/camera/digital/examine(mob/user) . = ..() . += "A small screen shows that there are currently [length(saved_pictures)] pictures stored." + . += "Alt-Shift-Click [src] to print a specific photo." + . += "Ctrl-Shift-Click [src] to delete a specific photo." /obj/item/camera/digital/afterattack(atom/target, mob/user, flag) if(!on || !pictures_left || ismob(target.loc)) @@ -530,11 +532,6 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor var/datum/picture/P = createpicture(target, user, turfs, mobs, flag) saved_pictures += P -/obj/item/camera/digital/examine(mob/user) - . = ..() - . += "Alt-Shift-Click [src] to print a specific photo." - . += "Ctrl-Shift-Click [src] to delete a specific photo." - /obj/item/camera/digital/AltShiftClick(mob/user) if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user)) return diff --git a/code/modules/power/engines/singularity/collector.dm b/code/modules/power/engines/singularity/collector.dm index 15561f2e4de0..4631406508cb 100644 --- a/code/modules/power/engines/singularity/collector.dm +++ b/code/modules/power/engines/singularity/collector.dm @@ -47,6 +47,24 @@ else to_chat(user, "The controls are locked!") +/obj/machinery/power/rad_collector/wrench_act(mob/living/user, obj/item/I) + . = TRUE + if(loaded_tank) + to_chat(user, "Remove the plasma tank first.") + return TRUE + var/turf/T = get_turf(src) + for(var/obj/machinery/power/rad_collector/can_wrench in T.contents) + if(can_wrench.anchored && !anchored) + to_chat(user, "You can't wrench down [src] here!") + return + I.play_tool_sound(src) + anchored = !anchored + user.visible_message("[user.name] [anchored ? "secures" : "unsecures"] the [name].", "You [anchored ? "secure" : "undo"] the external bolts.", "You hear a ratchet") + if(anchored) + connect_to_network() + else + disconnect_from_network() + /obj/machinery/power/rad_collector/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/tank/internals/plasma)) @@ -64,22 +82,6 @@ if(loaded_tank && !locked) eject() return TRUE - else if(iswrench(I)) - if(loaded_tank) - to_chat(user, "Remove the plasma tank first.") - return TRUE - var/turf/T = get_turf(src) - for(var/obj/machinery/power/rad_collector/can_wrench in T.contents) - if(can_wrench.anchored && !anchored) - to_chat(user, "You can't wrench down [src] here!") - return - playsound(loc, I.usesound, 75, TRUE) - anchored = !anchored - user.visible_message("[user.name] [anchored ? "secures" : "unsecures"] the [name].", "You [anchored ? "secure" : "undo"] the external bolts.", "You hear a ratchet") - if(anchored) - connect_to_network() - else - disconnect_from_network() else if(istype(I, /obj/item/card/id) || istype(I, /obj/item/pda)) if(allowed(user)) if(active) diff --git a/code/modules/power/engines/singularity/field_generator.dm b/code/modules/power/engines/singularity/field_generator.dm index 5e27ef46dc62..c7238b8bdda9 100644 --- a/code/modules/power/engines/singularity/field_generator.dm +++ b/code/modules/power/engines/singularity/field_generator.dm @@ -77,33 +77,29 @@ GLOBAL_LIST_EMPTY(field_generator_fields) else to_chat(user, "[src] needs to be firmly secured to the floor first!") - -/obj/machinery/field/generator/attackby(obj/item/W, mob/user, params) +/obj/machinery/field/generator/wrench_act(mob/living/user, obj/item/W) + . = TRUE if(active) to_chat(user, "[src] needs to be off!") return - else if(istype(W, /obj/item/wrench)) - switch(state) - if(FG_UNSECURED) - if(isinspace()) return - state = FG_SECURED - playsound(loc, W.usesound, 75, 1) - user.visible_message("[user.name] secures [name] to the floor.", \ - "You secure the external reinforcing bolts to the floor.", \ - "You hear ratchet.") - anchored = TRUE - if(FG_SECURED) - state = FG_UNSECURED - playsound(loc, W.usesound, 75, 1) - user.visible_message("[user.name] unsecures [name] reinforcing bolts from the floor.", \ - "You undo the external reinforcing bolts.", \ - "You hear ratchet.") - anchored = FALSE - if(FG_WELDED) - to_chat(user, "[src] needs to be unwelded from the floor!") - else - return ..() - + switch(state) + if(FG_UNSECURED) + if(isinspace()) return + state = FG_SECURED + W.play_tool_sound(W, 75) + user.visible_message("[user.name] secures [name] to the floor.", \ + "You secure the external reinforcing bolts to the floor.", \ + "You hear ratchet.") + anchored = TRUE + if(FG_SECURED) + state = FG_UNSECURED + W.play_tool_sound(W, 75) + user.visible_message("[user.name] unsecures [name] reinforcing bolts from the floor.", \ + "You undo the external reinforcing bolts.", \ + "You hear ratchet.") + anchored = FALSE + if(FG_WELDED) + to_chat(user, "[src] needs to be unwelded from the floor!") /obj/machinery/field/generator/welder_act(mob/user, obj/item/I) . = TRUE diff --git a/code/modules/power/engines/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/engines/singularity/particle_accelerator/particle_accelerator.dm index e3881cbd96c2..c2fcf54cb88f 100644 --- a/code/modules/power/engines/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/engines/singularity/particle_accelerator/particle_accelerator.dm @@ -234,10 +234,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin var/strength = 0 var/desc_holder = null -/obj/structure/particle_accelerator/examine(mob/user) - . = ..() - . += "Alt-Click to rotate it." - /obj/machinery/particle_accelerator/AltClick(mob/user) if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user)) return diff --git a/code/modules/power/engines/singularity/singulogen.dm b/code/modules/power/engines/singularity/singulogen.dm index e0d5cf2737db..1449f374bd4d 100644 --- a/code/modules/power/engines/singularity/singulogen.dm +++ b/code/modules/power/engines/singularity/singulogen.dm @@ -21,18 +21,18 @@ transfer_fingerprints_to(S) if(src) qdel(src) -/obj/machinery/the_singularitygen/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/wrench)) - anchored = !anchored - playsound(src.loc, W.usesound, 75, 1) - if(anchored) - user.visible_message("[user.name] secures [src] to the floor.", \ - "You secure [src] to the floor.", \ - "You hear a ratchet") - src.add_hiddenprint(user) - else - user.visible_message("[user.name] unsecures [src] from the floor.", \ - "You unsecure [src.name] from the floor.", \ - "You hear a ratchet") +/obj/machinery/the_singularitygen/wrench_act(mob/living/user, obj/item/wrench/W) + . = TRUE + anchored = !anchored + if(!W.use_tool(src, user, 2 SECONDS, 0, 50)) return - return ..() + if(anchored) + user.visible_message("[user.name] secures [src] to the floor.", \ + "You secure [src] to the floor.", \ + "You hear a ratchet.") + src.add_hiddenprint(user) + else + user.visible_message("[user.name] unsecures [src] from the floor.", \ + "You unsecure [src.name] from the floor.", \ + "You hear a ratchet.") + diff --git a/code/modules/power/generators/thermo_electric_generator.dm b/code/modules/power/generators/thermo_electric_generator.dm index 222ea5d94c31..eb1f3cf806d6 100644 --- a/code/modules/power/generators/thermo_electric_generator.dm +++ b/code/modules/power/generators/thermo_electric_generator.dm @@ -40,10 +40,6 @@ if(powernet) disconnect_from_network() -/obj/machinery/power/teg/Initialize() - . = ..() - connect() - /obj/machinery/power/teg/proc/connect() connect_to_network() diff --git a/code/modules/projectiles/firing.dm b/code/modules/projectiles/firing.dm index c63ef6943ff8..39d6cada712a 100644 --- a/code/modules/projectiles/firing.dm +++ b/code/modules/projectiles/firing.dm @@ -38,6 +38,10 @@ /obj/item/ammo_casing/proc/throw_proj(atom/target, turf/targloc, mob/living/user, params, spread, atom/firer_source_atom) var/turf/curloc = get_turf(firer_source_atom) + if(!istype(curloc)) // False-bottomed briefcase check. + var/obj/item/holding = user.get_active_hand() + if(istype(holding, /obj/item/storage/briefcase/false_bottomed)) + curloc = get_turf(holding) if(!istype(targloc) || !istype(curloc) || !BB) return BB.ammo_casing = src diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 0b877bd3b45b..6bab66d46c8e 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -150,10 +150,18 @@ playsound(user, fire_sound, 50, 1) if(message) if(pointblank) - user.visible_message("[user] fires [src] point blank at [target]!", "You fire [src] point blank at [target]!", "You hear \a [fire_sound_text]!") + user.visible_message( + "[user] fires [src] point blank at [target]!", + "You fire [src] point blank at [target]!", + "You hear \a [fire_sound_text]!" + ) else - user.visible_message("[user] fires [src]!", "You fire [src]!", "You hear \a [fire_sound_text]!") - if(chambered?.muzzle_flash_effect) + user.visible_message( + "[user] fires [src]!", + "You fire [src]!", + "You hear \a [fire_sound_text]!" + ) + if(chambered.muzzle_flash_effect) var/obj/effect/temp_visual/target_angled/muzzle_flash/effect = new chambered.muzzle_flash_effect(get_turf(src), target, muzzle_flash_time) effect.alpha = min(255, muzzle_strength * 255) if(chambered.muzzle_flash_color) @@ -193,7 +201,11 @@ if(flag) if(user.zone_selected == "mouth") if(target == user && HAS_TRAIT(user, TRAIT_BADASS)) // Check if we are blowing smoke off of our own gun, otherwise we are trying to execute someone - user.visible_message("[user] blows smoke off of [src]'s barrel. What a badass.") + user.visible_message( + "[user] blows smoke off of [src]'s barrel. What a badass.", + "You blow smoke off of [src]'s barrel.", + "You hear someone blowing over a hollow tube." + ) else handle_suicide(user, target, params) return @@ -473,11 +485,15 @@ if(user == target) if(!ishuman(user)) // Borg suicide needs a refactor for this to work. return - target.visible_message("[user] sticks [src] in [user.p_their()] mouth, ready to pull the trigger...", \ - "You stick [src] in your mouth, ready to pull the trigger...") + target.visible_message( + "[user] sticks [src] in [user.p_their()] mouth, ready to pull the trigger...", + "You stick [src] in your mouth, ready to pull the trigger..." + ) else - target.visible_message("[user] points [src] at [target]'s head, ready to pull the trigger...", \ - "[user] points [src] at your head, ready to pull the trigger...") + target.visible_message( + "[user] points [src] at [target]'s head, ready to pull the trigger...", + "[user] points [src] at your head, ready to pull the trigger..." + ) semicd = 1 @@ -486,13 +502,19 @@ if(user == target) user.visible_message("[user] decided life was worth living.") else if(target && target.Adjacent(user)) - target.visible_message("[user] has decided to spare [target]'s life.", "[user] has decided to spare your life!") + target.visible_message( + "[user] has decided to spare [target]'s life.", + "[user] has decided to spare your life!" + ) semicd = 0 return semicd = 0 - target.visible_message("[user] pulls the trigger!", "[user] pulls the trigger!") + target.visible_message( + "[user] pulls the trigger!", + "[user] pulls the trigger!" + ) if(chambered && chambered.BB) chambered.BB.damage *= 5 diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 25e1e1164d07..c5f35cffa977 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -11,6 +11,7 @@ /obj/item/gun/projectile/revolver/examine(mob/user) . = ..() + . += "[get_ammo(0, 0)] of those are live rounds." . += "You can Alt-Click [src] to spin it's barrel." /obj/item/gun/projectile/revolver/chamber_round(spin = 1) @@ -80,10 +81,6 @@ boolets += magazine.ammo_count(countempties) return boolets -/obj/item/gun/projectile/revolver/examine(mob/user) - . = ..() - . += "[get_ammo(0,0)] of those are live rounds." - /obj/item/gun/projectile/revolver/fake /obj/item/gun/projectile/revolver/fake/examine(mob/user) @@ -360,7 +357,7 @@ return ..() if(istype(A, /obj/item/melee/energy)) var/obj/item/melee/energy/W = A - if(W.active) + if(HAS_TRAIT(W, TRAIT_ITEM_ACTIVE)) sawoff(user) item_state = icon_state if(istype(A, /obj/item/circular_saw) || istype(A, /obj/item/gun/energy/plasmacutter)) diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 9963f90cc99b..c2dd32ea8761 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -21,6 +21,8 @@ /obj/item/gun/projectile/shotgun/examine(mob/user) . = ..() + if(chambered) + . += "A [chambered.BB ? "live" : "spent"] one is in the chamber." . += get_shotgun_info() /obj/item/gun/projectile/shotgun/proc/get_shotgun_info() @@ -72,11 +74,6 @@ var/obj/item/ammo_casing/AC = magazine.get_round() //load next casing. chambered = AC -/obj/item/gun/projectile/shotgun/examine(mob/user) - . = ..() - if(chambered) - . += "A [chambered.BB ? "live" : "spent"] one is in the chamber." - /obj/item/gun/projectile/shotgun/lethal mag_type = /obj/item/ammo_box/magazine/internal/shot/lethal @@ -97,7 +94,7 @@ sawoff(user) if(istype(A, /obj/item/melee/energy)) var/obj/item/melee/energy/W = A - if(W.active) + if(HAS_TRAIT(W, TRAIT_ITEM_ACTIVE)) sawoff(user) if(istype(A, /obj/item/pipe)) unsaw(A, user) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 8bed319fcc58..35eb0f141883 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -400,7 +400,6 @@ beaker = I beaker.loc = src to_chat(user, "You add the beaker to the machine.") - updateUsrDialog() SStgui.update_uis(src, TRUE) icon_state = "pandemic1" else diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index 7594ae4b283c..7900fe0fb20a 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -137,10 +137,41 @@ // wrench: (un)anchor // weldingtool: convert to real pipe -/obj/structure/disposalconstruct/attackby(obj/item/I, mob/user, params) +/obj/structure/disposalconstruct/wrench_act(mob/living/user, obj/item/I) + var/ispipe = is_pipe() + var/nicetype = get_nice_name() + if(anchored) + anchored = FALSE + if(ispipe) + level = 2 + density = FALSE + else + density = TRUE + to_chat(user, "You detach the [nicetype] from the underfloor.") + else + anchored = TRUE + if(ispipe) + level = 1 // We don't want disposal bins to disappear under the floors + density = FALSE + else + density = TRUE // We don't want disposal bins or outlets to go density 0 + to_chat(user, "You attach the [nicetype] to the underfloor.") + I.play_tool_sound(src, I.tool_volume) + update() + return TRUE + +/obj/structure/disposalconstruct/proc/is_pipe() + switch(ptype) + // lewtodo: this sucks + if(PIPE_DISPOSALS_BIN, PIPE_DISPOSALS_OUTLET, PIPE_DISPOSALS_CHUTE) + return FALSE + if(PIPE_DISPOSALS_SORT_RIGHT, PIPE_DISPOSALS_SORT_LEFT) + return TRUE + else + return TRUE + +/obj/structure/disposalconstruct/proc/get_nice_name() var/nicetype = "pipe" - var/ispipe = 0 // Indicates if we should change the level of this pipe - src.add_fingerprint(user) switch(ptype) if(PIPE_DISPOSALS_BIN) nicetype = "disposal bin" @@ -150,38 +181,19 @@ nicetype = "delivery chute" if(PIPE_DISPOSALS_SORT_RIGHT, PIPE_DISPOSALS_SORT_LEFT) nicetype = "sorting pipe" - ispipe = 1 - else - nicetype = "pipe" - ispipe = 1 + return nicetype + +/obj/structure/disposalconstruct/attackby(obj/item/I, mob/user, params) + var/nicetype = get_nice_name() + var/ispipe = is_pipe() // Indicates if we should change the level of this pipe + add_fingerprint(user) + var/turf/T = src.loc if(T.intact) to_chat(user, "You can only attach the [nicetype] if the floor plating is removed.") return - if(istype(I, /obj/item/wrench)) - if(anchored) - anchored = FALSE - if(ispipe) - level = 2 - density = FALSE - else - density = TRUE - to_chat(user, "You detach the [nicetype] from the underfloor.") - else - anchored = TRUE - if(ispipe) - level = 1 // We don't want disposal bins to disappear under the floors - density = FALSE - else - density = TRUE // We don't want disposal bins or outlets to go density 0 - to_chat(user, "You attach the [nicetype] to the underfloor.") - playsound(src.loc, I.usesound, 100, 1) - update() - return - - if(ptype in list(PIPE_DISPOSALS_BIN, PIPE_DISPOSALS_OUTLET, PIPE_DISPOSALS_CHUTE)) // Disposal or outlet var/obj/structure/disposalpipe/trunk/CP = locate() in T if(!CP) // There's no trunk diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 1edfcd5125e2..3b48076814e3 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -636,11 +636,6 @@ else return ..(mover, target, height) - -/obj/machinery/disposal/singularity_pull(S, current_size) - if(current_size >= STAGE_FIVE) - qdel(src) - /obj/machinery/disposal/get_remote_view_fullscreens(mob/user) if(user.stat == DEAD || !(user.sight & (SEEOBJS|SEEMOBS))) user.overlay_fullscreen("remote_view", /atom/movable/screen/fullscreen/stretch/impaired, 2) diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index ffb50d0c5e8d..0401476f4e81 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -90,6 +90,7 @@ Note: Must be placed within 3 tiles of the R&D Console loaded_item = O O.loc = src to_chat(user, "You add [O] to [src]!") + SStgui.update_uis(linked_console) flick("d_analyzer_la", src) spawn(10) icon_state = "d_analyzer_l" diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 20c192a0b3ad..8fb23d543d2d 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -41,21 +41,20 @@ won't update every console in existence) but it's more of a hassle to do. Also, #define RESET_RESEARCH_DELAY 20 #define IMPRINTER_DELAY 16 -// SUBMENU_MAIN also used by other menus -// MENU_LEVELS is not accessible normally #define MENU_MAIN 0 -#define MENU_LEVELS 1 #define MENU_DISK 2 #define MENU_DESTROY 3 #define MENU_LATHE 4 #define MENU_IMPRINTER 5 #define MENU_SETTINGS 6 -#define SUBMENU_MAIN 0 -#define SUBMENU_DISK_COPY 1 -#define SUBMENU_LATHE_CATEGORY 1 -#define SUBMENU_LATHE_MAT_STORAGE 2 -#define SUBMENU_LATHE_CHEM_STORAGE 3 -#define SUBMENU_SETTINGS_DEVICES 1 +#define MIN_MENU MENU_MAIN +#define MAX_MENU MENU_SETTINGS +#define SUBMENU_PRINTER_MAIN 0 +#define SUBMENU_PRINTER_SEARCH 1 +#define SUBMENU_PRINTER_MATERIALS 2 +#define SUBMENU_PRINTER_CHEMICALS 3 +#define MIN_SUBMENU_PRINTER SUBMENU_PRINTER_MAIN +#define MAX_SUBMENU_PRINTER SUBMENU_PRINTER_CHEMICALS #define BUILD_POWER 2000 #define DECONSTRUCT_POWER 250 @@ -74,8 +73,12 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/obj/machinery/r_n_d/protolathe/linked_lathe = null //Linked Protolathe var/obj/machinery/r_n_d/circuit_imprinter/linked_imprinter = null //Linked Circuit Imprinter + /// The ID of the top-level menu, such as protolathe, analyzer, etc. var/menu = MENU_MAIN - var/submenu = SUBMENU_MAIN + /// The ID of the protolathe submenu, such as materials, chemicals, crafting etc. + var/submenu_protolathe = SUBMENU_PRINTER_MAIN + /// The ID of the circuit imprinter submenu. Shares the same submenus as the protolathe. + var/submenu_imprinter = SUBMENU_PRINTER_MAIN var/wait_message = 0 var/wait_message_timer = 0 @@ -205,18 +208,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, to_chat(user, "You disable the security protocols") return TRUE -/obj/machinery/computer/rdconsole/proc/valid_nav(next_menu, next_submenu) - switch(next_menu) - if(MENU_MAIN, MENU_LEVELS, MENU_DESTROY) - return next_submenu in list(SUBMENU_MAIN) - if(MENU_DISK) - return next_submenu in list(SUBMENU_MAIN, SUBMENU_DISK_COPY) - if(MENU_LATHE, MENU_IMPRINTER) - return next_submenu in list(SUBMENU_MAIN, SUBMENU_LATHE_CATEGORY, SUBMENU_LATHE_MAT_STORAGE, SUBMENU_LATHE_CHEM_STORAGE) - if(MENU_SETTINGS) - return next_submenu in list(SUBMENU_MAIN, SUBMENU_SETTINGS_DEVICES) - return FALSE - /obj/machinery/computer/rdconsole/proc/prompt_eject_sheets(obj/machinery/r_n_d/machine, material_id, amount) if(!machine) return @@ -241,8 +232,10 @@ won't update every console in existence) but it's more of a hassle to do. Also, clear_wait_message() if(d_disk && d_disk.blueprint) files.AddDesign2Known(d_disk.blueprint) - else if(t_disk && t_disk.stored) - files.AddTech2Known(t_disk.stored) + else if(t_disk && t_disk.tech_id) + var/datum/tech/tech = files.find_possible_tech_with_id(t_disk.tech_id) + if(!isnull(tech)) + tech.level = t_disk.tech_level SStgui.update_uis(src) griefProtection() //Update centcom too @@ -355,7 +348,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, linked_destroy.busy = FALSE use_power(DECONSTRUCT_POWER) menu = MENU_DESTROY - submenu = SUBMENU_MAIN SStgui.update_uis(src) @@ -467,31 +459,39 @@ won't update every console in existence) but it's more of a hassle to do. Also, clear_wait_message() SStgui.update_uis(src) -/obj/machinery/computer/rdconsole/ui_act(action, list/params) +/obj/machinery/computer/rdconsole/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) if(..()) return - if(!allowed(usr) && !isobserver(usr)) + if(!allowed(ui.user) && !isobserver(ui.user)) return - add_fingerprint(usr) + add_fingerprint(ui.user) switch(action) if("nav") //Switches menu screens. Converts a sent text string into a number. Saves a LOT of code. var/next_menu = text2num(params["menu"]) - var/next_submenu = text2num(params["submenu"]) - if(valid_nav(next_menu, next_submenu)) - menu = next_menu - submenu = next_submenu + if(isnull(next_menu) || !ISINTEGER(next_menu) || !ISINRANGE(next_menu, MIN_MENU, MAX_MENU)) + return + menu = next_menu + + if("nav_protolathe") + var/new_menu = text2num(params["menu"]) + if(isnull(new_menu) || !ISINTEGER(new_menu) || !ISINRANGE(new_menu, MIN_SUBMENU_PRINTER, MAX_SUBMENU_PRINTER)) + return + submenu_protolathe = new_menu + + if("nav_imprinter") + var/new_menu = text2num(params["menu"]) + if(isnull(new_menu) || !ISINTEGER(new_menu) || !ISINRANGE(new_menu, MIN_SUBMENU_PRINTER, MAX_SUBMENU_PRINTER)) + return + submenu_imprinter = new_menu if("setCategory") var/next_category = params["category"] var/compare - if(submenu != SUBMENU_MAIN) - return FALSE - if(menu == MENU_LATHE) compare = PROTOLATHE if(!linked_lathe || !(next_category in linked_lathe.categories)) @@ -511,7 +511,14 @@ won't update every console in existence) but it's more of a hassle to do. Also, continue if(next_category in D.category) matching_designs.Add(D) - submenu = SUBMENU_LATHE_CATEGORY + if(menu == MENU_LATHE) + submenu_protolathe = SUBMENU_PRINTER_SEARCH + if(submenu_imprinter == SUBMENU_PRINTER_SEARCH) + submenu_imprinter = SUBMENU_PRINTER_MAIN + else if(menu == MENU_IMPRINTER) + submenu_imprinter = SUBMENU_PRINTER_SEARCH + if(submenu_protolathe == SUBMENU_PRINTER_SEARCH) + submenu_protolathe = SUBMENU_PRINTER_MAIN selected_category = "Viewing Category [next_category]" @@ -519,79 +526,69 @@ won't update every console in existence) but it's more of a hassle to do. Also, add_wait_message("Updating Database...", TECH_UPDATE_DELAY) addtimer(CALLBACK(src, PROC_REF(update_from_disk)), TECH_UPDATE_DELAY) - if("clear_tech") //Erase data on the technology disk. - if(t_disk) - t_disk.wipe_tech() - - if("eject_tech") //Eject the technology disk. + if("eject_disk") if(t_disk) t_disk.forceMove(loc) - if(Adjacent(usr) && !issilicon(usr)) - usr.put_in_hands(t_disk) + if(Adjacent(ui.user) && !issilicon(ui.user)) + ui.user.put_in_hands(t_disk) t_disk = null - menu = MENU_MAIN - submenu = SUBMENU_MAIN + if(d_disk) + d_disk.forceMove(loc) + if(Adjacent(ui.user) && !issilicon(ui.user)) + ui.user.put_in_hands(d_disk) + d_disk = null + + if("erase_disk") + if(t_disk && d_disk) + to_chat(ui.user, "Can not simultaneously wipe tech disk and design disk.") + return FALSE + if(t_disk) + t_disk.wipe_tech() + if(d_disk) + d_disk.wipe_blueprint() if("copy_tech") //Copy some technology data from the research holder to the disk. // Somehow this href makes me very nervous var/datum/tech/known = files.known_tech[params["id"]] if(t_disk && known) t_disk.load_tech(known) - menu = MENU_DISK - submenu = SUBMENU_MAIN if("updt_design") //Updates the research holder with design data from the design disk. add_wait_message("Updating Database...", DESIGN_UPDATE_DELAY) addtimer(CALLBACK(src, PROC_REF(update_from_disk)), DESIGN_UPDATE_DELAY) - if("clear_design") //Erases data on the design disk. - if(d_disk) - d_disk.wipe_blueprint() - - if("eject_design") //Eject the design disk. - if(d_disk) - d_disk.forceMove(loc) - if(Adjacent(usr) && !issilicon(usr)) - usr.put_in_hands(d_disk) - d_disk = null - menu = MENU_MAIN - submenu = SUBMENU_MAIN - if("copy_design") //Copy design data from the research holder to the design disk. // This href ALSO makes me very nervous var/datum/design/design = files.known_designs[params["id"]] if(design && d_disk && can_copy_design(design)) d_disk.blueprint = design - menu = MENU_DISK - submenu = SUBMENU_MAIN if("eject_item") //Eject the item inside the destructive analyzer. if(linked_destroy) if(linked_destroy.busy) - to_chat(usr, "[linked_destroy] is busy at the moment.") + to_chat(ui.user, "[linked_destroy] is busy at the moment.") else if(linked_destroy.loaded_item) linked_destroy.loaded_item.forceMove(linked_destroy.loc) linked_destroy.loaded_item = null linked_destroy.icon_state = "d_analyzer" - menu = MENU_DESTROY if("maxresearch") if(!check_rights(R_ADMIN)) return - if(tgui_alert(usr, "Are you sure you want to maximize research levels?", "Confirmation", list("Yes", "No")) != "Yes") + if(tgui_alert(ui.user, "Are you sure you want to maximize research levels?", "Confirmation", list("Yes", "No")) != "Yes") return - log_admin("[key_name(usr)] has maximized the research levels.") - message_admins("[key_name_admin(usr)] has maximized the research levels.") + log_admin("[key_name(ui.user)] has maximized the research levels.") + message_admins("[key_name_admin(ui.user)] has maximized the research levels.") Maximize() griefProtection() //Update centcomm too if("deconstruct") //Deconstruct the item in the destructive analyzer and update the research holder. - start_destroyer(usr) + start_destroyer(ui.user) if("sync") //Sync the research holder with all the R&D consoles in the game that aren't sync protected. if(!sync) - to_chat(usr, "You must connect to the network first!") + to_chat(ui.user, "You must connect to the network first!") else add_wait_message("Syncing Database...", SYNC_RESEARCH_DELAY) addtimer(CALLBACK(src, PROC_REF(sync_research)), SYNC_RESEARCH_DELAY) @@ -641,14 +638,16 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(linked_lathe) linked_lathe.linked_console = null linked_lathe = null + submenu_protolathe = SUBMENU_PRINTER_MAIN if("imprinter") if(linked_imprinter) linked_imprinter.linked_console = null linked_imprinter = null + submenu_imprinter = SUBMENU_PRINTER_MAIN if("reset") //Reset the R&D console's database. griefProtection() - var/choice = tgui_alert(usr, "Are you sure you want to reset the R&D console's database? Data lost cannot be recovered.", "R&D Console Database Reset", list("Continue", "Cancel")) + var/choice = tgui_alert(ui.user, "Are you sure you want to reset the R&D console's database? Data lost cannot be recovered.", "R&D Console Database Reset", list("Continue", "Cancel")) if(choice == "Continue") add_wait_message("Resetting Database...", RESET_RESEARCH_DELAY) addtimer(CALLBACK(src, PROC_REF(reset_research)), RESET_RESEARCH_DELAY) @@ -673,7 +672,14 @@ won't update every console in existence) but it's more of a hassle to do. Also, continue if(findtext(D.name, query)) matching_designs.Add(D) - submenu = SUBMENU_LATHE_CATEGORY + if(menu == MENU_LATHE) + submenu_protolathe = SUBMENU_PRINTER_SEARCH + if(submenu_imprinter == SUBMENU_PRINTER_SEARCH) + submenu_imprinter = SUBMENU_PRINTER_MAIN + else if(menu == MENU_IMPRINTER) + submenu_imprinter = SUBMENU_PRINTER_SEARCH + if(submenu_protolathe == SUBMENU_PRINTER_SEARCH) + submenu_protolathe = SUBMENU_PRINTER_MAIN selected_category = "Search Results for '[query]'" @@ -722,56 +728,58 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/coeff = machine.efficiency_coeff - if(submenu == SUBMENU_LATHE_CATEGORY) - for(var/datum/design/D in matching_designs) - var/list/design_list = list() - designs_list[++designs_list.len] = design_list - var/list/design_materials_list = list() - design_list["materials"] = design_materials_list - design_list["id"] = D.id - design_list["name"] = D.name - var/can_build = is_imprinter ? 1 : 50 - - for(var/M in D.materials) - var/list/material_list = list() - design_materials_list[++design_materials_list.len] = material_list - material_list["name"] = CallMaterialName(M) - material_list["amount"] = D.materials[M] * coeff - var/t = machine.check_mat(D, M) - material_list["is_red"] = t < 1 - can_build = min(can_build, t) - - for(var/R in D.reagents_list) - var/list/material_list = list() - design_materials_list[++design_materials_list.len] = material_list - material_list["name"] = CallMaterialName(R) - material_list["amount"] = D.reagents_list[R] * coeff - var/t = machine.check_mat(D, R) - material_list["is_red"] = t < 1 - can_build = min(can_build, t) - - design_list["can_build"] = can_build - - else if(submenu == SUBMENU_LATHE_MAT_STORAGE) - materials_list[++materials_list.len] = list("name" = "Metal", "id" = MAT_METAL, "amount" = machine.materials.amount(MAT_METAL)) - materials_list[++materials_list.len] = list("name" = "Glass", "id" = MAT_GLASS, "amount" = machine.materials.amount(MAT_GLASS)) - materials_list[++materials_list.len] = list("name" = "Gold", "id" = MAT_GOLD, "amount" = machine.materials.amount(MAT_GOLD)) - materials_list[++materials_list.len] = list("name" = "Silver", "id" = MAT_SILVER, "amount" = machine.materials.amount(MAT_SILVER)) - materials_list[++materials_list.len] = list("name" = "Solid Plasma", "id" = MAT_PLASMA, "amount" = machine.materials.amount(MAT_PLASMA)) - materials_list[++materials_list.len] = list("name" = "Uranium", "id" = MAT_URANIUM, "amount" = machine.materials.amount(MAT_URANIUM)) - materials_list[++materials_list.len] = list("name" = "Diamond", "id" = MAT_DIAMOND, "amount" = machine.materials.amount(MAT_DIAMOND)) - materials_list[++materials_list.len] = list("name" = "Bananium", "id" = MAT_BANANIUM, "amount" = machine.materials.amount(MAT_BANANIUM)) - materials_list[++materials_list.len] = list("name" = "Tranquillite", "id" = MAT_TRANQUILLITE, "amount" = machine.materials.amount(MAT_TRANQUILLITE)) - materials_list[++materials_list.len] = list("name" = "Titanium", "id" = MAT_TITANIUM, "amount" = machine.materials.amount(MAT_TITANIUM)) - materials_list[++materials_list.len] = list("name" = "Plastic", "id" = MAT_PLASTIC, "amount" = machine.materials.amount(MAT_PLASTIC)) - materials_list[++materials_list.len] = list("name" = "Bluespace Mesh", "id" = MAT_BLUESPACE, "amount" = machine.materials.amount(MAT_BLUESPACE)) - else if(submenu == SUBMENU_LATHE_CHEM_STORAGE) - for(var/datum/reagent/R in machine.reagents.reagent_list) - var/list/loaded_chemical = list() - loaded_chemicals[++loaded_chemicals.len] = loaded_chemical - loaded_chemical["name"] = R.name - loaded_chemical["volume"] = R.volume - loaded_chemical["id"] = R.id + if(menu == MENU_LATHE || menu == MENU_IMPRINTER) + var/submenu = menu == MENU_LATHE ? submenu_protolathe : submenu_imprinter + if(submenu == SUBMENU_PRINTER_SEARCH) + for(var/datum/design/D in matching_designs) + var/list/design_list = list() + designs_list[++designs_list.len] = design_list + var/list/design_materials_list = list() + design_list["materials"] = design_materials_list + design_list["id"] = D.id + design_list["name"] = D.name + var/can_build = is_imprinter ? 1 : 50 + + for(var/M in D.materials) + var/list/material_list = list() + design_materials_list[++design_materials_list.len] = material_list + material_list["name"] = CallMaterialName(M) + material_list["amount"] = D.materials[M] * coeff + var/t = machine.check_mat(D, M) + material_list["is_red"] = t < 1 + can_build = min(can_build, t) + + for(var/R in D.reagents_list) + var/list/material_list = list() + design_materials_list[++design_materials_list.len] = material_list + material_list["name"] = CallMaterialName(R) + material_list["amount"] = D.reagents_list[R] * coeff + var/t = machine.check_mat(D, R) + material_list["is_red"] = t < 1 + can_build = min(can_build, t) + + design_list["can_build"] = can_build + + else if(submenu == SUBMENU_PRINTER_MATERIALS) + materials_list[++materials_list.len] = list("name" = "Metal", "id" = MAT_METAL, "amount" = machine.materials.amount(MAT_METAL)) + materials_list[++materials_list.len] = list("name" = "Glass", "id" = MAT_GLASS, "amount" = machine.materials.amount(MAT_GLASS)) + materials_list[++materials_list.len] = list("name" = "Gold", "id" = MAT_GOLD, "amount" = machine.materials.amount(MAT_GOLD)) + materials_list[++materials_list.len] = list("name" = "Silver", "id" = MAT_SILVER, "amount" = machine.materials.amount(MAT_SILVER)) + materials_list[++materials_list.len] = list("name" = "Solid Plasma", "id" = MAT_PLASMA, "amount" = machine.materials.amount(MAT_PLASMA)) + materials_list[++materials_list.len] = list("name" = "Uranium", "id" = MAT_URANIUM, "amount" = machine.materials.amount(MAT_URANIUM)) + materials_list[++materials_list.len] = list("name" = "Diamond", "id" = MAT_DIAMOND, "amount" = machine.materials.amount(MAT_DIAMOND)) + materials_list[++materials_list.len] = list("name" = "Bananium", "id" = MAT_BANANIUM, "amount" = machine.materials.amount(MAT_BANANIUM)) + materials_list[++materials_list.len] = list("name" = "Tranquillite", "id" = MAT_TRANQUILLITE, "amount" = machine.materials.amount(MAT_TRANQUILLITE)) + materials_list[++materials_list.len] = list("name" = "Titanium", "id" = MAT_TITANIUM, "amount" = machine.materials.amount(MAT_TITANIUM)) + materials_list[++materials_list.len] = list("name" = "Plastic", "id" = MAT_PLASTIC, "amount" = machine.materials.amount(MAT_PLASTIC)) + materials_list[++materials_list.len] = list("name" = "Bluespace Mesh", "id" = MAT_BLUESPACE, "amount" = machine.materials.amount(MAT_BLUESPACE)) + else if(submenu == SUBMENU_PRINTER_CHEMICALS) + for(var/datum/reagent/R in machine.reagents.reagent_list) + var/list/loaded_chemical = list() + loaded_chemicals[++loaded_chemicals.len] = loaded_chemical + loaded_chemical["name"] = R.name + loaded_chemical["volume"] = R.volume + loaded_chemical["id"] = R.id /obj/machinery/computer/rdconsole/proc/can_copy_design(datum/design/D) @@ -793,7 +801,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, files.RefreshResearch() data["menu"] = menu - data["submenu"] = submenu + data["submenu_protolathe"] = submenu_protolathe + data["submenu_imprinter"] = submenu_imprinter data["wait_message"] = wait_message data["src_ref"] = UID() @@ -807,7 +816,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, data["loaded_item"] = null data["category"] = selected_category - if(menu == MENU_MAIN || menu == MENU_LEVELS) + if(menu == MENU_MAIN) var/list/tech_levels = list() data["tech_levels"] = tech_levels for(var/v in files.known_tech) @@ -815,83 +824,93 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(T.level <= 0) continue var/list/this_tech_list = list() + this_tech_list["id"] = T.id this_tech_list["name"] = T.name this_tech_list["level"] = T.level this_tech_list["desc"] = T.desc + this_tech_list["ui_icon"] = T.ui_icon tech_levels[++tech_levels.len] = this_tech_list else if(menu == MENU_DISK) - if(t_disk != null && t_disk.stored != null && submenu == SUBMENU_MAIN) - var/list/disk_data = list() - data["disk_data"] = disk_data - disk_data["name"] = t_disk.stored.name - disk_data["level"] = t_disk.stored.level - disk_data["desc"] = t_disk.stored.desc - - else if(t_disk != null && submenu == SUBMENU_DISK_COPY) - var/list/to_copy = list() - data["to_copy"] = to_copy - for(var/v in files.known_tech) - var/datum/tech/T = files.known_tech[v] - if(T.level <= 0) - continue - var/list/item = list() - to_copy[++to_copy.len] = item - item["name"] = T.name - item["id"] = T.id - - else if(d_disk != null && d_disk.blueprint != null && submenu == SUBMENU_MAIN) - var/list/disk_data = list() - data["disk_data"] = disk_data - disk_data["name"] = d_disk.blueprint.name - var/b_type = d_disk.blueprint.build_type - var/list/lathe_types = list() - disk_data["lathe_types"] = lathe_types - if(b_type) - if(b_type & IMPRINTER) lathe_types += "Circuit Imprinter" - if(b_type & PROTOLATHE) lathe_types += "Protolathe" - if(b_type & AUTOLATHE) lathe_types += "Autolathe" - if(b_type & MECHFAB) lathe_types += "Mech Fabricator" - if(b_type & BIOGENERATOR) lathe_types += "Biogenerator" - if(b_type & SMELTER) lathe_types += "Smelter" - var/list/materials = list() - disk_data["materials"] = materials - for(var/M in d_disk.blueprint.materials) - var/list/material = list() - materials[++materials.len] = material - material["name"] = CallMaterialName(M) - material["amount"] = d_disk.blueprint.materials[M] - - else if(d_disk != null && submenu == SUBMENU_DISK_COPY) - var/list/to_copy = list() - data["to_copy"] = to_copy - for(var/v in files.known_designs) - var/datum/design/D = files.known_designs[v] - if(!can_copy_design(D)) - continue - var/list/item = list() - to_copy[++to_copy.len] = item - item["name"] = D.name - item["id"] = D.id + if(t_disk != null) + if(t_disk.tech_id == null) + var/list/to_copy = list() + data["to_copy"] = to_copy + for(var/v in files.known_tech) + var/datum/tech/T = files.known_tech[v] + if(T.level <= 0) + continue + var/list/item = list() + to_copy[++to_copy.len] = item + item["name"] = T.name + item["id"] = T.id + else + var/datum/tech/stored_tech = files.find_possible_tech_with_id(t_disk.tech_id) + var/list/disk_data = list() + data["disk_data"] = disk_data + if(isnull(stored_tech)) + disk_data["name"] = "Unknown" + disk_data["level"] = 0 + disk_data["desc"] = "Unrecognized technology detected in disk." + else + disk_data["name"] = stored_tech.name + disk_data["level"] = stored_tech.level + disk_data["desc"] = stored_tech.desc + + else if(d_disk != null) + if(d_disk.blueprint == null) + var/list/to_copy = list() + data["to_copy"] = to_copy + for(var/v in files.known_designs) + var/datum/design/D = files.known_designs[v] + if(!can_copy_design(D)) + continue + var/list/item = list() + to_copy[++to_copy.len] = item + item["name"] = D.name + item["id"] = D.id + else + var/list/disk_data = list() + data["disk_data"] = disk_data + disk_data["name"] = d_disk.blueprint.name + var/b_type = d_disk.blueprint.build_type + var/list/lathe_types = list() + disk_data["lathe_types"] = lathe_types + if(b_type) + if(b_type & IMPRINTER) lathe_types += "Circuit Imprinter" + if(b_type & PROTOLATHE) lathe_types += "Protolathe" + if(b_type & AUTOLATHE) lathe_types += "Autolathe" + if(b_type & MECHFAB) lathe_types += "Mech Fabricator" + if(b_type & BIOGENERATOR) lathe_types += "Biogenerator" + if(b_type & SMELTER) lathe_types += "Smelter" + var/list/materials = list() + disk_data["materials"] = materials + for(var/M in d_disk.blueprint.materials) + var/list/material = list() + materials[++materials.len] = material + material["name"] = CallMaterialName(M) + material["amount"] = d_disk.blueprint.materials[M] else if(menu == MENU_DESTROY && linked_destroy && linked_destroy.loaded_item) var/list/loaded_item_list = list() data["loaded_item"] = loaded_item_list loaded_item_list["name"] = linked_destroy.loaded_item.name var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) - var/list/tech_list = list() - loaded_item_list["origin_tech"] = tech_list - for(var/T in temp_tech) - var/list/tech_item = list() - tech_list[++tech_list.len] = tech_item - tech_item["name"] = CallTechName(T) - tech_item["object_level"] = temp_tech[T] - for(var/v in files.known_tech) - var/datum/tech/F = files.known_tech[v] - if(F.name == CallTechName(T)) - tech_item["current_level"] = F.level - break + var/list/tech_levels = list() + data["tech_levels"] = tech_levels + for(var/v in files.known_tech) + var/datum/tech/T = files.known_tech[v] + if(T.level <= 0) + continue + var/list/this_tech_list = list() + this_tech_list["id"] = T.id + this_tech_list["name"] = T.name + this_tech_list["level"] = T.level + this_tech_list["desc"] = T.desc + this_tech_list["ui_icon"] = T.ui_icon + this_tech_list["object_level"] = temp_tech[T.id] + tech_levels[++tech_levels.len] = this_tech_list else if(menu == MENU_LATHE && linked_lathe) ui_machine_data(linked_lathe, data) @@ -956,17 +975,18 @@ won't update every console in existence) but it's more of a hassle to do. Also, #undef RESET_RESEARCH_DELAY #undef IMPRINTER_DELAY #undef MENU_MAIN -#undef MENU_LEVELS #undef MENU_DISK #undef MENU_DESTROY #undef MENU_LATHE #undef MENU_IMPRINTER #undef MENU_SETTINGS -#undef SUBMENU_MAIN -#undef SUBMENU_DISK_COPY -#undef SUBMENU_LATHE_CATEGORY -#undef SUBMENU_LATHE_MAT_STORAGE -#undef SUBMENU_LATHE_CHEM_STORAGE -#undef SUBMENU_SETTINGS_DEVICES +#undef MIN_MENU +#undef MAX_MENU +#undef SUBMENU_PRINTER_MAIN +#undef SUBMENU_PRINTER_SEARCH +#undef SUBMENU_PRINTER_MATERIALS +#undef SUBMENU_PRINTER_CHEMICALS +#undef MIN_SUBMENU_PRINTER +#undef MAX_SUBMENU_PRINTER #undef BUILD_POWER #undef DECONSTRUCT_POWER diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index 2680f8c821ca..29440ffdd81f 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -110,6 +110,11 @@ research holder datum. return known_tech[T.id] = T +/datum/research/proc/find_possible_tech_with_id(id) + for(var/datum/tech/T in possible_tech) + if(T.id == id) + return T + /datum/research/proc/CanAddDesign2Known(datum/design/D) if(D.id in known_designs) return FALSE @@ -258,6 +263,8 @@ research holder datum. var/level = 1 //A simple number scale of the research level. Level 0 = Secret tech. var/max_level = 1 // Maximum level this can be at (for job objectives) var/rare = 1 //How much CentCom wants to get that tech. Used in supply shuttle tech cost calculation. + /// Name of the FontAwesome icon to represent the tech + var/ui_icon = null var/list/req_tech = list() //List of ids associated values of techs required to research this tech. "id" = # @@ -268,12 +275,14 @@ research holder datum. desc = "Development of new and improved materials." id = "materials" max_level = 7 + ui_icon = "layer-group" /datum/tech/engineering name = "Engineering Research" desc = "Development of new and improved engineering parts and methods." id = "engineering" max_level = 7 + ui_icon = "tools" /datum/tech/plasmatech name = "Plasma Research" @@ -281,12 +290,14 @@ research holder datum. id = "plasmatech" max_level = 7 rare = 3 + ui_icon = "fire" /datum/tech/powerstorage name = "Power Manipulation Technology" desc = "The various technologies behind the storage and generation of electicity." id = "powerstorage" max_level = 7 + ui_icon = "bolt" /datum/tech/bluespace name = "'Bluespace' Research" @@ -294,30 +305,35 @@ research holder datum. id = "bluespace" max_level = 7 rare = 2 + ui_icon = "gem" /datum/tech/biotech name = "Biological Technology" desc = "Research into the deeper mysteries of life and organic substances." id = "biotech" max_level = 7 + ui_icon = "seedling" /datum/tech/combat name = "Combat Systems Research" desc = "The development of offensive and defensive systems." id = "combat" max_level = 7 + ui_icon = "shield-alt" /datum/tech/magnets name = "Electromagnetic Spectrum Research" desc = "Research into the electromagnetic spectrum. No clue how they actually work, though." id = "magnets" max_level = 7 + ui_icon = "magnet" /datum/tech/programming name = "Data Theory Research" desc = "The development of new computer and artificial intelligence and data storage systems." id = "programming" max_level = 7 + ui_icon = "server" /// not meant to be raised by deconstruction, do not give objects toxins as an origin_tech /datum/tech/toxins @@ -326,6 +342,7 @@ research holder datum. id = "toxins" max_level = 7 rare = 2 + ui_icon = "explosion" /datum/tech/syndicate name = "Illegal Technologies Research" @@ -333,6 +350,7 @@ research holder datum. id = "syndicate" max_level = 0 // Don't count towards maxed research, since it's illegal. rare = 4 + ui_icon = "user-astronaut" /datum/tech/abductor name = "Alien Technologies Research" @@ -340,6 +358,7 @@ research holder datum. id = "abductor" rare = 5 level = 0 + ui_icon = "satellite" /* datum/tech/arcane @@ -368,28 +387,19 @@ datum/tech/robotics req_tech = list("materials" = 3, "programming" = 3) */ -/datum/tech/proc/getCost(current_level = null) - // Calculates tech disk's supply points sell cost - if(!current_level) - current_level = initial(level) - - if(current_level >= level) - return 0 - - var/cost = 0 - for(var/i = current_level + 1, i <= level, i++) - if(i == initial(level)) - continue - cost += i*5*rare - - return cost - /obj/item/disk/tech_disk name = "\improper Technology Disk" desc = "A disk for storing technology data for further research." icon_state = "datadisk2" materials = list(MAT_METAL=30, MAT_GLASS=10) - var/datum/tech/stored + var/tech_id = null + var/tech_name = null + // These variables are copied from /datum/tech. They must be copied and cached + // to prevent retroactively updating all disks when a new research level is unlocked + /// The level of the copied technology. Please see /datum/tech.level + var/tech_level = 0 + /// The rarity of the copied technology. Affects sell price. Please see /datum/tech.rare + var/tech_rarity = 0 var/default_name = "\improper Technology Disk" var/default_desc = "A disk for storing technology data for further research." @@ -398,12 +408,18 @@ datum/tech/robotics desc = T.desc + "\n Level: [T.level]" // NOTE: This is just a reference to the tech on the system it grabbed it from // This seems highly fragile - stored = T + tech_id = T.id + tech_name = T.name + tech_level = T.level + tech_rarity = T.rare /obj/item/disk/tech_disk/proc/wipe_tech() name = default_name desc = default_desc - stored = null + tech_id = null + tech_name = null + tech_level = 0 + tech_rarity = 0 /obj/item/disk/design_disk name = "\improper Component Design Disk" diff --git a/code/modules/ruins/lavalandruin_code/dead_ratvar.dm b/code/modules/ruins/lavalandruin_code/dead_ratvar.dm index 35c509798e12..e0db4767a23e 100644 --- a/code/modules/ruins/lavalandruin_code/dead_ratvar.dm +++ b/code/modules/ruins/lavalandruin_code/dead_ratvar.dm @@ -34,9 +34,6 @@ /obj/effect/clockwork/overlay/singularity_act() return -/obj/effect/clockwork/overlay/singularity_pull() - return - /obj/effect/clockwork/overlay/singularity_pull(S, current_size) return diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 6c87d6ca3f78..e174827f4efe 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -27,8 +27,6 @@ for(var/obj/machinery/door/airlock/D in orange(1, src)) INVOKE_ASYNC(D, PROC_REF(close), 0, 1) -/obj/machinery/door/airlock/onShuttleMove() - . = ..() if(id_tag == "s_docking_airlock") INVOKE_ASYNC(src, PROC_REF(lock)) diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 8dd7ae7fdb49..57964a29704a 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -538,16 +538,29 @@ /datum/economy/simple_seller/tech_levels/begin_sell(obj/docking_port/mobile/supply/S) temp_tech_levels = SSeconomy.tech_levels.Copy() +/datum/economy/simple_seller/tech_levels/proc/get_price(tech_rarity, tech_level, sold_level = null) + // Calculates tech disk's supply points sell cost + if(!sold_level) + sold_level = 1 + + if(sold_level >= tech_level) + return 0 + + var/cost = 0 + for(var/i in (sold_level + 1) to tech_level) + cost += i * 5 * tech_rarity + + return cost + /datum/economy/simple_seller/tech_levels/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM) if(istype(AM, /obj/item/disk/tech_disk)) var/obj/item/disk/tech_disk/disk = AM - if(!disk.stored) + if(!disk.tech_id) return COMSIG_CARGO_SELL_WRONG - var/datum/tech/tech = disk.stored - var/cost = tech.getCost(temp_tech_levels[tech.id]) + var/cost = get_price(disk.tech_rarity, disk.tech_level, temp_tech_levels[disk.tech_id]) if(cost) - temp_tech_levels[tech.id] = tech.level + temp_tech_levels[disk.tech_id] = disk.tech_level return COMSIG_CARGO_SELL_NORMAL return COMSIG_CARGO_SELL_WRONG @@ -556,28 +569,27 @@ return var/obj/item/disk/tech_disk/disk = AM - if(!disk.stored) + if(!disk.tech_id) return - var/datum/tech/tech = disk.stored - var/cost = tech.getCost(SSeconomy.tech_levels[tech.id]) + var/cost = get_price(disk.tech_rarity, disk.tech_level, SSeconomy.tech_levels[disk.tech_id]) if(!cost) return - SSeconomy.tech_levels[tech.id] = tech.level + SSeconomy.tech_levels[disk.tech_id] = disk.tech_level SSblackbox.record_feedback("tally", "cargo tech disks sold", 1, "amount") SSblackbox.record_feedback("tally", "cargo tech disks sold", cost, "credits") var/datum/economy/line_item/cargo_item = new cargo_item.account = SSeconomy.cargo_account cargo_item.credits = cost / 2 - cargo_item.reason = "[tech.name] - new data." + cargo_item.reason = "[disk.tech_name] - new data." manifest.line_items += cargo_item var/datum/economy/line_item/science_item = new science_item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SCIENCE) science_item.credits = cost / 2 - science_item.reason = "[tech.name] - new data." + science_item.reason = "[disk.tech_name] - new data." manifest.line_items += science_item /datum/economy/simple_seller/tech_levels/sell_wrong(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest) @@ -589,16 +601,15 @@ item.credits = 0 var/obj/item/disk/tech_disk/disk = AM - if(!disk.stored) + if(!disk.tech_id) item.reason = "Blank tech disk." manifest.line_items += item SSblackbox.record_feedback("tally", "cargo tech disks sold", 1, "blank") return - var/datum/tech/tech = disk.stored - var/cost = tech.getCost(SSeconomy.tech_levels[tech.id]) + var/cost = get_price(disk.tech_rarity, disk.tech_level, SSeconomy.tech_levels[disk.tech_id]) if(!cost) - item.reason = "[tech.name] - no new data." + item.reason = "[disk.tech_name] - no new data." manifest.line_items += item SSblackbox.record_feedback("tally", "cargo tech disks sold", 1, "repeat") diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 569f121d9a8a..3c9ce4f80ebe 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -32,38 +32,25 @@ density = TRUE anchored = TRUE +/obj/machinery/bsa/wrench_act(mob/living/user, obj/item/I) + default_unfasten_wrench(user, I, 1 SECONDS) + return TRUE + +/obj/machinery/bsa/multitool_act(mob/living/user, obj/item/multitool/M) + M.buffer = src + to_chat(user, "You store linkage information in [M]'s buffer.") + return TRUE + /obj/machinery/bsa/back name = "Bluespace Artillery Generator" desc = "Generates cannon pulse. Needs to be linked with a fusor. " icon_state = "power_box" -/obj/machinery/bsa/back/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/multitool)) - var/obj/item/multitool/M = W - M.buffer = src - to_chat(user, "You store linkage information in [W]'s buffer.") - else if(istype(W, /obj/item/wrench)) - default_unfasten_wrench(user, W, 10) - return TRUE - else - return ..() - /obj/machinery/bsa/front name = "Bluespace Artillery Bore" desc = "Do not stand in front of cannon during operation. Needs to be linked with a fusor." icon_state = "emitter_center" -/obj/machinery/bsa/front/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/multitool)) - var/obj/item/multitool/M = W - M.buffer = src - to_chat(user, "You store linkage information in [W]'s buffer.") - else if(istype(W, /obj/item/wrench)) - default_unfasten_wrench(user, W, 10) - return TRUE - else - return ..() - /obj/machinery/bsa/middle name = "Bluespace Artillery Fusor" desc = "Contents classifed by Nanotrasen Naval Command. Needs to be linked with the other BSA parts using multitool." @@ -71,23 +58,19 @@ var/obj/machinery/bsa/back/back var/obj/machinery/bsa/front/front -/obj/machinery/bsa/middle/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/multitool)) - var/obj/item/multitool/M = W - if(M.buffer) - if(istype(M.buffer,/obj/machinery/bsa/back)) - back = M.buffer - M.buffer = null - to_chat(user, "You link [src] with [back].") - else if(istype(M.buffer,/obj/machinery/bsa/front)) - front = M.buffer - M.buffer = null - to_chat(user, "You link [src] with [front].") - else if(istype(W, /obj/item/wrench)) - default_unfasten_wrench(user, W, 10) - return TRUE - else - return ..() +/obj/machinery/bsa/middle/multitool_act(mob/living/user, obj/item/multitool/M) + . = TRUE + if(!M.buffer) + to_chat(user, "[M]'s buffer is empty!") + return + if(istype(M.buffer,/obj/machinery/bsa/back)) + back = M.buffer + M.buffer = null + to_chat(user, "You link [src] with [back].") + else if(istype(M.buffer,/obj/machinery/bsa/front)) + front = M.buffer + M.buffer = null + to_chat(user, "You link [src] with [front].") /obj/machinery/bsa/middle/proc/check_completion() if(!front || !back) diff --git a/code/modules/surgery/organs/brain.dm b/code/modules/surgery/organs/brain.dm index 2f62ba3455a4..45ccd25faafb 100644 --- a/code/modules/surgery/organs/brain.dm +++ b/code/modules/surgery/organs/brain.dm @@ -206,10 +206,6 @@ icon = 'icons/obj/wizard.dmi' icon_state = "scroll" -/obj/item/organ/internal/brain/Destroy() //copypasted from MMIs. - QDEL_NULL(brainmob) - return ..() - /obj/item/organ/internal/brain/cluwne /obj/item/organ/internal/brain/cluwne/insert(mob/living/target, special = 0, make_cluwne = 1) diff --git a/code/modules/surgery/organs/organ_icon.dm b/code/modules/surgery/organs/organ_icon.dm index 90d01176c052..7704c6707c54 100644 --- a/code/modules/surgery/organs/organ_icon.dm +++ b/code/modules/surgery/organs/organ_icon.dm @@ -55,10 +55,6 @@ var/obj/item/organ/internal/eyes/eyes = owner.get_int_organ(/obj/item/organ/internal/eyes)//owner.internal_bodyparts_by_name["eyes"] if(eyes) eyes.update_colour() -/obj/item/organ/external/head/remove(mob/living/user, ignore_children) - get_icon() - . = ..() - /obj/item/organ/external/proc/get_icon(skeletal) // Kasparrov, you monster if(force_icon) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index c53f1285d552..6a67faa8ccd9 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -133,6 +133,17 @@ /obj/item/organ/internal/emp_act(severity) if(!is_robotic() || emp_proof) return + + var/we_done = FALSE + for(var/organ_tag in organ_datums) + var/datum/organ/borgan = organ_datums[organ_tag] + if(borgan.on_successful_emp()) + we_done = TRUE + + if(we_done) + return + + // No EMP handling was done, lets just give em damage switch(severity) if(1) receive_damage(20, 1) @@ -368,26 +379,6 @@ head_organ.facial_colour = "#D8C078" H.update_fhair() -/obj/item/organ/internal/emp_act(severity) - if(!is_robotic() || emp_proof) - return - - var/we_done = FALSE - for(var/organ_tag in organ_datums) - var/datum/organ/borgan = organ_datums[organ_tag] - if(borgan.on_successful_emp()) - we_done = TRUE - - if(we_done) - return - - // No EMP handling was done, lets just give em damage - switch(severity) - if(1) - receive_damage(20, 1) - if(2) - receive_damage(7, 1) - /obj/item/organ/internal/handle_germs() ..() if(germ_level >= INFECTION_LEVEL_TWO) diff --git a/code/modules/surgery/organs/subtypes/standard_organs.dm b/code/modules/surgery/organs/subtypes/standard_organs.dm index d4f544507584..bba265b25374 100644 --- a/code/modules/surgery/organs/subtypes/standard_organs.dm +++ b/code/modules/surgery/organs/subtypes/standard_organs.dm @@ -283,6 +283,7 @@ owner.update_fhair() owner.update_head_accessory() owner.update_markings() + get_icon() . = ..() /obj/item/organ/external/head/replaced() diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index 21393d49fc19..5878ead2163a 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -54,6 +54,7 @@ GLOBAL_LIST_EMPTY(GPS_list) /obj/item/gps/dropped(mob/user, silent) REMOVE_TRAIT(user, TRAIT_HAS_GPS, "GPS[UID()]") + REMOVE_TRAIT(user, TRAIT_CAN_VIEW_HEALTH, "HEALTH[UID()]") return ..() /obj/item/gps/emp_act(severity) diff --git a/code/modules/tgui/modules/crew_monitor.dm b/code/modules/tgui/modules/crew_monitor.dm index 5042d8642f48..1c2a8dbb3c24 100644 --- a/code/modules/tgui/modules/crew_monitor.dm +++ b/code/modules/tgui/modules/crew_monitor.dm @@ -1,9 +1,26 @@ +#define MIN_ZOOM 1 +#define MAX_ZOOM 8 +#define MIN_TAB_INDEX 0 +#define MAX_TAB_INDEX 1 + /datum/ui_module/crew_monitor name = "Монитор экипажа" var/is_advanced = FALSE var/viewing_current_z_level /// If true, we'll see everyone, regardless of their suit sensors. var/ignore_sensors = FALSE + /// The ID of the currently opened UI tab + var/tab_index = 0 + /// The zoom level of the UI map view + var/zoom = 1 + /// The X offset of the UI map + var/offset_x = 0 + /// The Y offset of the UI map + var/offset_y = 0 + /// A list of displayed names. Displayed names were intentionally chosen over ckeys, + /// refs, or uids, because exposing any of the aforementioned to the client could allow + /// an exploit to detect changelings on sensors. + var/highlighted_names = list() /datum/ui_module/crew_monitor/ui_act(action, params) if(..()) @@ -31,6 +48,33 @@ if(!is_advanced) return viewing_current_z_level = text2num(params["new_level"]) + if("set_tab_index") + var/new_tab_index = text2num(params["tab_index"]) + if(isnull(new_tab_index) || new_tab_index < MIN_TAB_INDEX || new_tab_index > MAX_TAB_INDEX) + return + tab_index = new_tab_index + if("set_zoom") + var/new_zoom = text2num(params["zoom"]) + if(isnull(new_zoom) || new_zoom < MIN_ZOOM || new_zoom > MAX_ZOOM) + return + zoom = new_zoom + if("set_offset") + var/new_offset_x = text2num(params["offset_x"]) + var/new_offset_y = text2num(params["offset_y"]) + if(isnull(new_offset_x) || isnull(new_offset_y)) + return + offset_x = new_offset_x + offset_y = new_offset_y + if("add_highlighted_name") + // Intentionally not sanitized as the name is not used for rendering + var/name = params["name"] + highlighted_names += list(name) + if("remove_highlighted_name") + // Intentionally not sanitized as the name is not used for rendering + var/name = params["name"] + highlighted_names -= list(name) + if("clear_highlighted_names") + highlighted_names = list() /datum/ui_module/crew_monitor/ui_state(mob/user) return GLOB.default_state @@ -56,11 +100,16 @@ viewing_current_z_level = level_name_to_num(MAIN_STATION) // by default, set it to the station data["viewing_current_z_level"] = viewing_current_z_level + data["tabIndex"] = tab_index + data["zoom"] = zoom + data["offsetX"] = offset_x + data["offsetY"] = offset_y data["isAI"] = isAI(user) data["isObserver"] = isobserver(user) data["ignoreSensors"] = ignore_sensors data["crewmembers"] = GLOB.crew_repository.health_data(viewing_current_z_level, ignore_sensors) + data["highlightedNames"] = highlighted_names data["critThreshold"] = HEALTH_THRESHOLD_CRIT return data @@ -82,3 +131,8 @@ /datum/ui_module/crew_monitor/ghost/ui_state(mob/user) return GLOB.observer_state + +#undef MIN_ZOOM +#undef MAX_ZOOM +#undef MIN_TAB_INDEX +#undef MAX_TAB_INDEX diff --git a/code/modules/unit_tests/map_tests.dm b/code/modules/unit_tests/map_tests.dm index f4e869ceef8c..067e7358d5b7 100644 --- a/code/modules/unit_tests/map_tests.dm +++ b/code/modules/unit_tests/map_tests.dm @@ -154,3 +154,28 @@ continue // same object, continue if(cable.d1 == other_cable.d1 && cable.d2 == other_cable.d2) Fail(T, "tile has duplicated cables.") + +/datum/map_per_tile_test/missing_pipe_connection + +/datum/map_per_tile_test/missing_pipe_connection/CheckTile(turf/T) + var/obj/machinery/atmospherics/pipe/simple/pipe = locate() in T.contents + if(isnull(pipe)) + return + if(!pipe.node1 && !pipe.node2) + Fail(T, "[pipe] ([pipe.type]) missing both nodes.") + return + if(istype(pipe, /obj/machinery/atmospherics/pipe/simple/heat_exchanging) && (pipe.node1 || pipe.node2)) + return // H/E pipes only need one end, because they don't always become full loops + if(!pipe.node1) + Fail(T, "[pipe] ([pipe.type]) missing node1. ([uppertext(dir2text(pipe.initialize_directions & ~(get_dir(pipe, pipe.node2))))])") + if(!pipe.node2) + Fail(T, "[pipe] ([pipe.type]) missing node2. ([uppertext(dir2text(pipe.initialize_directions & ~(get_dir(pipe, pipe.node1))))])") + +/datum/map_per_tile_test/unary_device_connection + +/datum/map_per_tile_test/unary_device_connection/CheckTile(turf/T) + var/obj/machinery/atmospherics/unary/unary_device = locate() in T.contents + if(isnull(unary_device)) + return + if(!unary_device.node) + Fail(T, "[unary_device] ([unary_device.type]) missing node. ([uppertext(dir2text(unary_device.dir))])") diff --git a/code/modules/vehicle/tg_vehicles/tg_vehicles.dm b/code/modules/vehicle/tg_vehicles/tg_vehicles.dm index 75fbb8425bf0..acdcadef70e2 100644 --- a/code/modules/vehicle/tg_vehicles/tg_vehicles.dm +++ b/code/modules/vehicle/tg_vehicles/tg_vehicles.dm @@ -185,12 +185,6 @@ var/dir_to_move = get_dir(trailer.loc, old_loc) step(trailer, dir_to_move) -/obj/tgvehicle/generate_action_type(actiontype) - var/datum/action/vehicle/A = ..() - . = A - if(istype(A)) - A.vehicle_ridden_target = src - /obj/tgvehicle/post_unbuckle_mob(mob/living/M) remove_occupant(M) return ..() diff --git a/icons/_nanomaps/CereStation_nanomap_z1.png b/icons/_nanomaps/CereStation_nanomap_z1.png index e7dad57c4adc..cd1048b55e9c 100644 Binary files a/icons/_nanomaps/CereStation_nanomap_z1.png and b/icons/_nanomaps/CereStation_nanomap_z1.png differ diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index cdbe14fd2567..9272241406fe 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/fleshling.dmi b/icons/mob/fleshling.dmi new file mode 100644 index 000000000000..19c2b0be9f0c Binary files /dev/null and b/icons/mob/fleshling.dmi differ diff --git a/icons/mob/hud/sechud.dmi b/icons/mob/hud/sechud.dmi index dda149df1895..ad763761c71c 100644 Binary files a/icons/mob/hud/sechud.dmi and b/icons/mob/hud/sechud.dmi differ diff --git a/icons/mob/inhands/weapons_lefthand.dmi b/icons/mob/inhands/weapons_lefthand.dmi index 6815485c27bc..64a2bd06532d 100644 Binary files a/icons/mob/inhands/weapons_lefthand.dmi and b/icons/mob/inhands/weapons_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons_righthand.dmi b/icons/mob/inhands/weapons_righthand.dmi index 612365aed42c..0f1bce7849c0 100644 Binary files a/icons/mob/inhands/weapons_righthand.dmi and b/icons/mob/inhands/weapons_righthand.dmi differ diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi index 54a953367e2e..82504547e83a 100644 Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ diff --git a/icons/mob/simple_human.dmi b/icons/mob/simple_human.dmi index 8671c70bf659..dd33948a4ca1 100644 Binary files a/icons/mob/simple_human.dmi and b/icons/mob/simple_human.dmi differ diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index 7f44f6a4f87b..6d8bdf4705eb 100644 Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index bc5888cb9e14..b1441ffca927 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/icons/obj/weapons/melee.dmi b/icons/obj/weapons/melee.dmi index 041abdf63184..1c7db290f2c1 100644 Binary files a/icons/obj/weapons/melee.dmi and b/icons/obj/weapons/melee.dmi differ diff --git a/paradise.dme b/paradise.dme index 481c6339649b..3bac9fef86b5 100644 --- a/paradise.dme +++ b/paradise.dme @@ -763,6 +763,8 @@ #include "code\game\gamemodes\miniantags\revenant\revenant.dm" #include "code\game\gamemodes\miniantags\revenant\revenant_abilities.dm" #include "code\game\gamemodes\miniantags\revenant\revenant_spawn_event.dm" +#include "code\game\gamemodes\miniantags\tourist\tourist_arrivals.dm" +#include "code\game\gamemodes\miniantags\tourist\tourist_objectives.dm" #include "code\game\gamemodes\nuclear\nuclear.dm" #include "code\game\gamemodes\nuclear\nuclear_challenge.dm" #include "code\game\gamemodes\nuclear\nuclearbomb.dm" @@ -1213,6 +1215,7 @@ #include "code\game\objects\items\weapons\grenades\confetti.dm" #include "code\game\objects\items\weapons\grenades\custom_grenades.dm" #include "code\game\objects\items\weapons\grenades\emgrenade.dm" +#include "code\game\objects\items\weapons\grenades\firecracker.dm" #include "code\game\objects\items\weapons\grenades\flashbang.dm" #include "code\game\objects\items\weapons\grenades\frag.dm" #include "code\game\objects\items\weapons\grenades\ghettobomb.dm" @@ -1604,6 +1607,7 @@ #include "code\modules\awaymissions\mission_code\shuttle_shadow.dm" #include "code\modules\awaymissions\mission_code\ghost_role_spawners\golems.dm" #include "code\modules\awaymissions\mission_code\ghost_role_spawners\oldstation_spawns.dm" +#include "code\modules\awaymissions\mission_code\ruins\deepstorage.dm" #include "code\modules\awaymissions\mission_code\ruins\derelict5.dm" #include "code\modules\awaymissions\mission_code\ruins\gps_ruin.dm" #include "code\modules\awaymissions\mission_code\ruins\moonoutpost19.dm" diff --git a/sound/machines/defib_charge.ogg b/sound/machines/defib_charge.ogg index 3e2be160fd1c..9f963b05e750 100644 Binary files a/sound/machines/defib_charge.ogg and b/sound/machines/defib_charge.ogg differ diff --git a/tgui/packages/tgui/components/LabeledList.tsx b/tgui/packages/tgui/components/LabeledList.tsx index a3e794a92456..d90b1a246676 100644 --- a/tgui/packages/tgui/components/LabeledList.tsx +++ b/tgui/packages/tgui/components/LabeledList.tsx @@ -33,6 +33,7 @@ type LabeledListItemProps = { /** @deprecated */ content?: any; children?: InfernoNode; + labelStyle?: Record; }; const LabeledListItem = (props: LabeledListItemProps) => { @@ -47,10 +48,16 @@ const LabeledListItem = (props: LabeledListItemProps) => { content, children, preserveWhitespace, + labelStyle, } = props; let listItem = ( - + {label ? label + ':' : null} { if (e.stopPropagation) { e.stopPropagation(); @@ -26,13 +30,12 @@ export class NanoMap extends Component { const Ycenter = window.innerHeight / 2 - 256; this.state = { - offsetX: 128, - offsetY: 48, - transform: 'none', + offsetX: props.offsetX ?? 0, + offsetY: props.offsetY ?? 0, dragging: false, originX: null, originY: null, - zoom: 1, + zoom: props.zoom ?? 1, }; // Dragging @@ -54,13 +57,14 @@ export class NanoMap extends Component { const newOffsetX = e.screenX - state.originX; const newOffsetY = e.screenY - state.originY; if (prevState.dragging) { - state.offsetX += newOffsetX; - state.offsetY += newOffsetY; + state.offsetX += newOffsetX / state.zoom; + state.offsetY += newOffsetY / state.zoom; state.originX = e.screenX; state.originY = e.screenY; } else { state.dragging = true; } + props.onOffsetChange?.(e, state); return state; }); pauseEvent(e); @@ -80,16 +84,31 @@ export class NanoMap extends Component { this.handleZoom = (_e, value) => { this.setState((state) => { const newZoom = Math.min(Math.max(value, 1), 8); - let zoomDiff = (newZoom - state.zoom) * 1.5; state.zoom = newZoom; - state.offsetX = state.offsetX - 262 * zoomDiff; - state.offsetY = state.offsetY - 256 * zoomDiff; if (props.onZoom) { props.onZoom(state.zoom); } return state; }); }; + + this.handleReset = (e) => { + this.setState((state) => { + state.offsetX = 0; + state.offsetY = 0; + state.zoom = 1; + this.handleZoom(e, 1); + props.onOffsetChange?.(e, state); + }); + }; + } + + getChildContext() { + return { + map: { + zoom: this.state.zoom, + }, + }; } render() { @@ -98,14 +117,17 @@ export class NanoMap extends Component { const { children } = this.props; const mapUrl = config.map + '_nanomap_z1.png'; - const mapSize = 510 * zoom + 'px'; + const mapSize = MAP_SIZE * zoom + 'px'; const newStyle = { width: mapSize, height: mapSize, - 'margin-top': offsetY + 'px', - 'margin-left': offsetX + 'px', + 'margin-top': offsetY * zoom + 'px', + 'margin-left': offsetX * zoom + 'px', 'overflow': 'hidden', 'position': 'relative', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', 'background-size': 'cover', 'background-repeat': 'no-repeat', 'text-align': 'center', @@ -128,21 +150,35 @@ export class NanoMap extends Component { {children} - + ); } } const NanoMapMarker = (props, context) => { - const { x, y, zoom = 1, icon, tooltip, color } = props; - const rx = x * 2 * zoom - zoom - 3; - const ry = y * 2 * zoom - zoom - 3; + const { + map: { zoom }, + } = context; + const { x, y, icon, tooltip, color, children, ...rest } = props; + const pixelsPerTurfAtZoom = PIXELS_PER_TURF * zoom; + // For some reason the X and Y are offset by 1 + const rx = (x - 1) * pixelsPerTurfAtZoom; + const ry = (y - 1) * pixelsPerTurfAtZoom; return (
- - + + {children}
@@ -151,19 +187,47 @@ const NanoMapMarker = (props, context) => { NanoMap.Marker = NanoMapMarker; +const NanoMapMarkerIcon = (props, context) => { + const { + map: { zoom }, + } = context; + const { icon, color, ...rest } = props; + const markerSize = PIXELS_PER_TURF * zoom + 4 / Math.ceil(zoom / 4); + return ( + + + + ); +}; + +NanoMap.MarkerIcon = NanoMapMarkerIcon; + const NanoMapZoomer = (props, context) => { return ( - - v + 'x'} - value={props.zoom} - onDrag={(e, v) => props.onZoom(e, v)} - /> + + + v + 'x'} + value={props.zoom} + onDrag={(e, v) => props.onZoom(e, v)} + /> + - ); -}; diff --git a/tgui/packages/tgui/interfaces/RndConsoleComponents/RndNavbar.js b/tgui/packages/tgui/interfaces/RndConsoleComponents/RndNavbar.js deleted file mode 100644 index 90a5d33fc3be..000000000000 --- a/tgui/packages/tgui/interfaces/RndConsoleComponents/RndNavbar.js +++ /dev/null @@ -1,51 +0,0 @@ -import { RndRoute, RndNavButton } from './index'; -import { Box } from '../../components'; -import { MENU, SUBMENU } from '../RndConsole'; - -export const RndNavbar = () => ( - - n !== MENU.MAIN} - render={() => } - /> - - {/* Links to return to submenu 0 for each menu other than main menu */} - n !== SUBMENU.MAIN} - render={() => ( - - } - /> - - } - /> - - } - /> - - } - /> - - )} - /> - - n === MENU.LATHE || n === MENU.IMPRINTER} - submenu={SUBMENU.MAIN} - render={() => ( - - - - - )} - /> - -); diff --git a/tgui/packages/tgui/interfaces/RndConsoleComponents/RndRoute.js b/tgui/packages/tgui/interfaces/RndConsoleComponents/RndRoute.js deleted file mode 100644 index c07a8147812d..000000000000 --- a/tgui/packages/tgui/interfaces/RndConsoleComponents/RndRoute.js +++ /dev/null @@ -1,25 +0,0 @@ -import { useBackend } from '../../backend'; - -export const RndRoute = (properties, context) => { - const { render } = properties; - const { data } = useBackend(context); - const { menu, submenu } = data; - - const compare = (comparator, item) => { - if (comparator === null || comparator === undefined) { - return true; - } // unspecified, match all - if (typeof comparator === 'function') { - return comparator(item); - } - return comparator === item; // strings or ints? - }; - - let match = compare(properties.menu, menu) && compare(properties.submenu, submenu); - - if (!match) { - return null; - } - - return render(); -}; diff --git a/tgui/packages/tgui/interfaces/RndConsoleComponents/SettingsMenu.js b/tgui/packages/tgui/interfaces/RndConsoleComponents/SettingsMenu.js deleted file mode 100644 index ff9833974782..000000000000 --- a/tgui/packages/tgui/interfaces/RndConsoleComponents/SettingsMenu.js +++ /dev/null @@ -1,110 +0,0 @@ -import { useBackend } from '../../backend'; -import { Box, Button, Flex, LabeledList, Section } from '../../components'; -import { RndRoute, RndNavButton } from './index'; -import { MENU, SUBMENU } from '../RndConsole'; - -export const SettingsMenu = (properties, context) => { - const { data, act } = useBackend(context); - - const { sync, admin, linked_destroy, linked_lathe, linked_imprinter } = data; - - return ( - - ( -
- -
- )} - /> - - ( -
-
- )} - /> -
- ); -}; diff --git a/tgui/packages/tgui/interfaces/RndConsoleComponents/index.js b/tgui/packages/tgui/interfaces/RndConsoleComponents/index.js deleted file mode 100644 index 5bd4861c8e9c..000000000000 --- a/tgui/packages/tgui/interfaces/RndConsoleComponents/index.js +++ /dev/null @@ -1,15 +0,0 @@ -export { CurrentLevels } from './CurrentLevels'; -export { DataDiskMenu } from './DataDiskMenu'; -export { DeconstructionMenu } from './DeconstructionMenu'; -export { LatheCategory } from './LatheCategory'; -export { LatheChemicalStorage } from './LatheChemicalStorage'; -export { LatheMainMenu } from './LatheMainMenu'; -export { LatheMaterials } from './LatheMaterials'; -export { LatheMaterialStorage } from './LatheMaterialStorage'; -export { LatheMenu } from './LatheMenu'; -export { LatheSearch } from './LatheSearch'; -export { MainMenu } from './MainMenu'; -export { RndNavbar } from './RndNavbar'; -export { RndNavButton } from './RndNavButton'; -export { RndRoute } from './RndRoute'; -export { SettingsMenu } from './SettingsMenu'; diff --git a/tgui/packages/tgui/styles/atomic/color.scss b/tgui/packages/tgui/styles/atomic/color.scss index e2563f86fa56..d5ef405d0071 100644 --- a/tgui/packages/tgui/styles/atomic/color.scss +++ b/tgui/packages/tgui/styles/atomic/color.scss @@ -19,3 +19,9 @@ $bg-map: colors.$bg-map !default; background-color: $color-value !important; } } + +@each $color-name, $color-value in $fg-map { + .color-border-#{$color-name} { + border-color: $color-value !important; + } +} diff --git a/tgui/packages/tgui/styles/components/Button.scss b/tgui/packages/tgui/styles/components/Button.scss index c8f880cb116a..550a686b46b6 100644 --- a/tgui/packages/tgui/styles/components/Button.scss +++ b/tgui/packages/tgui/styles/components/Button.scss @@ -16,16 +16,16 @@ $color-transparent-text: rgba(255, 255, 255, 0.5) !default; $border-radius: base.$border-radius !default; $bg-map: colors.$bg-map !default; -@mixin button-color($color) { +@mixin button-color($color, $text-color: null) { // Adapt text color to background luminance to ensure high contast $luminance: luminance($color); - $text-color: if($luminance > 0.4, rgba(0, 0, 0, 1), rgba(255, 255, 255, 1)); + $dynamic-text-color: if($luminance > 0.4, rgba(0, 0, 0, 1), rgba(255, 255, 255, 1)); transition: color 100ms, background-color 100ms; background-color: $color; - color: $text-color; + color: if($text-color != null, $text-color, $dynamic-text-color); &:focus { transition: @@ -35,7 +35,7 @@ $bg-map: colors.$bg-map !default; &:hover { background-color: lighten($color, 25%); - color: $text-color; + color: $dynamic-text-color; } } @@ -128,15 +128,11 @@ $bg-map: colors.$bg-map !default; } .Button--color--transparent { - background-color: rgba(base.$color-bg, 0); - color: $color-transparent-text; - @include button-color(base.$color-bg); + @include button-color(rgba(base.$color-bg, 0), $color-transparent-text); } .Button--color--translucent { - background-color: rgba(base.$color-bg, 0.6); - color: $color-transparent-text; - @include button-color(base.$color-bg); + @include button-color(rgba(base.$color-bg, 0.6), $color-transparent-text); } .Button--disabled { diff --git a/tgui/packages/tgui/styles/components/NanoMap.scss b/tgui/packages/tgui/styles/components/NanoMap.scss index 95f76d8dd13b..e2de7df499d2 100644 --- a/tgui/packages/tgui/styles/components/NanoMap.scss +++ b/tgui/packages/tgui/styles/components/NanoMap.scss @@ -3,6 +3,7 @@ $background-color: rgba(0, 0, 0, 0.33) !default; .NanoMap__container { overflow: hidden; width: 100%; + height: 100%; z-index: 1; } @@ -31,5 +32,5 @@ $background-color: rgba(0, 0, 0, 0.33) !default; top: 30px; left: 0; padding: 0.5rem; - width: 20%; + width: 24%; } diff --git a/tgui/packages/tgui/styles/interfaces/CrewMonitor.scss b/tgui/packages/tgui/styles/interfaces/CrewMonitor.scss new file mode 100644 index 000000000000..10c311b99e43 --- /dev/null +++ b/tgui/packages/tgui/styles/interfaces/CrewMonitor.scss @@ -0,0 +1,26 @@ +.highlighted-marker { + box-sizing: content-box; + display: inline-block; + position: relative; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + + border-style: solid; + border-width: 50%; + border-radius: 50%; + + animation: 1s infinite mark-shrink; +} + +@keyframes mark-shrink { + from { + width: 200%; + height: 200%; + } + + to { + width: 0%; + height: 0%; + } +} diff --git a/tgui/packages/tgui/styles/interfaces/RndConsole.scss b/tgui/packages/tgui/styles/interfaces/RndConsole.scss index af97a74a732a..28a7080ce7e7 100644 --- a/tgui/packages/tgui/styles/interfaces/RndConsole.scss +++ b/tgui/packages/tgui/styles/interfaces/RndConsole.scss @@ -20,12 +20,6 @@ padding-bottom: 4px; } -.RndConsole__MainMenu__Buttons { - .Button:not(:last-child) { - margin-bottom: 4px; - } -} - .RndConsole__LatheMaterials { .Table__cell:nth-child(2) { padding-left: 16px; @@ -62,3 +56,27 @@ margin-bottom: 10px; } } + +#research-levels tr { + & > *:first-child { + width: 2em; + } + + & > *:nth-child(3), + & > *:nth-child(4), + & > *:nth-child(5) { + text-align: center; + } +} + +#research-levels tr:not(:first-child) > *:first-child { + height: 2em; +} + +.upgraded-level { + color: #55d355; +} + +.research-level-no-effect { + color: #888888; +} diff --git a/tgui/packages/tgui/styles/main.scss b/tgui/packages/tgui/styles/main.scss index c66849cce626..77754d7c4df1 100644 --- a/tgui/packages/tgui/styles/main.scss +++ b/tgui/packages/tgui/styles/main.scss @@ -50,6 +50,7 @@ @include meta.load-css('./interfaces/BrigCells.scss'); @include meta.load-css('./interfaces/CameraConsole.scss'); @include meta.load-css('./interfaces/Contractor.scss'); +@include meta.load-css('./interfaces/CrewMonitor.scss'); @include meta.load-css('./interfaces/ExosuitFabricator.scss'); @include meta.load-css('./interfaces/GeneModder.scss'); @include meta.load-css('./interfaces/KitchenMachine.scss'); diff --git a/tgui/public/tgui-panel.bundle.css b/tgui/public/tgui-panel.bundle.css index 56093de2dd3c..8f586e0eb9be 100644 --- a/tgui/public/tgui-panel.bundle.css +++ b/tgui/public/tgui-panel.bundle.css @@ -1 +1 @@ -html,body{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,*:before,*:after{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:6px 0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-gold{color:#f3b22f!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.color-bg-gold{background-color:#d6920c!important}.debug-layout,.debug-layout *:not(g):not(path){color:rgba(255,255,255,.9)!important;background:rgba(0,0,0,0)!important;outline:1px solid rgba(255,255,255,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout *:not(g):not(path):hover{outline-color:rgba(255,255,255,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.outline-color-gold{outline:.167rem solid #f3b22f!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .fas,.Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--hasContent .fa,.Button--hasContent .fas,.Button--hasContent .far{margin-right:.25em}.Button--hasContent.Button--iconRight .fa,.Button--hasContent.Button--iconRight .fas,.Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--multiLine{white-space:normal;word-wrap:break-word}.Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.Button--color--black:focus{transition:color .25s,background-color .25s}.Button--color--black:hover{background-color:#101010;color:#fff}.Button--color--white{transition:color .1s,background-color .1s;background-color:#d9d9d9;color:#000}.Button--color--white:focus{transition:color .25s,background-color .25s}.Button--color--white:hover{background-color:#f8f8f8;color:#000}.Button--color--red{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.Button--color--red:focus{transition:color .25s,background-color .25s}.Button--color--red:hover{background-color:#d93f3f;color:#fff}.Button--color--orange{transition:color .1s,background-color .1s;background-color:#d95e0c;color:#fff}.Button--color--orange:focus{transition:color .25s,background-color .25s}.Button--color--orange:hover{background-color:#ef7e33;color:#fff}.Button--color--yellow{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.Button--color--yellow:focus{transition:color .25s,background-color .25s}.Button--color--yellow:hover{background-color:#f5d523;color:#000}.Button--color--olive{transition:color .1s,background-color .1s;background-color:#9aad14;color:#fff}.Button--color--olive:focus{transition:color .25s,background-color .25s}.Button--color--olive:hover{background-color:#bdd327;color:#fff}.Button--color--green{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.Button--color--green:focus{transition:color .25s,background-color .25s}.Button--color--green:hover{background-color:#2fb94f;color:#fff}.Button--color--teal{transition:color .1s,background-color .1s;background-color:#009a93;color:#fff}.Button--color--teal:focus{transition:color .25s,background-color .25s}.Button--color--teal:hover{background-color:#10bdb6;color:#fff}.Button--color--blue{transition:color .1s,background-color .1s;background-color:#1c71b1;color:#fff}.Button--color--blue:focus{transition:color .25s,background-color .25s}.Button--color--blue:hover{background-color:#308fd6;color:#fff}.Button--color--violet{transition:color .1s,background-color .1s;background-color:#552dab;color:#fff}.Button--color--violet:focus{transition:color .25s,background-color .25s}.Button--color--violet:hover{background-color:#7249ca;color:#fff}.Button--color--purple{transition:color .1s,background-color .1s;background-color:#8b2baa;color:#fff}.Button--color--purple:focus{transition:color .25s,background-color .25s}.Button--color--purple:hover{background-color:#aa46ca;color:#fff}.Button--color--pink{transition:color .1s,background-color .1s;background-color:#cf2082;color:#fff}.Button--color--pink:focus{transition:color .25s,background-color .25s}.Button--color--pink:hover{background-color:#e04ca0;color:#fff}.Button--color--brown{transition:color .1s,background-color .1s;background-color:#8c5836;color:#fff}.Button--color--brown:focus{transition:color .25s,background-color .25s}.Button--color--brown:hover{background-color:#ae724c;color:#fff}.Button--color--grey{transition:color .1s,background-color .1s;background-color:#646464;color:#fff}.Button--color--grey:focus{transition:color .25s,background-color .25s}.Button--color--grey:hover{background-color:#818181;color:#fff}.Button--color--good{transition:color .1s,background-color .1s;background-color:#4d9121;color:#fff}.Button--color--good:focus{transition:color .25s,background-color .25s}.Button--color--good:hover{background-color:#67b335;color:#fff}.Button--color--average{transition:color .1s,background-color .1s;background-color:#cd7a0d;color:#fff}.Button--color--average:focus{transition:color .25s,background-color .25s}.Button--color--average:hover{background-color:#eb972b;color:#fff}.Button--color--bad{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.Button--color--bad:focus{transition:color .25s,background-color .25s}.Button--color--bad:hover{background-color:#d93f3f;color:#fff}.Button--color--label{transition:color .1s,background-color .1s;background-color:#657a94;color:#fff}.Button--color--label:focus{transition:color .25s,background-color .25s}.Button--color--label:hover{background-color:#8a9aae;color:#fff}.Button--color--gold{transition:color .1s,background-color .1s;background-color:#d6920c;color:#fff}.Button--color--gold:focus{transition:color .25s,background-color .25s}.Button--color--gold:hover{background-color:#eeaf30;color:#fff}.Button--color--default{transition:color .1s,background-color .1s;background-color:#3e6189;color:#fff}.Button--color--default:focus{transition:color .25s,background-color .25s}.Button--color--default:hover{background-color:#567daa;color:#fff}.Button--color--caution{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.Button--color--caution:focus{transition:color .25s,background-color .25s}.Button--color--caution:hover{background-color:#f5d523;color:#000}.Button--color--danger{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.Button--color--danger:focus{transition:color .25s,background-color .25s}.Button--color--danger:hover{background-color:#d93f3f;color:#fff}.Button--color--transparent{background-color:rgba(32,32,32,0);color:rgba(255,255,255,.5);transition:color .1s,background-color .1s;background-color:#202020;color:#fff}.Button--color--transparent:focus{transition:color .25s,background-color .25s}.Button--color--transparent:hover{background-color:#343434;color:#fff}.Button--color--translucent{background-color:rgba(32,32,32,.6);color:rgba(255,255,255,.5);transition:color .1s,background-color .1s;background-color:#202020;color:#fff}.Button--color--translucent:focus{transition:color .25s,background-color .25s}.Button--color--translucent:hover{background-color:#343434;color:#fff}.Button--disabled{background-color:#999!important}.Button--selected{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.Button--selected:focus{transition:color .25s,background-color .25s}.Button--selected:hover{background-color:#2fb94f;color:#fff}.Button--modal{float:right;z-index:1;margin-top:-.5rem}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Dropdown{position:relative;align-items:center}.Dropdown__control{display:inline-block;align-items:center;font-family:Verdana,sans-serif;font-size:1em;width:8.3333333333em;line-height:1.3333333333em;-ms-user-select:none;user-select:none}.Dropdown__arrow-button{float:right;padding-left:.35em;width:1.2em;height:1.8333333333em;border-left:.0833333333em solid #000;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;align-items:center;z-index:5;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-scroll{overflow-y:scroll}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s ease-out}.Dropdown__menuentry.selected{background-color:rgba(255,255,255,.5)!important;transition:background-color 0ms}.Dropdown__menuentry:hover{background-color:rgba(255,255,255,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.Dropdown__selected-text{display:inline-block;text-overflow:ellipsis;white-space:nowrap;height:1.4166666667em;width:calc(100% - 1.2em);text-align:left;padding-top:2.5px}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:block}.Flex--iefix.Flex--inline,.Flex__item--iefix{display:inline-block}.Flex--iefix--column>.Flex__item--iefix{display:block}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.Knob__popupValue,.Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Knob__popupValue--right{top:.25rem;right:-50%}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.LabeledList__breakContents{word-break:break-all;word-wrap:break-word}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem;scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--color--gold{color:#fff;background-color:#825d13}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--disabled{border:1px solid #999}.ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.ProgressBar--color--black{border:.0833333333em solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__rest{position:relative}.Section__content{padding:.66em .5em}.Section--fitted>.Section__rest>.Section__content{padding:0}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--fill>.Section__rest{flex-grow:1}.Section--fill>.Section__rest>.Section__content{height:100%}.Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:hidden}.Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.Section .Section:first-child{margin-top:-.5em}.Section .Section .Section__titleText{font-size:1.0833333333em}.Section .Section .Section .Section__titleText{font-size:1em}.Slider:not(.Slider__disabled){cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--fill{height:100%}.Stack--horizontal>.Stack__item{margin-left:.5em}.Stack--horizontal>.Stack__item:first-child{margin-left:0}.Stack--vertical>.Stack__item{margin-top:.5em}.Stack--vertical>.Stack__item:first-child{margin-top:0}.Stack--zebra>.Stack__item:nth-child(2n){background-color:#131313}.Stack--horizontal>.Stack__divider:not(.Stack__divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--vertical>.Stack__divider:not(.Stack__divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__row--header .Table__cell,.Table__cell--header{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#131313}.Tabs--fill{height:100%}.Section .Tabs{background-color:rgba(0,0,0,0)}.Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(255,255,255,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075);transition:background-color 0}.Tab--selected{background-color:rgba(255,255,255,.125);color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.Tabs--vertical .Tab--selected{border-left:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#8b9bb0}.Tab--selected.Tab--color--gold{color:#f6c563}.Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#f3b22f}.Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#f3b22f}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:opacity .15s ease-out;background-color:#000;color:#fff;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em;max-width:20.8333333333em}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid rgba(140,140,140,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;top:1em;left:.75em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout::-webkit-scrollbar,.Layout *::-webkit-scrollbar{width:12px}.Layout::-webkit-scrollbar-track,.Layout *::-webkit-scrollbar-track{background:#181818}.Layout::-webkit-scrollbar-thumb,.Layout *::-webkit-scrollbar-thumb{background:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.Layout__content--flexRow{display:flex;flex-flow:row}.Layout__content--flexColumn{display:flex;flex-flow:column}.Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.Layout__content--noMargin{margin:0}.Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(to bottom,#202020,#202020)}.Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.emoji16x16{vertical-align:middle}a{color:#397ea5}a.popt{text-decoration:none}.popup{position:fixed;top:50%;left:50%;background:#ddd}.popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.popup .close:hover{background:#999}.popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.popup input[type=text]:hover,.popup input[type=text]:active,.popup input[type=text]:focus{border-color:green}.popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.popup input[type=submit]:hover,.popup input[type=submit]:focus,.popup input[type=submit]:active{background:#aaa;cursor:pointer}.changeFont{padding:10px}.changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.changeFont a:hover{background:#ccc}.highlightPopup{padding:10px;text-align:center}.highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.highlightPopup input.highlightColor{background-color:#ff0}.highlightPopup input.highlightTermSubmit{margin-top:5px}.contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.contextMenu a:hover{background-color:#ccc}.filterMessages{padding:5px}.filterMessages div{padding:2px 0}.icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:link,.motd a:active,.motd a:hover{color:#a4bad6}.italic,.italics,.emote{font-style:italic}.highlight{background:#ff0}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}em{font-style:normal;font-weight:700}.darkmblue{color:#6685f5}.prefix,.ooc{font-weight:700}.looc{color:#69c;font-weight:700}.adminobserverooc{color:#09c;font-weight:700}.adminooc{color:#b82e00;font-weight:700}.adminobserver{color:#960;font-weight:700}.admin{color:#386aff;font-weight:700}.adminsay{color:#9611d4;font-weight:700}.mentorhelp{color:#07b;font-weight:700}.adminhelp{color:#a00;font-weight:700}.playerreply{color:#80b;font-weight:700}.pmsend{color:#6685f5}.debug{color:#6d2f83}.name,.yell{font-weight:700}.siliconsay{font-family:Courier New,Courier,monospace}.deadsay{color:#e2c1ff}.radio{color:#20b142}.deptradio{color:#939}.comradio{color:#5f5cff}.syndradio{color:#8f4a4b}.dsquadradio{color:#998599}.resteamradio{color:#18bc46}.airadio{color:#ff5ed7}.centradio{color:#2681a5}.secradio{color:#dd3535}.engradio{color:#feac20}.medradio{color:#00b5ad}.sciradio{color:#c68cfa}.supradio{color:#b88646}.srvradio{color:#bbd164}.proradio{color:#b84f92}.admin_channel{color:#03fc9d;font-weight:700}.all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.mentor_channel{color:#775bff;font-weight:700}.mentor_channel_admin{color:#a35cff;font-weight:700}.djradio{color:#960}.binaryradio{color:#1b00fb;font-family:Courier New,Courier,monospace}.mommiradio{color:#6685f5}.alert{color:#d82020}h1.alert,h2.alert{color:#a4bad6}.ghostalert{color:#cc00c6;font-style:italic;font-weight:700}.emote{font-style:italic}.selecteddna{color:#a4bad6;background-color:#001b1b}.attack{color:red}.moderate{color:#c00}.disarm{color:#900}.passive{color:#600}.warning{color:#c51e1e;font-style:italic}.boldwarning{color:#c51e1e;font-style:italic;font-weight:700}.danger{color:#c51e1e;font-weight:700}.userdanger{color:#c51e1e;font-weight:700;font-size:120%}.biggerdanger{color:red;font-weight:700;font-size:150%}.info{color:#9ab0ff}.notice{color:#6685f5}.boldnotice{color:#6685f5;font-weight:700}.suicide{color:#ff5050;font-style:italic}.green{color:#03bb39}.pr_announce,.boldannounceic,.boldannounceooc{color:#c51e1e;font-weight:700}.greenannounce{color:#059223;font-weight:700}.alien{color:#c433c4}.noticealien{color:#00c000}.alertalien{color:#00c000;font-weight:700}.terrorspider{color:#cf52fa}.dantalion{color:#8b2c5e}.chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.chaosgood{color:#19e0c0;font-weight:700}.chaosneutral{color:#479ac0;font-weight:700}.chaosbad{color:#9047c0;font-weight:700}.chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.sinister{color:purple;font-weight:700;font-style:italic}.medal{font-weight:700}.blob{color:#006221;font-weight:700;font-style:italic}.confirm{color:#00af3b}.rose{color:#ff5050}.sans{font-family:Comic Sans MS,cursive,sans-serif}.wingdings{font-family:Wingdings,Webdings}.robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.ancient{color:#008b8b;font-style:italic}.newscaster{color:#c00}.mod{color:#735638;font-weight:700}.modooc{color:#184880;font-weight:700}.adminmod{color:#f0aa14;font-weight:700}.tajaran{color:#803b56}.skrell{color:#00ced1}.solcom{color:#8282fb}.com_srus{color:#7c4848}.soghun{color:#228b22}.changeling{color:#00b4de}.vox{color:#a0a}.diona{color:#804000;font-weight:700}.trinary{color:#727272}.kidan{color:#c64c05}.slime{color:#07a}.drask{color:#a3d4eb;font-family:Arial Black}.moth{color:#869b29;font-family:Copperplate}.clown{color:red}.vulpkanin{color:#b97a57}.abductor{color:purple;font-style:italic}.mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.rough{font-family:Trebuchet MS,cursive,sans-serif}.say_quote{font-family:Georgia,Verdana,sans-serif}.cult{color:purple;font-weight:700;font-style:italic}.cultspeech{color:#af0000;font-style:italic}.cultitalic{color:#a60000;font-style:italic}.cultlarge{color:#a60000;font-weight:700;font-size:120%}.narsie{color:#a60000;font-weight:700;font-size:300%}.narsiesmall{color:#a60000;font-weight:700;font-size:200%}.zombie{color:#7c4848}.zombielarge{color:#7c4848;font-weight:700;font-size:120%}.interface{color:#9031c4}.big{font-size:150%}.reallybig{font-size:175%}.greentext{color:#0f0;font-size:150%}.redtext{color:red;font-size:150%}.bold{font-weight:700}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.center{text-align:center}.red{color:red}.purple{color:#9031c4}.skeleton{color:#c8c8c8;font-weight:700;font-style:italic}.gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.orange{color:orange}.orangei{color:orange;font-style:italic}.orangeb{color:orange;font-weight:700}.resonate{color:#298f85}.healthscan_oxy{color:#5cc9ff}.revennotice{color:#6685f5}.revenboldnotice{color:#6685f5;font-weight:700}.revenbignotice{color:#6685f5;font-weight:700;font-size:120%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:120%}.specialnotice{color:#4a6f82;font-weight:700;font-size:120%}.good{color:green}.average{color:#ff8000}.bad{color:red}.italics,.talkinto{font-style:italic}.whisper{font-style:italic;color:#ccc}.recruit{color:#5c00e6;font-weight:700;font-style:italic}.memo{color:#638500;text-align:center}.memoedit{text-align:center;font-size:75%}.connectionClosed,.fatalError{background:red;color:#fff;padding:5px}.connectionClosed.restored{background:green}.internal.boldnshit{color:#6685f5;font-weight:700}.rebooting{background:#2979af;color:#fff;padding:5px}.rebooting a{color:#fff!important;text-decoration-color:#fff!important}.text-normal{font-weight:400;font-style:normal}.hidden{display:none;visibility:hidden}.colossus{color:#7f282a;font-size:175%}.hierophant{color:#609;font-weight:700;font-style:italic}.hierophant_warning{color:#609;font-style:italic}.emoji{max-height:16px;max-width:16px}.adminticket{color:#3daf21;font-weight:700}.adminticketalt{color:#ccb847;font-weight:700}span.body .codephrases{color:#55f}span.body .coderesponses{color:#f33}.announcement h1,.announcement h2{color:#a4bad6;margin:8pt 0;line-height:1.2}.announcement p{color:#d82020;line-height:1.3}.announcement.minor h1{font-size:180%}.announcement.minor h2{font-size:170%}.announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.bolditalics{font-style:italic;font-weight:700}.boxed_message{background:#1b1c1e;border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.boxed_message.left_align_text{text-align:left}.boxed_message.red_border{background:#1e1b1b;border-color:#a00}.boxed_message.green_border{background:#1b1e1c;border-color:#0f0}.boxed_message.purple_border{background:#1d1c1f;border-color:#8000ff}.boxed_message.notice_border{background:#1b1c1e;border-color:#6685f5}.boxed_message.thick_border{border-width:thick}.oxygen{color:#449dff}.nitrogen{color:#f94541}.carbon_dioxide{color:#ccc}.plasma{color:#eb6b00}.sleeping_agent{color:#f28b89}.agent_b{color:teal}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-gold{color:#e39b0d!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .color-bg-gold{background-color:#bd810b!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#fff}.theme-light .Tabs--fill{height:100%}.theme-light .Section .Tabs{background-color:rgba(0,0,0,0)}.theme-light .Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.theme-light .Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.theme-light .Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.theme-light .Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.theme-light .Tab:not(.Tab--selected):hover{background-color:rgba(0,0,0,.075);transition:background-color 0}.theme-light .Tab--selected{background-color:rgba(0,0,0,.125);color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.theme-light .Tabs--vertical .Tab--selected{border-left:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#353535}.theme-light .Tab--selected.Tab--color--gold{color:#f4b73f}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#e39b0d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#e39b0d}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__rest{position:relative}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--fill>.Section__rest{flex-grow:1}.theme-light .Section--fill>.Section__rest>.Section__content{height:100%}.theme-light .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-light .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-light .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-light .Section .Section:first-child{margin-top:-.5em}.theme-light .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-light .Section .Section .Section .Section__titleText{font-size:1em}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .fas,.theme-light .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .fas,.theme-light .Button--hasContent .far{margin-right:.25em}.theme-light .Button--hasContent.Button--iconRight .fa,.theme-light .Button--hasContent.Button--iconRight .fas,.theme-light .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-light .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-light .Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.theme-light .Button--color--black:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--black:hover{background-color:#101010;color:#fff}.theme-light .Button--color--white{transition:color .1s,background-color .1s;background-color:#bfbfbf;color:#000}.theme-light .Button--color--white:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--white:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--red{transition:color .1s,background-color .1s;background-color:#a61c1c;color:#fff}.theme-light .Button--color--red:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--red:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--orange{transition:color .1s,background-color .1s;background-color:#c0530b;color:#fff}.theme-light .Button--color--orange:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--orange:hover{background-color:#e76d1d;color:#fff}.theme-light .Button--color--yellow{transition:color .1s,background-color .1s;background-color:#bfa303;color:#fff}.theme-light .Button--color--yellow:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--yellow:hover{background-color:#e7c714;color:#fff}.theme-light .Button--color--olive{transition:color .1s,background-color .1s;background-color:#889912;color:#fff}.theme-light .Button--color--olive:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--olive:hover{background-color:#a9bc25;color:#fff}.theme-light .Button--color--green{transition:color .1s,background-color .1s;background-color:#188532;color:#fff}.theme-light .Button--color--green:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--green:hover{background-color:#2ba648;color:#fff}.theme-light .Button--color--teal{transition:color .1s,background-color .1s;background-color:#008882;color:#fff}.theme-light .Button--color--teal:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--teal:hover{background-color:#10a9a2;color:#fff}.theme-light .Button--color--blue{transition:color .1s,background-color .1s;background-color:#19649c;color:#fff}.theme-light .Button--color--blue:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--blue:hover{background-color:#2c81c0;color:#fff}.theme-light .Button--color--violet{transition:color .1s,background-color .1s;background-color:#4b2897;color:#fff}.theme-light .Button--color--violet:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--violet:hover{background-color:#653db9;color:#fff}.theme-light .Button--color--purple{transition:color .1s,background-color .1s;background-color:#7a2696;color:#fff}.theme-light .Button--color--purple:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--purple:hover{background-color:#9a3bb9;color:#fff}.theme-light .Button--color--pink{transition:color .1s,background-color .1s;background-color:#b61d73;color:#fff}.theme-light .Button--color--pink:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--pink:hover{background-color:#d93591;color:#fff}.theme-light .Button--color--brown{transition:color .1s,background-color .1s;background-color:#7c4d2f;color:#fff}.theme-light .Button--color--brown:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--brown:hover{background-color:#9c6745;color:#fff}.theme-light .Button--color--grey{transition:color .1s,background-color .1s;background-color:#bfbfbf;color:#000}.theme-light .Button--color--grey:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--grey:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--good{transition:color .1s,background-color .1s;background-color:#44801d;color:#fff}.theme-light .Button--color--good:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--good:hover{background-color:#5d9f31;color:#fff}.theme-light .Button--color--average{transition:color .1s,background-color .1s;background-color:#b56b0b;color:#fff}.theme-light .Button--color--average:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--average:hover{background-color:#dc891d;color:#fff}.theme-light .Button--color--bad{transition:color .1s,background-color .1s;background-color:#a61c1c;color:#fff}.theme-light .Button--color--bad:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--bad:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--label{transition:color .1s,background-color .1s;background-color:#2c2c2c;color:#fff}.theme-light .Button--color--label:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--label:hover{background-color:#424242;color:#fff}.theme-light .Button--color--gold{transition:color .1s,background-color .1s;background-color:#bd810b;color:#fff}.theme-light .Button--color--gold:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--gold:hover{background-color:#e5a11c;color:#fff}.theme-light .Button--color--default{transition:color .1s,background-color .1s;background-color:#bbb;color:#000}.theme-light .Button--color--default:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--default:hover{background-color:#e3e3e3;color:#000}.theme-light .Button--color--caution{transition:color .1s,background-color .1s;background-color:#be6209;color:#fff}.theme-light .Button--color--caution:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-light .Button--color--danger{transition:color .1s,background-color .1s;background-color:#9a9d00;color:#fff}.theme-light .Button--color--danger:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-light .Button--color--transparent{background-color:rgba(238,238,238,0);color:rgba(0,0,0,.5);transition:color .1s,background-color .1s;background-color:#eee;color:#000}.theme-light .Button--color--transparent:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--transparent:hover{background-color:#fcfcfc;color:#000}.theme-light .Button--color--translucent{background-color:rgba(238,238,238,.6);color:rgba(0,0,0,.5);transition:color .1s,background-color .1s;background-color:#eee;color:#000}.theme-light .Button--color--translucent:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--translucent:hover{background-color:#fcfcfc;color:#000}.theme-light .Button--disabled{background-color:#363636!important}.theme-light .Button--selected{transition:color .1s,background-color .1s;background-color:#0668b8;color:#fff}.theme-light .Button--selected:focus{transition:color .25s,background-color .25s}.theme-light .Button--selected:hover{background-color:#1785df;color:#fff}.theme-light .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#e6e6e6;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#e6e6e6;color:#000;text-align:right}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#000;background-color:#e6e6e6;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-light .Input--disabled{color:#777;border-color:#000;border-color:rgba(0,0,0,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#000;color:inherit}.theme-light .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-light .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#e6e6e6;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-light .Knob__popupValue,.theme-light .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .Knob__popupValue--right{top:.25rem;right:-50%}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Knob--color--gold .Knob__ringFill{stroke:#e39b0d}.theme-light .Slider:not(.Slider__disabled){cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--disabled{border:1px solid #999}.theme-light .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-light .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border:.0833333333em solid #c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border:.0833333333em solid #bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border:.0833333333em solid #889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border:.0833333333em solid #188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border:.0833333333em solid #008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border:.0833333333em solid #19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border:.0833333333em solid #4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border:.0833333333em solid #7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border:.0833333333em solid #b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border:.0833333333em solid #7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--good{border:.0833333333em solid #44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border:.0833333333em solid #b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border:.0833333333em solid #2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .ProgressBar--color--gold{border:.0833333333em solid #bd810b!important}.theme-light .ProgressBar--color--gold .ProgressBar__fill{background-color:#bd810b}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout::-webkit-scrollbar,.theme-light .Layout *::-webkit-scrollbar{width:12px}.theme-light .Layout::-webkit-scrollbar-track,.theme-light .Layout *::-webkit-scrollbar-track{background:#f2f2f2}.theme-light .Layout::-webkit-scrollbar-thumb,.theme-light .Layout *::-webkit-scrollbar-thumb{background:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-light .Layout__content--flexRow{display:flex;flex-flow:row}.theme-light .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-light .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-light .Layout__content--noMargin{margin:0}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(to bottom,#eee,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(252,252,252,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s,background-color .25s}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light html,.theme-light body{padding:0;margin:0;height:100%;color:#000}.theme-light body{background:#fff;font-family:Verdana,sans-serif;font-size:13px;line-height:1.2;overflow-x:hidden;overflow-y:scroll;word-wrap:break-word}.theme-light img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}.theme-light img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.theme-light a{color:#00f}.theme-light a.popt{text-decoration:none}.theme-light .popup{position:fixed;top:50%;left:50%;background:#ddd}.theme-light .popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.theme-light .popup .close:hover{background:#999}.theme-light .popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.theme-light .popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.theme-light .popup input[type=text]:hover,.theme-light .popup input[type=text]:active,.theme-light .popup input[type=text]:focus{border-color:green}.theme-light .popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.theme-light .popup input[type=submit]:hover,.theme-light .popup input[type=submit]:focus,.theme-light .popup input[type=submit]:active{background:#aaa;cursor:pointer}.theme-light .changeFont{padding:10px}.theme-light .changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.theme-light .changeFont a:hover{background:#ccc}.theme-light .highlightPopup{padding:10px;text-align:center}.theme-light .highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.theme-light .highlightPopup input.highlightColor{background-color:#ff0}.theme-light .highlightPopup input.highlightTermSubmit{margin-top:5px}.theme-light .contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.theme-light .contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.theme-light .contextMenu a:hover{background-color:#ccc}.theme-light .filterMessages{padding:5px}.theme-light .filterMessages div{padding:2px 0}.theme-light .icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.theme-light .motd{color:#638500;font-family:Verdana,sans-serif;white-space:normal}.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6{color:#638500;text-decoration:underline}.theme-light .motd a,.theme-light .motd a:link,.theme-light .motd a:active,.theme-light .motd a:hover{color:#638500}.theme-light .italic,.theme-light .italics,.theme-light .emote{font-style:italic}.theme-light .highlight{background:#ff0}.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f;font-family:Georgia,Verdana,sans-serif}.theme-light em{font-style:normal;font-weight:700}.theme-light .darkmblue{color:#00f}.theme-light .prefix,.theme-light .ooc{font-weight:700}.theme-light .looc{color:#69c;font-weight:700}.theme-light .adminobserverooc{color:#09c;font-weight:700}.theme-light .adminooc{color:#b82e00;font-weight:700}.theme-light .adminobserver{color:#960;font-weight:700}.theme-light .admin{color:#386aff;font-weight:700}.theme-light .adminsay{color:#9611d4;font-weight:700}.theme-light .mentorhelp{color:#07b;font-weight:700}.theme-light .adminhelp{color:#a00;font-weight:700}.theme-light .playerreply{color:#80b;font-weight:700}.theme-light .pmsend{color:#00f}.theme-light .debug{color:#6d2f83}.theme-light .name,.theme-light .yell{font-weight:700}.theme-light .siliconsay{font-family:Courier New,Courier,monospace}.theme-light .deadsay{color:#5c00e6}.theme-light .radio{color:#408010}.theme-light .deptradio{color:#939}.theme-light .comradio{color:#204090}.theme-light .syndradio{color:#6d3f40}.theme-light .dsquadradio{color:#686868}.theme-light .resteamradio{color:#18bc46}.theme-light .airadio{color:#f0f}.theme-light .centradio{color:#5c5c7c}.theme-light .secradio{color:#a30000}.theme-light .engradio{color:#a66300}.theme-light .medradio{color:#009190}.theme-light .sciradio{color:#939}.theme-light .supradio{color:#7f6539}.theme-light .srvradio{color:#80a000}.theme-light .proradio{color:#e3027a}.theme-light .admin_channel{color:#9a04d1;font-weight:700}.theme-light .all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.theme-light .mentor_channel{color:#775bff;font-weight:700}.theme-light .mentor_channel_admin{color:#a35cff;font-weight:700}.theme-light .djradio{color:#630}.theme-light .binaryradio{color:#0b0050;font-family:Courier New,Courier,monospace}.theme-light .mommiradio{color:navy}.theme-light .alert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .ghostalert{color:#5c00e6;font-style:italic;font-weight:700}.theme-light .emote{font-style:italic}.theme-light .selecteddna{color:#fff;background-color:#001b1b}.theme-light .attack{color:red}.theme-light .moderate{color:#c00}.theme-light .disarm{color:#900}.theme-light .passive{color:#600}.theme-light .warning{color:red;font-style:italic}.theme-light .boldwarning{color:red;font-style:italic;font-weight:700}.theme-light .danger{color:red;font-weight:700}.theme-light .userdanger{color:red;font-weight:700;font-size:120%}.theme-light .biggerdanger{color:red;font-weight:700;font-size:150%}.theme-light .info{color:#00c}.theme-light .notice{color:#009}.theme-light .boldnotice{color:#009;font-weight:700}.theme-light .suicide{color:#ff5050;font-style:italic}.theme-light .green{color:#03bb39}.theme-light .pr_announce{color:#228b22;font-weight:700}.theme-light .boldannounceic,.theme-light .boldannounceooc{color:red;font-weight:700}.theme-light .greenannounce{color:#0f0;font-weight:700}.theme-light .alien{color:#543354}.theme-light .noticealien{color:#00c000}.theme-light .alertalien{color:#00c000;font-weight:700}.theme-light .terrorspider{color:#320e32}.theme-light .dantalion{color:#6a2148}.theme-light .chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.theme-light .chaosgood{color:#19e0c0;font-weight:700}.theme-light .chaosneutral{color:#479ac0;font-weight:700}.theme-light .chaosbad{color:#9047c0;font-weight:700}.theme-light .chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.theme-light .sinister{color:purple;font-weight:700;font-style:italic}.theme-light .blob{color:#006221;font-weight:700;font-style:italic}.theme-light .confirm{color:#00af3b}.theme-light .rose{color:#ff5050}.theme-light .sans{font-family:Comic Sans MS,cursive,sans-serif}.theme-light .wingdings{font-family:Wingdings,Webdings}.theme-light .robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.theme-light .ancient{color:#008b8b;font-style:italic}.theme-light .newscaster{color:maroon}.theme-light .mod{color:#735638;font-weight:700}.theme-light .modooc{color:#184880;font-weight:700}.theme-light .adminmod{color:#402a14;font-weight:700}.theme-light .tajaran{color:#803b56}.theme-light .skrell{color:#00ced1}.theme-light .solcom{color:#22228b}.theme-light .com_srus{color:#7c4848}.theme-light .soghun{color:#228b22}.theme-light .changeling{color:purple}.theme-light .vox{color:#a0a}.theme-light .diona{color:#804000;font-weight:700}.theme-light .trinary{color:#727272}.theme-light .kidan{color:#664205}.theme-light .slime{color:#07a}.theme-light .drask{color:#a3d4eb;font-family:Arial Black}.theme-light .moth{color:#869b29;font-family:Copperplate}.theme-light .clown{color:red}.theme-light .vulpkanin{color:#b97a57}.theme-light .abductor{color:purple;font-style:italic}.theme-light .mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.theme-light .rough{font-family:Trebuchet MS,cursive,sans-serif}.theme-light .say_quote{font-family:Georgia,Verdana,sans-serif}.theme-light .cult{color:purple;font-weight:700;font-style:italic}.theme-light .cultspeech{color:#7f0000;font-style:italic}.theme-light .cultitalic{color:#960000;font-style:italic}.theme-light .cultlarge{color:#960000;font-weight:700;font-size:120%}.theme-light .narsie{color:#960000;font-weight:700;font-size:300%}.theme-light .narsiesmall{color:#960000;font-weight:700;font-size:200%}.theme-light .zombie{color:#7c4848}.theme-light .zombielarge{color:#7c4848;font-weight:700;font-size:120%}.theme-light .interface{color:#303}.theme-light .big{font-size:150%}.theme-light .reallybig{font-size:175%}.theme-light .greentext{color:#0f0;font-size:150%}.theme-light .redtext{color:red;font-size:150%}.theme-light .bold{font-weight:700}.theme-light .his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.theme-light .center{text-align:center}.theme-light .red{color:red}.theme-light .purple{color:#5e2d79}.theme-light .skeleton{color:#585858;font-weight:700;font-style:italic}.theme-light .gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.theme-light .orange{color:orange}.theme-light .orangei{color:orange;font-style:italic}.theme-light .orangeb{color:orange;font-weight:700}.theme-light .resonate{color:#298f85}.theme-light .healthscan_oxy{color:#0074bd}.theme-light .revennotice{color:#1d2953}.theme-light .revenboldnotice{color:#1d2953;font-weight:700}.theme-light .revenbignotice{color:#1d2953;font-weight:700;font-size:120%}.theme-light .revenminor{color:#823abb}.theme-light .revenwarning{color:#760fbb;font-style:italic}.theme-light .revendanger{color:#760fbb;font-weight:700;font-size:120%}.theme-light .specialnoticebold{color:#36525e;font-weight:700;font-size:120%}.theme-light .specialnotice{color:#36525e;font-size:120%}.theme-light .medal{font-weight:700}.theme-light .good{color:green}.theme-light .average{color:#ff8000}.theme-light .bad{color:red}.theme-light .italics,.theme-light .talkinto{font-style:italic}.theme-light .whisper{font-style:italic;color:#333}.theme-light .recruit{color:#5c00e6;font-weight:700;font-style:italic}.theme-light .memo{color:#638500;text-align:center}.theme-light .memoedit{text-align:center;font-size:75%}.theme-light .connectionClosed,.theme-light .fatalError{background:red;color:#fff;padding:5px}.theme-light .connectionClosed.restored{background:green}.theme-light .internal.boldnshit{color:#00f;font-weight:700}.theme-light .rebooting{background:#2979af;color:#fff;padding:5px}.theme-light .rebooting a{color:#fff!important;text-decoration-color:#fff!important}.theme-light .text-normal{font-weight:400;font-style:normal}.theme-light .hidden{display:none;visibility:hidden}.theme-light .colossus{color:#7f282a;font-size:175%}.theme-light .hierophant{color:#609;font-weight:700;font-style:italic}.theme-light .hierophant_warning{color:#609;font-style:italic}.theme-light .emoji{max-height:16px;max-width:16px}.theme-light .adminticket{color:#3e7336;font-weight:700}.theme-light .adminticketalt{color:#014c8a;font-weight:700}.theme-light span.body .codephrases{color:#00f}.theme-light span.body .coderesponses{color:red}.theme-light .announcement h1,.theme-light .announcement h2{color:#000;margin:8pt 0;line-height:1.2}.theme-light .announcement p{color:#d82020;line-height:1.3}.theme-light .announcement.minor h1{font-size:180%}.theme-light .announcement.minor h2{font-size:170%}.theme-light .announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.theme-light .bolditalics{font-style:italic;font-weight:700}.theme-light .boxed_message{background:#f7fcff;border:1px solid #111a26;margin:.5em;padding:.5em .75em;text-align:center}.theme-light .boxed_message.left_align_text{text-align:left}.theme-light .boxed_message.red_border{background:#fff7f7;border-color:#a00}.theme-light .boxed_message.green_border{background:#f7fff7;border-color:#0f0}.theme-light .boxed_message.purple_border{background:#fdf7ff;border-color:#a0f}.theme-light .boxed_message.notice_border{background:#f7fdff;border-color:#0000bf}.theme-light .boxed_message.thick_border{border-width:thick}.theme-light .oxygen{color:#006adb}.theme-light .nitrogen{color:#d00a06}.theme-light .carbon_dioxide{color:#1f1f1f}.theme-light .plasma{color:#853c00}.theme-light .sleeping_agent{color:#e82f2c}.theme-light .agent_b{color:#004d4d}.theme-ntos .color-black{color:#1a1a1a!important}.theme-ntos .color-white{color:#fff!important}.theme-ntos .color-red{color:#df3e3e!important}.theme-ntos .color-orange{color:#f37f33!important}.theme-ntos .color-yellow{color:#fbda21!important}.theme-ntos .color-olive{color:#cbe41c!important}.theme-ntos .color-green{color:#25ca4c!important}.theme-ntos .color-teal{color:#00d6cc!important}.theme-ntos .color-blue{color:#2e93de!important}.theme-ntos .color-violet{color:#7349cf!important}.theme-ntos .color-purple{color:#ad45d0!important}.theme-ntos .color-pink{color:#e34da1!important}.theme-ntos .color-brown{color:#b97447!important}.theme-ntos .color-grey{color:#848484!important}.theme-ntos .color-good{color:#68c22d!important}.theme-ntos .color-average{color:#f29a29!important}.theme-ntos .color-bad{color:#df3e3e!important}.theme-ntos .color-label{color:#8b9bb0!important}.theme-ntos .color-gold{color:#f3b22f!important}.theme-ntos .color-bg-black{background-color:#000!important}.theme-ntos .color-bg-white{background-color:#d9d9d9!important}.theme-ntos .color-bg-red{background-color:#bd2020!important}.theme-ntos .color-bg-orange{background-color:#d95e0c!important}.theme-ntos .color-bg-yellow{background-color:#d9b804!important}.theme-ntos .color-bg-olive{background-color:#9aad14!important}.theme-ntos .color-bg-green{background-color:#1b9638!important}.theme-ntos .color-bg-teal{background-color:#009a93!important}.theme-ntos .color-bg-blue{background-color:#1c71b1!important}.theme-ntos .color-bg-violet{background-color:#552dab!important}.theme-ntos .color-bg-purple{background-color:#8b2baa!important}.theme-ntos .color-bg-pink{background-color:#cf2082!important}.theme-ntos .color-bg-brown{background-color:#8c5836!important}.theme-ntos .color-bg-grey{background-color:#646464!important}.theme-ntos .color-bg-good{background-color:#4d9121!important}.theme-ntos .color-bg-average{background-color:#cd7a0d!important}.theme-ntos .color-bg-bad{background-color:#bd2020!important}.theme-ntos .color-bg-label{background-color:#657a94!important}.theme-ntos .color-bg-gold{background-color:#d6920c!important}.theme-ntos .Section{position:relative;margin-bottom:.5em;background-color:#121922;box-sizing:border-box}.theme-ntos .Section:last-child{margin-bottom:0}.theme-ntos .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.theme-ntos .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-ntos .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-ntos .Section__rest{position:relative}.theme-ntos .Section__content{padding:.66em .5em}.theme-ntos .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-ntos .Section--fill{display:flex;flex-direction:column;height:100%}.theme-ntos .Section--fill>.Section__rest{flex-grow:1}.theme-ntos .Section--fill>.Section__rest>.Section__content{height:100%}.theme-ntos .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-ntos .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-ntos .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-ntos .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-ntos .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-ntos .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-ntos .Section .Section:first-child{margin-top:-.5em}.theme-ntos .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-ntos .Section .Section .Section .Section__titleText{font-size:1em}.theme-ntos .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-ntos .Button:last-child{margin-right:0;margin-bottom:0}.theme-ntos .Button .fa,.theme-ntos .Button .fas,.theme-ntos .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-ntos .Button--hasContent .fa,.theme-ntos .Button--hasContent .fas,.theme-ntos .Button--hasContent .far{margin-right:.25em}.theme-ntos .Button--hasContent.Button--iconRight .fa,.theme-ntos .Button--hasContent.Button--iconRight .fas,.theme-ntos .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-ntos .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-ntos .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-ntos .Button--circular{border-radius:50%}.theme-ntos .Button--compact{padding:0 .25em;line-height:1.333em}.theme-ntos .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-ntos .Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.theme-ntos .Button--color--black:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--black:hover{background-color:#101010;color:#fff}.theme-ntos .Button--color--white{transition:color .1s,background-color .1s;background-color:#d9d9d9;color:#000}.theme-ntos .Button--color--white:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-ntos .Button--color--red{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-ntos .Button--color--red:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--orange{transition:color .1s,background-color .1s;background-color:#d95e0c;color:#fff}.theme-ntos .Button--color--orange:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-ntos .Button--color--yellow{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-ntos .Button--color--yellow:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--olive{transition:color .1s,background-color .1s;background-color:#9aad14;color:#fff}.theme-ntos .Button--color--olive:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-ntos .Button--color--green{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.theme-ntos .Button--color--green:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-ntos .Button--color--teal{transition:color .1s,background-color .1s;background-color:#009a93;color:#fff}.theme-ntos .Button--color--teal:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-ntos .Button--color--blue{transition:color .1s,background-color .1s;background-color:#1c71b1;color:#fff}.theme-ntos .Button--color--blue:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-ntos .Button--color--violet{transition:color .1s,background-color .1s;background-color:#552dab;color:#fff}.theme-ntos .Button--color--violet:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-ntos .Button--color--purple{transition:color .1s,background-color .1s;background-color:#8b2baa;color:#fff}.theme-ntos .Button--color--purple:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-ntos .Button--color--pink{transition:color .1s,background-color .1s;background-color:#cf2082;color:#fff}.theme-ntos .Button--color--pink:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-ntos .Button--color--brown{transition:color .1s,background-color .1s;background-color:#8c5836;color:#fff}.theme-ntos .Button--color--brown:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-ntos .Button--color--grey{transition:color .1s,background-color .1s;background-color:#646464;color:#fff}.theme-ntos .Button--color--grey:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-ntos .Button--color--good{transition:color .1s,background-color .1s;background-color:#4d9121;color:#fff}.theme-ntos .Button--color--good:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-ntos .Button--color--average{transition:color .1s,background-color .1s;background-color:#cd7a0d;color:#fff}.theme-ntos .Button--color--average:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-ntos .Button--color--bad{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-ntos .Button--color--bad:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--label{transition:color .1s,background-color .1s;background-color:#657a94;color:#fff}.theme-ntos .Button--color--label:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--label:hover{background-color:#8a9aae;color:#fff}.theme-ntos .Button--color--gold{transition:color .1s,background-color .1s;background-color:#d6920c;color:#fff}.theme-ntos .Button--color--gold:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-ntos .Button--color--default{transition:color .1s,background-color .1s;background-color:#384e68;color:#fff}.theme-ntos .Button--color--default:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--default:hover{background-color:#4f6885;color:#fff}.theme-ntos .Button--color--caution{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-ntos .Button--color--caution:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--danger{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-ntos .Button--color--danger:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--danger:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--transparent{background-color:rgba(27,38,51,0);color:rgba(255,255,255,.5);transition:color .1s,background-color .1s;background-color:#1b2633;color:#fff}.theme-ntos .Button--color--transparent:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--transparent:hover{background-color:#2f3b4a;color:#fff}.theme-ntos .Button--color--translucent{background-color:rgba(27,38,51,.6);color:rgba(255,255,255,.5);transition:color .1s,background-color .1s;background-color:#1b2633;color:#fff}.theme-ntos .Button--color--translucent:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--translucent:hover{background-color:#2f3b4a;color:#fff}.theme-ntos .Button--disabled{background-color:#999!important}.theme-ntos .Button--selected{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.theme-ntos .Button--selected:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--selected:hover{background-color:#2fb94f;color:#fff}.theme-ntos .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-ntos .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-ntos .NumberInput--fluid{display:block}.theme-ntos .NumberInput__content{margin-left:.5em}.theme-ntos .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-ntos .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.theme-ntos .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-ntos .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-ntos .Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-ntos .Input--fluid{display:block;width:auto}.theme-ntos .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-ntos .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-ntos .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-ntos .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-ntos .TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-ntos .TextArea--fluid{display:block;width:auto;height:auto}.theme-ntos .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-ntos .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-ntos .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-ntos .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-ntos .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-ntos .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-ntos .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-ntos .Knob__popupValue,.theme-ntos .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .Knob__popupValue--right{top:.25rem;right:-50%}.theme-ntos .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-ntos .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-ntos .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-ntos .Knob__ringFillPivot{transform:rotate(135deg)}.theme-ntos .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-ntos .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-ntos .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-ntos .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-ntos .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-ntos .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-ntos .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-ntos .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-ntos .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-ntos .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-ntos .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-ntos .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-ntos .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-ntos .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-ntos .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-ntos .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-ntos .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-ntos .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-ntos .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-ntos .Slider:not(.Slider__disabled){cursor:e-resize}.theme-ntos .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-ntos .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-ntos .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-ntos .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-ntos .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-ntos .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-ntos .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-ntos .ProgressBar--color--default{border:.0833333333em solid #3e6189}.theme-ntos .ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.theme-ntos .ProgressBar--color--disabled{border:1px solid #999}.theme-ntos .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-ntos .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-ntos .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-ntos .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-ntos .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-ntos .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-ntos .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-ntos .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-ntos .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-ntos .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-ntos .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-ntos .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-ntos .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-ntos .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-ntos .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-ntos .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-ntos .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-ntos .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-ntos .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-ntos .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-ntos .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-ntos .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-ntos .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-ntos .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-ntos .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-ntos .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-ntos .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-ntos .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-ntos .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-ntos .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-ntos .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-ntos .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--label{border:.0833333333em solid #657a94!important}.theme-ntos .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-ntos .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-ntos .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-ntos .Chat{color:#abc6ec}.theme-ntos .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-ntos .Chat__badge:before{content:"x"}.theme-ntos .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-ntos .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-ntos .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-ntos .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#121922}.theme-ntos .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-ntos .Chat__highlight{color:#000}.theme-ntos .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-ntos .ChatMessage{word-wrap:break-word}.theme-ntos .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-ntos .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-ntos .Layout,.theme-ntos .Layout *{scrollbar-base-color:#141d26;scrollbar-face-color:#2a3b4f;scrollbar-3dlight-color:#1b2633;scrollbar-highlight-color:#1b2633;scrollbar-track-color:#141d26;scrollbar-arrow-color:#7290b4;scrollbar-shadow-color:#2a3b4f}.theme-ntos .Layout::-webkit-scrollbar,.theme-ntos .Layout *::-webkit-scrollbar{width:12px}.theme-ntos .Layout::-webkit-scrollbar-track,.theme-ntos .Layout *::-webkit-scrollbar-track{background:#141d26}.theme-ntos .Layout::-webkit-scrollbar-thumb,.theme-ntos .Layout *::-webkit-scrollbar-thumb{background:#2a3b4f}.theme-ntos .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-ntos .Layout__content--flexRow{display:flex;flex-flow:row}.theme-ntos .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-ntos .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-ntos .Layout__content--noMargin{margin:0}.theme-ntos .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1b2633;background-image:linear-gradient(to bottom,#1b2633,#1b2633)}.theme-ntos .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-ntos .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-ntos .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-ntos .Window__contentPadding:after{height:0}.theme-ntos .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-ntos .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(50,63,78,.25);pointer-events:none}.theme-ntos .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-ntos .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-ntos .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-ntos .TitleBar{background-color:#1b2633;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-ntos .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#1b2633;transition:color .25s,background-color .25s}.theme-ntos .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-ntos .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-ntos .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-ntos .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-ntos .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-ntos .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-ntos .boxed_message{background:#1c242e;border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-ntos .boxed_message.left_align_text{text-align:left}.theme-ntos .boxed_message.red_border{background:#2e1c1c;border-color:#a00}.theme-ntos .boxed_message.green_border{background:#1c2e22;border-color:#0f0}.theme-ntos .boxed_message.purple_border{background:#221c2e;border-color:#8000ff}.theme-ntos .boxed_message.notice_border{background:#1f2633;border-color:#6685f5}.theme-ntos .boxed_message.thick_border{border-width:thick}.theme-syndicate .color-black{color:#1a1a1a!important}.theme-syndicate .color-white{color:#fff!important}.theme-syndicate .color-red{color:#df3e3e!important}.theme-syndicate .color-orange{color:#f37f33!important}.theme-syndicate .color-yellow{color:#fbda21!important}.theme-syndicate .color-olive{color:#cbe41c!important}.theme-syndicate .color-green{color:#25ca4c!important}.theme-syndicate .color-teal{color:#00d6cc!important}.theme-syndicate .color-blue{color:#2e93de!important}.theme-syndicate .color-violet{color:#7349cf!important}.theme-syndicate .color-purple{color:#ad45d0!important}.theme-syndicate .color-pink{color:#e34da1!important}.theme-syndicate .color-brown{color:#b97447!important}.theme-syndicate .color-grey{color:#848484!important}.theme-syndicate .color-good{color:#68c22d!important}.theme-syndicate .color-average{color:#f29a29!important}.theme-syndicate .color-bad{color:#df3e3e!important}.theme-syndicate .color-label{color:#8b9bb0!important}.theme-syndicate .color-gold{color:#f3b22f!important}.theme-syndicate .color-bg-black{background-color:#000!important}.theme-syndicate .color-bg-white{background-color:#d9d9d9!important}.theme-syndicate .color-bg-red{background-color:#bd2020!important}.theme-syndicate .color-bg-orange{background-color:#d95e0c!important}.theme-syndicate .color-bg-yellow{background-color:#d9b804!important}.theme-syndicate .color-bg-olive{background-color:#9aad14!important}.theme-syndicate .color-bg-green{background-color:#1b9638!important}.theme-syndicate .color-bg-teal{background-color:#009a93!important}.theme-syndicate .color-bg-blue{background-color:#1c71b1!important}.theme-syndicate .color-bg-violet{background-color:#552dab!important}.theme-syndicate .color-bg-purple{background-color:#8b2baa!important}.theme-syndicate .color-bg-pink{background-color:#cf2082!important}.theme-syndicate .color-bg-brown{background-color:#8c5836!important}.theme-syndicate .color-bg-grey{background-color:#646464!important}.theme-syndicate .color-bg-good{background-color:#4d9121!important}.theme-syndicate .color-bg-average{background-color:#cd7a0d!important}.theme-syndicate .color-bg-bad{background-color:#bd2020!important}.theme-syndicate .color-bg-label{background-color:#657a94!important}.theme-syndicate .color-bg-gold{background-color:#d6920c!important}.theme-syndicate .Section{position:relative;margin-bottom:.5em;background-color:#2b0101;box-sizing:border-box}.theme-syndicate .Section:last-child{margin-bottom:0}.theme-syndicate .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #397439}.theme-syndicate .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-syndicate .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-syndicate .Section__rest{position:relative}.theme-syndicate .Section__content{padding:.66em .5em}.theme-syndicate .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-syndicate .Section--fill{display:flex;flex-direction:column;height:100%}.theme-syndicate .Section--fill>.Section__rest{flex-grow:1}.theme-syndicate .Section--fill>.Section__rest>.Section__content{height:100%}.theme-syndicate .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-syndicate .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-syndicate .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-syndicate .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-syndicate .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-syndicate .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-syndicate .Section .Section:first-child{margin-top:-.5em}.theme-syndicate .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-syndicate .Section .Section .Section .Section__titleText{font-size:1em}.theme-syndicate .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-syndicate .Button:last-child{margin-right:0;margin-bottom:0}.theme-syndicate .Button .fa,.theme-syndicate .Button .fas,.theme-syndicate .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-syndicate .Button--hasContent .fa,.theme-syndicate .Button--hasContent .fas,.theme-syndicate .Button--hasContent .far{margin-right:.25em}.theme-syndicate .Button--hasContent.Button--iconRight .fa,.theme-syndicate .Button--hasContent.Button--iconRight .fas,.theme-syndicate .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-syndicate .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-syndicate .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-syndicate .Button--circular{border-radius:50%}.theme-syndicate .Button--compact{padding:0 .25em;line-height:1.333em}.theme-syndicate .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-syndicate .Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.theme-syndicate .Button--color--black:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--black:hover{background-color:#101010;color:#fff}.theme-syndicate .Button--color--white{transition:color .1s,background-color .1s;background-color:#d9d9d9;color:#000}.theme-syndicate .Button--color--white:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-syndicate .Button--color--red{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-syndicate .Button--color--red:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--orange{transition:color .1s,background-color .1s;background-color:#d95e0c;color:#fff}.theme-syndicate .Button--color--orange:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-syndicate .Button--color--yellow{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-syndicate .Button--color--yellow:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-syndicate .Button--color--olive{transition:color .1s,background-color .1s;background-color:#9aad14;color:#fff}.theme-syndicate .Button--color--olive:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-syndicate .Button--color--green{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.theme-syndicate .Button--color--green:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-syndicate .Button--color--teal{transition:color .1s,background-color .1s;background-color:#009a93;color:#fff}.theme-syndicate .Button--color--teal:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-syndicate .Button--color--blue{transition:color .1s,background-color .1s;background-color:#1c71b1;color:#fff}.theme-syndicate .Button--color--blue:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-syndicate .Button--color--violet{transition:color .1s,background-color .1s;background-color:#552dab;color:#fff}.theme-syndicate .Button--color--violet:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-syndicate .Button--color--purple{transition:color .1s,background-color .1s;background-color:#8b2baa;color:#fff}.theme-syndicate .Button--color--purple:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-syndicate .Button--color--pink{transition:color .1s,background-color .1s;background-color:#cf2082;color:#fff}.theme-syndicate .Button--color--pink:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-syndicate .Button--color--brown{transition:color .1s,background-color .1s;background-color:#8c5836;color:#fff}.theme-syndicate .Button--color--brown:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-syndicate .Button--color--grey{transition:color .1s,background-color .1s;background-color:#646464;color:#fff}.theme-syndicate .Button--color--grey:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-syndicate .Button--color--good{transition:color .1s,background-color .1s;background-color:#4d9121;color:#fff}.theme-syndicate .Button--color--good:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-syndicate .Button--color--average{transition:color .1s,background-color .1s;background-color:#cd7a0d;color:#fff}.theme-syndicate .Button--color--average:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-syndicate .Button--color--bad{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-syndicate .Button--color--bad:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--label{transition:color .1s,background-color .1s;background-color:#657a94;color:#fff}.theme-syndicate .Button--color--label:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--label:hover{background-color:#8a9aae;color:#fff}.theme-syndicate .Button--color--gold{transition:color .1s,background-color .1s;background-color:#d6920c;color:#fff}.theme-syndicate .Button--color--gold:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-syndicate .Button--color--default{transition:color .1s,background-color .1s;background-color:#397439;color:#fff}.theme-syndicate .Button--color--default:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--default:hover{background-color:#509350;color:#fff}.theme-syndicate .Button--color--caution{transition:color .1s,background-color .1s;background-color:#be6209;color:#fff}.theme-syndicate .Button--color--caution:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-syndicate .Button--color--danger{transition:color .1s,background-color .1s;background-color:#9a9d00;color:#fff}.theme-syndicate .Button--color--danger:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-syndicate .Button--color--transparent{background-color:rgba(77,2,2,0);color:rgba(255,255,255,.5);transition:color .1s,background-color .1s;background-color:#4d0202;color:#fff}.theme-syndicate .Button--color--transparent:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--transparent:hover{background-color:#671313;color:#fff}.theme-syndicate .Button--color--translucent{background-color:rgba(77,2,2,.6);color:rgba(255,255,255,.5);transition:color .1s,background-color .1s;background-color:#4d0202;color:#fff}.theme-syndicate .Button--color--translucent:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--translucent:hover{background-color:#671313;color:#fff}.theme-syndicate .Button--disabled{background-color:#363636!important}.theme-syndicate .Button--selected{transition:color .1s,background-color .1s;background-color:#9d0808;color:#fff}.theme-syndicate .Button--selected:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--selected:hover{background-color:#c11919;color:#fff}.theme-syndicate .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-syndicate .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#fff;background-color:#910101;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.theme-syndicate .NoticeBox--color--black{color:#fff;background-color:#000}.theme-syndicate .NoticeBox--color--white{color:#000;background-color:#b3b3b3}.theme-syndicate .NoticeBox--color--red{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--orange{color:#fff;background-color:#854114}.theme-syndicate .NoticeBox--color--yellow{color:#000;background-color:#83710d}.theme-syndicate .NoticeBox--color--olive{color:#000;background-color:#576015}.theme-syndicate .NoticeBox--color--green{color:#fff;background-color:#174e24}.theme-syndicate .NoticeBox--color--teal{color:#fff;background-color:#064845}.theme-syndicate .NoticeBox--color--blue{color:#fff;background-color:#1b4565}.theme-syndicate .NoticeBox--color--violet{color:#fff;background-color:#3b2864}.theme-syndicate .NoticeBox--color--purple{color:#fff;background-color:#542663}.theme-syndicate .NoticeBox--color--pink{color:#fff;background-color:#802257}.theme-syndicate .NoticeBox--color--brown{color:#fff;background-color:#4c3729}.theme-syndicate .NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.theme-syndicate .NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.theme-syndicate .NoticeBox--color--average{color:#fff;background-color:#7b4e13}.theme-syndicate .NoticeBox--color--bad{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--label{color:#fff;background-color:#53565a}.theme-syndicate .NoticeBox--color--gold{color:#fff;background-color:#825d13}.theme-syndicate .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-syndicate .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-syndicate .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-syndicate .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-syndicate .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;color:#87ce87;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-syndicate .NumberInput--fluid{display:block}.theme-syndicate .NumberInput__content{margin-left:.5em}.theme-syndicate .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-syndicate .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #87ce87;background-color:#87ce87}.theme-syndicate .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-syndicate .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-syndicate .Input--disabled{color:#777;border-color:#6b6b6b;border-color:rgba(107,107,107,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-syndicate .Input--fluid{display:block;width:auto}.theme-syndicate .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-syndicate .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-syndicate .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-syndicate .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-syndicate .TextArea{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-syndicate .TextArea--fluid{display:block;width:auto;height:auto}.theme-syndicate .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-syndicate .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-syndicate .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-syndicate .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-syndicate .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-syndicate .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-syndicate .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-syndicate .Knob__popupValue,.theme-syndicate .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .Knob__popupValue--right{top:.25rem;right:-50%}.theme-syndicate .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-syndicate .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-syndicate .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-syndicate .Knob__ringFillPivot{transform:rotate(135deg)}.theme-syndicate .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-syndicate .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-syndicate .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-syndicate .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-syndicate .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-syndicate .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-syndicate .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-syndicate .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-syndicate .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-syndicate .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-syndicate .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-syndicate .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-syndicate .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-syndicate .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-syndicate .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-syndicate .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-syndicate .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-syndicate .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-syndicate .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-syndicate .Slider:not(.Slider__disabled){cursor:e-resize}.theme-syndicate .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-syndicate .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-syndicate .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-syndicate .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-syndicate .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-syndicate .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-syndicate .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-syndicate .ProgressBar--color--default{border:.0833333333em solid #306330}.theme-syndicate .ProgressBar--color--default .ProgressBar__fill{background-color:#306330}.theme-syndicate .ProgressBar--color--disabled{border:1px solid #999}.theme-syndicate .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-syndicate .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-syndicate .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-syndicate .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-syndicate .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-syndicate .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-syndicate .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-syndicate .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-syndicate .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-syndicate .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-syndicate .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-syndicate .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-syndicate .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-syndicate .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-syndicate .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-syndicate .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-syndicate .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-syndicate .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-syndicate .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-syndicate .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-syndicate .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-syndicate .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-syndicate .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-syndicate .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-syndicate .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-syndicate .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-syndicate .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-syndicate .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-syndicate .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-syndicate .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-syndicate .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-syndicate .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--label{border:.0833333333em solid #657a94!important}.theme-syndicate .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-syndicate .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-syndicate .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-syndicate .Chat{color:#abc6ec}.theme-syndicate .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-syndicate .Chat__badge:before{content:"x"}.theme-syndicate .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-syndicate .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-syndicate .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-syndicate .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#2b0101}.theme-syndicate .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-syndicate .Chat__highlight{color:#000}.theme-syndicate .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-syndicate .ChatMessage{word-wrap:break-word}.theme-syndicate .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-syndicate .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-syndicate .Layout,.theme-syndicate .Layout *{scrollbar-base-color:#3a0202;scrollbar-face-color:#770303;scrollbar-3dlight-color:#4d0202;scrollbar-highlight-color:#4d0202;scrollbar-track-color:#3a0202;scrollbar-arrow-color:#fa2d2d;scrollbar-shadow-color:#770303}.theme-syndicate .Layout::-webkit-scrollbar,.theme-syndicate .Layout *::-webkit-scrollbar{width:12px}.theme-syndicate .Layout::-webkit-scrollbar-track,.theme-syndicate .Layout *::-webkit-scrollbar-track{background:#3a0202}.theme-syndicate .Layout::-webkit-scrollbar-thumb,.theme-syndicate .Layout *::-webkit-scrollbar-thumb{background:#770303}.theme-syndicate .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-syndicate .Layout__content--flexRow{display:flex;flex-flow:row}.theme-syndicate .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-syndicate .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-syndicate .Layout__content--noMargin{margin:0}.theme-syndicate .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#4d0202;background-image:linear-gradient(to bottom,#4d0202,#4d0202)}.theme-syndicate .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-syndicate .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-syndicate .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-syndicate .Window__contentPadding:after{height:0}.theme-syndicate .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-syndicate .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(108,22,22,.25);pointer-events:none}.theme-syndicate .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-syndicate .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-syndicate .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-syndicate .TitleBar{background-color:#910101;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-syndicate .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#910101;transition:color .25s,background-color .25s}.theme-syndicate .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-syndicate .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-syndicate .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-syndicate .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-syndicate .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-syndicate .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-syndicate .adminooc{color:#29ccbe}.theme-syndicate .debug{color:#8f39e6}.theme-syndicate .boxed_message{background:rgba(20,20,35,.25);border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-syndicate .boxed_message.left_align_text{text-align:left}.theme-syndicate .boxed_message.red_border{background:rgba(0,0,0,.2);border-color:red}.theme-syndicate .boxed_message.green_border{background:rgba(0,75,0,.25);border-color:#0f0}.theme-syndicate .boxed_message.purple_border{background:rgba(25,0,50,.25);border-color:#8000ff}.theme-syndicate .boxed_message.notice_border{background:rgba(0,0,75,.25);border-color:#6685f5}.theme-syndicate .boxed_message.thick_border{border-width:thick}.theme-paradise .color-black{color:#1a1a1a!important}.theme-paradise .color-white{color:#fff!important}.theme-paradise .color-red{color:#df3e3e!important}.theme-paradise .color-orange{color:#f37f33!important}.theme-paradise .color-yellow{color:#fbda21!important}.theme-paradise .color-olive{color:#cbe41c!important}.theme-paradise .color-green{color:#25ca4c!important}.theme-paradise .color-teal{color:#00d6cc!important}.theme-paradise .color-blue{color:#2e93de!important}.theme-paradise .color-violet{color:#7349cf!important}.theme-paradise .color-purple{color:#ad45d0!important}.theme-paradise .color-pink{color:#e34da1!important}.theme-paradise .color-brown{color:#b97447!important}.theme-paradise .color-grey{color:#848484!important}.theme-paradise .color-good{color:#68c22d!important}.theme-paradise .color-average{color:#f29a29!important}.theme-paradise .color-bad{color:#df3e3e!important}.theme-paradise .color-label{color:#955d4b!important}.theme-paradise .color-gold{color:#f3b22f!important}.theme-paradise .color-bg-black{background-color:#000!important}.theme-paradise .color-bg-white{background-color:#d9d9d9!important}.theme-paradise .color-bg-red{background-color:#bd2020!important}.theme-paradise .color-bg-orange{background-color:#d95e0c!important}.theme-paradise .color-bg-yellow{background-color:#d9b804!important}.theme-paradise .color-bg-olive{background-color:#9aad14!important}.theme-paradise .color-bg-green{background-color:#1b9638!important}.theme-paradise .color-bg-teal{background-color:#009a93!important}.theme-paradise .color-bg-blue{background-color:#1c71b1!important}.theme-paradise .color-bg-violet{background-color:#552dab!important}.theme-paradise .color-bg-purple{background-color:#8b2baa!important}.theme-paradise .color-bg-pink{background-color:#cf2082!important}.theme-paradise .color-bg-brown{background-color:#8c5836!important}.theme-paradise .color-bg-grey{background-color:#646464!important}.theme-paradise .color-bg-good{background-color:#4d9121!important}.theme-paradise .color-bg-average{background-color:#cd7a0d!important}.theme-paradise .color-bg-bad{background-color:#bd2020!important}.theme-paradise .color-bg-label{background-color:#6d4436!important}.theme-paradise .color-bg-gold{background-color:#d6920c!important}.theme-paradise .Section{position:relative;margin-bottom:.5em;background-color:#40071a;background-color:rgba(0,0,0,.5);box-sizing:border-box}.theme-paradise .Section:last-child{margin-bottom:0}.theme-paradise .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #208080}.theme-paradise .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-paradise .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-paradise .Section__rest{position:relative}.theme-paradise .Section__content{padding:.66em .5em}.theme-paradise .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-paradise .Section--fill{display:flex;flex-direction:column;height:100%}.theme-paradise .Section--fill>.Section__rest{flex-grow:1}.theme-paradise .Section--fill>.Section__rest>.Section__content{height:100%}.theme-paradise .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-paradise .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-paradise .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-paradise .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-paradise .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-paradise .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-paradise .Section .Section:first-child{margin-top:-.5em}.theme-paradise .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-paradise .Section .Section .Section .Section__titleText{font-size:1em}.theme-paradise .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-paradise .Button:last-child{margin-right:0;margin-bottom:0}.theme-paradise .Button .fa,.theme-paradise .Button .fas,.theme-paradise .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-paradise .Button--hasContent .fa,.theme-paradise .Button--hasContent .fas,.theme-paradise .Button--hasContent .far{margin-right:.25em}.theme-paradise .Button--hasContent.Button--iconRight .fa,.theme-paradise .Button--hasContent.Button--iconRight .fas,.theme-paradise .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-paradise .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-paradise .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-paradise .Button--circular{border-radius:50%}.theme-paradise .Button--compact{padding:0 .25em;line-height:1.333em}.theme-paradise .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-paradise .Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.theme-paradise .Button--color--black:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--black:hover{background-color:#101010;color:#fff}.theme-paradise .Button--color--white{transition:color .1s,background-color .1s;background-color:#d9d9d9;color:#000}.theme-paradise .Button--color--white:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-paradise .Button--color--red{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-paradise .Button--color--red:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--orange{transition:color .1s,background-color .1s;background-color:#d95e0c;color:#fff}.theme-paradise .Button--color--orange:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-paradise .Button--color--yellow{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-paradise .Button--color--yellow:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--olive{transition:color .1s,background-color .1s;background-color:#9aad14;color:#fff}.theme-paradise .Button--color--olive:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-paradise .Button--color--green{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.theme-paradise .Button--color--green:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-paradise .Button--color--teal{transition:color .1s,background-color .1s;background-color:#009a93;color:#fff}.theme-paradise .Button--color--teal:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-paradise .Button--color--blue{transition:color .1s,background-color .1s;background-color:#1c71b1;color:#fff}.theme-paradise .Button--color--blue:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-paradise .Button--color--violet{transition:color .1s,background-color .1s;background-color:#552dab;color:#fff}.theme-paradise .Button--color--violet:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-paradise .Button--color--purple{transition:color .1s,background-color .1s;background-color:#8b2baa;color:#fff}.theme-paradise .Button--color--purple:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-paradise .Button--color--pink{transition:color .1s,background-color .1s;background-color:#cf2082;color:#fff}.theme-paradise .Button--color--pink:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-paradise .Button--color--brown{transition:color .1s,background-color .1s;background-color:#8c5836;color:#fff}.theme-paradise .Button--color--brown:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-paradise .Button--color--grey{transition:color .1s,background-color .1s;background-color:#646464;color:#fff}.theme-paradise .Button--color--grey:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-paradise .Button--color--good{transition:color .1s,background-color .1s;background-color:#4d9121;color:#fff}.theme-paradise .Button--color--good:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-paradise .Button--color--average{transition:color .1s,background-color .1s;background-color:#cd7a0d;color:#fff}.theme-paradise .Button--color--average:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-paradise .Button--color--bad{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-paradise .Button--color--bad:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--label{transition:color .1s,background-color .1s;background-color:#6d4436;color:#fff}.theme-paradise .Button--color--label:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--label:hover{background-color:#8b5d4d;color:#fff}.theme-paradise .Button--color--gold{transition:color .1s,background-color .1s;background-color:#d6920c;color:#fff}.theme-paradise .Button--color--gold:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-paradise .Button--color--default{transition:color .1s,background-color .1s;background-color:#208080;color:#fff}.theme-paradise .Button--color--default:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--default:hover{background-color:#34a0a0;color:#fff}.theme-paradise .Button--color--caution{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-paradise .Button--color--caution:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--danger{transition:color .1s,background-color .1s;background-color:#8c1eff;color:#fff}.theme-paradise .Button--color--danger:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--danger:hover{background-color:#ae61ff;color:#fff}.theme-paradise .Button--color--transparent{background-color:rgba(128,13,51,0);color:rgba(255,255,255,.5);transition:color .1s,background-color .1s;background-color:#800d33;color:#fff}.theme-paradise .Button--color--transparent:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--transparent:hover{background-color:#a01f4a;color:#fff}.theme-paradise .Button--color--translucent{background-color:rgba(128,13,51,.6);color:rgba(255,255,255,.5);transition:color .1s,background-color .1s;background-color:#800d33;color:#fff}.theme-paradise .Button--color--translucent:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--translucent:hover{background-color:#a01f4a;color:#fff}.theme-paradise .Button--disabled{background-color:#999!important}.theme-paradise .Button--selected{transition:color .1s,background-color .1s;background-color:#bf6030;color:#fff}.theme-paradise .Button--selected:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--selected:hover{background-color:#d4835a;color:#fff}.theme-paradise .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-paradise .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;color:#e65c2e;background-color:rgba(0,0,0,.25);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-paradise .NumberInput--fluid{display:block}.theme-paradise .NumberInput__content{margin-left:.5em}.theme-paradise .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-paradise .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #e65c2e;background-color:#e65c2e}.theme-paradise .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,.25);color:#fff;text-align:right}.theme-paradise .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-paradise .Input--disabled{color:#777;border-color:#4a4a4a;border-color:rgba(74,74,74,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-paradise .Input--fluid{display:block;width:auto}.theme-paradise .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-paradise .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-paradise .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-paradise .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-paradise .TextArea{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-paradise .TextArea--fluid{display:block;width:auto;height:auto}.theme-paradise .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-paradise .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-paradise .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-paradise .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-paradise .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-paradise .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-paradise .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-paradise .Knob__popupValue,.theme-paradise .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .Knob__popupValue--right{top:.25rem;right:-50%}.theme-paradise .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-paradise .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-paradise .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-paradise .Knob__ringFillPivot{transform:rotate(135deg)}.theme-paradise .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-paradise .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-paradise .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-paradise .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-paradise .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-paradise .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-paradise .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-paradise .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-paradise .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-paradise .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-paradise .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-paradise .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-paradise .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-paradise .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-paradise .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-paradise .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-paradise .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-paradise .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--label .Knob__ringFill{stroke:#955d4b}.theme-paradise .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-paradise .Slider:not(.Slider__disabled){cursor:e-resize}.theme-paradise .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-paradise .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-paradise .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-paradise .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-paradise .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-paradise .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-paradise .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-paradise .ProgressBar--color--default{border:.0833333333em solid #1b6d6d}.theme-paradise .ProgressBar--color--default .ProgressBar__fill{background-color:#1b6d6d}.theme-paradise .ProgressBar--color--disabled{border:1px solid #999}.theme-paradise .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-paradise .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-paradise .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-paradise .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-paradise .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-paradise .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-paradise .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-paradise .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-paradise .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-paradise .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-paradise .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-paradise .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-paradise .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-paradise .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-paradise .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-paradise .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-paradise .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-paradise .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-paradise .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-paradise .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-paradise .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-paradise .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-paradise .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-paradise .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-paradise .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-paradise .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-paradise .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-paradise .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-paradise .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-paradise .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-paradise .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-paradise .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--label{border:.0833333333em solid #6d4436!important}.theme-paradise .ProgressBar--color--label .ProgressBar__fill{background-color:#6d4436}.theme-paradise .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-paradise .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-paradise .Chat{color:#abc6ec}.theme-paradise .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-paradise .Chat__badge:before{content:"x"}.theme-paradise .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-paradise .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-paradise .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-paradise .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#fff;background-color:#db2828}.theme-paradise .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-paradise .Chat__highlight{color:#000}.theme-paradise .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-paradise .ChatMessage{word-wrap:break-word}.theme-paradise .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-paradise .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-paradise .Layout,.theme-paradise .Layout *{scrollbar-base-color:#680b29;scrollbar-face-color:#99103d;scrollbar-3dlight-color:#800d33;scrollbar-highlight-color:#800d33;scrollbar-track-color:#680b29;scrollbar-arrow-color:#ea2e6c;scrollbar-shadow-color:#99103d}.theme-paradise .Layout::-webkit-scrollbar,.theme-paradise .Layout *::-webkit-scrollbar{width:12px}.theme-paradise .Layout::-webkit-scrollbar-track,.theme-paradise .Layout *::-webkit-scrollbar-track{background:#680b29}.theme-paradise .Layout::-webkit-scrollbar-thumb,.theme-paradise .Layout *::-webkit-scrollbar-thumb{background:#99103d}.theme-paradise .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-paradise .Layout__content--flexRow{display:flex;flex-flow:row}.theme-paradise .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-paradise .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-paradise .Layout__content--noMargin{margin:0}.theme-paradise .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#800d33;background-image:linear-gradient(to bottom,#80014b,#80460d)}.theme-paradise .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-paradise .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-paradise .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-paradise .Window__contentPadding:after{height:0}.theme-paradise .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-paradise .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(166,34,78,.25);pointer-events:none}.theme-paradise .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-paradise .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-paradise .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-paradise .TitleBar{background-color:#800d33;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-paradise .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#800d33;transition:color .25s,background-color .25s}.theme-paradise .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-paradise .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-paradise .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-paradise .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-paradise .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-paradise .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-paradise .adminooc{color:#29ccbe}.theme-paradise .debug{color:#8f39e6}.theme-paradise .boxed_message{background:rgba(0,0,0,.25);border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-paradise .boxed_message.left_align_text{text-align:left}.theme-paradise .boxed_message.red_border{background:rgba(0,0,0,.25);border-color:#a00}.theme-paradise .boxed_message.green_border{background:rgba(0,0,0,.25);border-color:#0f0}.theme-paradise .boxed_message.purple_border{background:rgba(0,0,0,.25);border-color:#8000ff}.theme-paradise .boxed_message.notice_border{background:rgba(0,0,0,.25);border-color:#6685f5}.theme-paradise .boxed_message.thick_border{border-width:thick} +html,body{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,*:before,*:after{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:6px 0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-gold{color:#f3b22f!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.color-bg-gold{background-color:#d6920c!important}.color-border-black{border-color:#1a1a1a!important}.color-border-white{border-color:#fff!important}.color-border-red{border-color:#df3e3e!important}.color-border-orange{border-color:#f37f33!important}.color-border-yellow{border-color:#fbda21!important}.color-border-olive{border-color:#cbe41c!important}.color-border-green{border-color:#25ca4c!important}.color-border-teal{border-color:#00d6cc!important}.color-border-blue{border-color:#2e93de!important}.color-border-violet{border-color:#7349cf!important}.color-border-purple{border-color:#ad45d0!important}.color-border-pink{border-color:#e34da1!important}.color-border-brown{border-color:#b97447!important}.color-border-grey{border-color:#848484!important}.color-border-good{border-color:#68c22d!important}.color-border-average{border-color:#f29a29!important}.color-border-bad{border-color:#df3e3e!important}.color-border-label{border-color:#8b9bb0!important}.color-border-gold{border-color:#f3b22f!important}.debug-layout,.debug-layout *:not(g):not(path){color:rgba(255,255,255,.9)!important;background:rgba(0,0,0,0)!important;outline:1px solid rgba(255,255,255,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout *:not(g):not(path):hover{outline-color:rgba(255,255,255,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.outline-color-gold{outline:.167rem solid #f3b22f!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .fas,.Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--hasContent .fa,.Button--hasContent .fas,.Button--hasContent .far{margin-right:.25em}.Button--hasContent.Button--iconRight .fa,.Button--hasContent.Button--iconRight .fas,.Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--multiLine{white-space:normal;word-wrap:break-word}.Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.Button--color--black:focus{transition:color .25s,background-color .25s}.Button--color--black:hover{background-color:#101010;color:#fff}.Button--color--white{transition:color .1s,background-color .1s;background-color:#d9d9d9;color:#000}.Button--color--white:focus{transition:color .25s,background-color .25s}.Button--color--white:hover{background-color:#f8f8f8;color:#000}.Button--color--red{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.Button--color--red:focus{transition:color .25s,background-color .25s}.Button--color--red:hover{background-color:#d93f3f;color:#fff}.Button--color--orange{transition:color .1s,background-color .1s;background-color:#d95e0c;color:#fff}.Button--color--orange:focus{transition:color .25s,background-color .25s}.Button--color--orange:hover{background-color:#ef7e33;color:#fff}.Button--color--yellow{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.Button--color--yellow:focus{transition:color .25s,background-color .25s}.Button--color--yellow:hover{background-color:#f5d523;color:#000}.Button--color--olive{transition:color .1s,background-color .1s;background-color:#9aad14;color:#fff}.Button--color--olive:focus{transition:color .25s,background-color .25s}.Button--color--olive:hover{background-color:#bdd327;color:#fff}.Button--color--green{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.Button--color--green:focus{transition:color .25s,background-color .25s}.Button--color--green:hover{background-color:#2fb94f;color:#fff}.Button--color--teal{transition:color .1s,background-color .1s;background-color:#009a93;color:#fff}.Button--color--teal:focus{transition:color .25s,background-color .25s}.Button--color--teal:hover{background-color:#10bdb6;color:#fff}.Button--color--blue{transition:color .1s,background-color .1s;background-color:#1c71b1;color:#fff}.Button--color--blue:focus{transition:color .25s,background-color .25s}.Button--color--blue:hover{background-color:#308fd6;color:#fff}.Button--color--violet{transition:color .1s,background-color .1s;background-color:#552dab;color:#fff}.Button--color--violet:focus{transition:color .25s,background-color .25s}.Button--color--violet:hover{background-color:#7249ca;color:#fff}.Button--color--purple{transition:color .1s,background-color .1s;background-color:#8b2baa;color:#fff}.Button--color--purple:focus{transition:color .25s,background-color .25s}.Button--color--purple:hover{background-color:#aa46ca;color:#fff}.Button--color--pink{transition:color .1s,background-color .1s;background-color:#cf2082;color:#fff}.Button--color--pink:focus{transition:color .25s,background-color .25s}.Button--color--pink:hover{background-color:#e04ca0;color:#fff}.Button--color--brown{transition:color .1s,background-color .1s;background-color:#8c5836;color:#fff}.Button--color--brown:focus{transition:color .25s,background-color .25s}.Button--color--brown:hover{background-color:#ae724c;color:#fff}.Button--color--grey{transition:color .1s,background-color .1s;background-color:#646464;color:#fff}.Button--color--grey:focus{transition:color .25s,background-color .25s}.Button--color--grey:hover{background-color:#818181;color:#fff}.Button--color--good{transition:color .1s,background-color .1s;background-color:#4d9121;color:#fff}.Button--color--good:focus{transition:color .25s,background-color .25s}.Button--color--good:hover{background-color:#67b335;color:#fff}.Button--color--average{transition:color .1s,background-color .1s;background-color:#cd7a0d;color:#fff}.Button--color--average:focus{transition:color .25s,background-color .25s}.Button--color--average:hover{background-color:#eb972b;color:#fff}.Button--color--bad{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.Button--color--bad:focus{transition:color .25s,background-color .25s}.Button--color--bad:hover{background-color:#d93f3f;color:#fff}.Button--color--label{transition:color .1s,background-color .1s;background-color:#657a94;color:#fff}.Button--color--label:focus{transition:color .25s,background-color .25s}.Button--color--label:hover{background-color:#8a9aae;color:#fff}.Button--color--gold{transition:color .1s,background-color .1s;background-color:#d6920c;color:#fff}.Button--color--gold:focus{transition:color .25s,background-color .25s}.Button--color--gold:hover{background-color:#eeaf30;color:#fff}.Button--color--default{transition:color .1s,background-color .1s;background-color:#3e6189;color:#fff}.Button--color--default:focus{transition:color .25s,background-color .25s}.Button--color--default:hover{background-color:#567daa;color:#fff}.Button--color--caution{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.Button--color--caution:focus{transition:color .25s,background-color .25s}.Button--color--caution:hover{background-color:#f5d523;color:#000}.Button--color--danger{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.Button--color--danger:focus{transition:color .25s,background-color .25s}.Button--color--danger:hover{background-color:#d93f3f;color:#fff}.Button--color--transparent{transition:color .1s,background-color .1s;background-color:rgba(32,32,32,0);color:rgba(255,255,255,.5)}.Button--color--transparent:focus{transition:color .25s,background-color .25s}.Button--color--transparent:hover{background-color:rgba(50,50,50,.81);color:#fff}.Button--color--translucent{transition:color .1s,background-color .1s;background-color:rgba(32,32,32,.6);color:rgba(255,255,255,.5)}.Button--color--translucent:focus{transition:color .25s,background-color .25s}.Button--color--translucent:hover{background-color:rgba(54,54,54,.925);color:#fff}.Button--disabled{background-color:#999!important}.Button--selected{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.Button--selected:focus{transition:color .25s,background-color .25s}.Button--selected:hover{background-color:#2fb94f;color:#fff}.Button--modal{float:right;z-index:1;margin-top:-.5rem}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Dropdown{position:relative;align-items:center}.Dropdown__control{display:inline-block;align-items:center;font-family:Verdana,sans-serif;font-size:1em;width:8.3333333333em;line-height:1.3333333333em;-ms-user-select:none;user-select:none}.Dropdown__arrow-button{float:right;padding-left:.35em;width:1.2em;height:1.8333333333em;border-left:.0833333333em solid #000;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;align-items:center;z-index:5;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-scroll{overflow-y:scroll}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s ease-out}.Dropdown__menuentry.selected{background-color:rgba(255,255,255,.5)!important;transition:background-color 0ms}.Dropdown__menuentry:hover{background-color:rgba(255,255,255,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.Dropdown__selected-text{display:inline-block;text-overflow:ellipsis;white-space:nowrap;height:1.4166666667em;width:calc(100% - 1.2em);text-align:left;padding-top:2.5px}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:block}.Flex--iefix.Flex--inline,.Flex__item--iefix{display:inline-block}.Flex--iefix--column>.Flex__item--iefix{display:block}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.Knob__popupValue,.Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Knob__popupValue--right{top:.25rem;right:-50%}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.LabeledList__breakContents{word-break:break-all;word-wrap:break-word}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem;scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--color--gold{color:#fff;background-color:#825d13}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--disabled{border:1px solid #999}.ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.ProgressBar--color--black{border:.0833333333em solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__rest{position:relative}.Section__content{padding:.66em .5em}.Section--fitted>.Section__rest>.Section__content{padding:0}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--fill>.Section__rest{flex-grow:1}.Section--fill>.Section__rest>.Section__content{height:100%}.Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:hidden}.Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.Section .Section:first-child{margin-top:-.5em}.Section .Section .Section__titleText{font-size:1.0833333333em}.Section .Section .Section .Section__titleText{font-size:1em}.Slider:not(.Slider__disabled){cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--fill{height:100%}.Stack--horizontal>.Stack__item{margin-left:.5em}.Stack--horizontal>.Stack__item:first-child{margin-left:0}.Stack--vertical>.Stack__item{margin-top:.5em}.Stack--vertical>.Stack__item:first-child{margin-top:0}.Stack--zebra>.Stack__item:nth-child(2n){background-color:#131313}.Stack--horizontal>.Stack__divider:not(.Stack__divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--vertical>.Stack__divider:not(.Stack__divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__row--header .Table__cell,.Table__cell--header{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#131313}.Tabs--fill{height:100%}.Section .Tabs{background-color:rgba(0,0,0,0)}.Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(255,255,255,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075);transition:background-color 0}.Tab--selected{background-color:rgba(255,255,255,.125);color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.Tabs--vertical .Tab--selected{border-left:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#8b9bb0}.Tab--selected.Tab--color--gold{color:#f6c563}.Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#f3b22f}.Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#f3b22f}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:opacity .15s ease-out;background-color:#000;color:#fff;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em;max-width:20.8333333333em}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid rgba(140,140,140,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;top:1em;left:.75em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout::-webkit-scrollbar,.Layout *::-webkit-scrollbar{width:12px}.Layout::-webkit-scrollbar-track,.Layout *::-webkit-scrollbar-track{background:#181818}.Layout::-webkit-scrollbar-thumb,.Layout *::-webkit-scrollbar-thumb{background:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.Layout__content--flexRow{display:flex;flex-flow:row}.Layout__content--flexColumn{display:flex;flex-flow:column}.Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.Layout__content--noMargin{margin:0}.Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(to bottom,#202020,#202020)}.Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.emoji16x16{vertical-align:middle}a{color:#397ea5}a.popt{text-decoration:none}.popup{position:fixed;top:50%;left:50%;background:#ddd}.popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.popup .close:hover{background:#999}.popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.popup input[type=text]:hover,.popup input[type=text]:active,.popup input[type=text]:focus{border-color:green}.popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.popup input[type=submit]:hover,.popup input[type=submit]:focus,.popup input[type=submit]:active{background:#aaa;cursor:pointer}.changeFont{padding:10px}.changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.changeFont a:hover{background:#ccc}.highlightPopup{padding:10px;text-align:center}.highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.highlightPopup input.highlightColor{background-color:#ff0}.highlightPopup input.highlightTermSubmit{margin-top:5px}.contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.contextMenu a:hover{background-color:#ccc}.filterMessages{padding:5px}.filterMessages div{padding:2px 0}.icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:link,.motd a:active,.motd a:hover{color:#a4bad6}.italic,.italics,.emote{font-style:italic}.highlight{background:#ff0}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}em{font-style:normal;font-weight:700}.darkmblue{color:#6685f5}.prefix,.ooc{font-weight:700}.looc{color:#69c;font-weight:700}.adminobserverooc{color:#09c;font-weight:700}.adminooc{color:#b82e00;font-weight:700}.adminobserver{color:#960;font-weight:700}.admin{color:#386aff;font-weight:700}.adminsay{color:#9611d4;font-weight:700}.mentorhelp{color:#07b;font-weight:700}.adminhelp{color:#a00;font-weight:700}.playerreply{color:#80b;font-weight:700}.pmsend{color:#6685f5}.debug{color:#6d2f83}.name,.yell{font-weight:700}.siliconsay{font-family:Courier New,Courier,monospace}.deadsay{color:#e2c1ff}.radio{color:#20b142}.deptradio{color:#939}.comradio{color:#5f5cff}.syndradio{color:#8f4a4b}.dsquadradio{color:#998599}.resteamradio{color:#18bc46}.airadio{color:#ff5ed7}.centradio{color:#2681a5}.secradio{color:#dd3535}.engradio{color:#feac20}.medradio{color:#00b5ad}.sciradio{color:#c68cfa}.supradio{color:#b88646}.srvradio{color:#bbd164}.proradio{color:#b84f92}.admin_channel{color:#03fc9d;font-weight:700}.all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.mentor_channel{color:#775bff;font-weight:700}.mentor_channel_admin{color:#a35cff;font-weight:700}.djradio{color:#960}.binaryradio{color:#1b00fb;font-family:Courier New,Courier,monospace}.mommiradio{color:#6685f5}.alert{color:#d82020}h1.alert,h2.alert{color:#a4bad6}.ghostalert{color:#cc00c6;font-style:italic;font-weight:700}.emote{font-style:italic}.selecteddna{color:#a4bad6;background-color:#001b1b}.attack{color:red}.moderate{color:#c00}.disarm{color:#900}.passive{color:#600}.warning{color:#c51e1e;font-style:italic}.boldwarning{color:#c51e1e;font-style:italic;font-weight:700}.danger{color:#c51e1e;font-weight:700}.userdanger{color:#c51e1e;font-weight:700;font-size:120%}.biggerdanger{color:red;font-weight:700;font-size:150%}.info{color:#9ab0ff}.notice{color:#6685f5}.boldnotice{color:#6685f5;font-weight:700}.suicide{color:#ff5050;font-style:italic}.green{color:#03bb39}.pr_announce,.boldannounceic,.boldannounceooc{color:#c51e1e;font-weight:700}.greenannounce{color:#059223;font-weight:700}.alien{color:#c433c4}.noticealien{color:#00c000}.alertalien{color:#00c000;font-weight:700}.terrorspider{color:#cf52fa}.dantalion{color:#8b2c5e}.chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.chaosgood{color:#19e0c0;font-weight:700}.chaosneutral{color:#479ac0;font-weight:700}.chaosbad{color:#9047c0;font-weight:700}.chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.sinister{color:purple;font-weight:700;font-style:italic}.medal{font-weight:700}.blob{color:#006221;font-weight:700;font-style:italic}.confirm{color:#00af3b}.rose{color:#ff5050}.sans{font-family:Comic Sans MS,cursive,sans-serif}.wingdings{font-family:Wingdings,Webdings}.robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.ancient{color:#008b8b;font-style:italic}.newscaster{color:#c00}.mod{color:#735638;font-weight:700}.modooc{color:#184880;font-weight:700}.adminmod{color:#f0aa14;font-weight:700}.tajaran{color:#803b56}.skrell{color:#00ced1}.solcom{color:#8282fb}.com_srus{color:#7c4848}.soghun{color:#228b22}.changeling{color:#00b4de}.vox{color:#a0a}.diona{color:#804000;font-weight:700}.trinary{color:#727272}.kidan{color:#c64c05}.slime{color:#07a}.drask{color:#a3d4eb;font-family:Arial Black}.moth{color:#869b29;font-family:Copperplate}.clown{color:red}.vulpkanin{color:#b97a57}.abductor{color:purple;font-style:italic}.mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.rough{font-family:Trebuchet MS,cursive,sans-serif}.say_quote{font-family:Georgia,Verdana,sans-serif}.cult{color:purple;font-weight:700;font-style:italic}.cultspeech{color:#af0000;font-style:italic}.cultitalic{color:#a60000;font-style:italic}.cultlarge{color:#a60000;font-weight:700;font-size:120%}.narsie{color:#a60000;font-weight:700;font-size:300%}.narsiesmall{color:#a60000;font-weight:700;font-size:200%}.zombie{color:#7c4848}.zombielarge{color:#7c4848;font-weight:700;font-size:120%}.interface{color:#9031c4}.big{font-size:150%}.reallybig{font-size:175%}.greentext{color:#0f0;font-size:150%}.redtext{color:red;font-size:150%}.bold{font-weight:700}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.center{text-align:center}.red{color:red}.purple{color:#9031c4}.skeleton{color:#c8c8c8;font-weight:700;font-style:italic}.gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.orange{color:orange}.orangei{color:orange;font-style:italic}.orangeb{color:orange;font-weight:700}.resonate{color:#298f85}.healthscan_oxy{color:#5cc9ff}.revennotice{color:#6685f5}.revenboldnotice{color:#6685f5;font-weight:700}.revenbignotice{color:#6685f5;font-weight:700;font-size:120%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:120%}.specialnotice{color:#4a6f82;font-weight:700;font-size:120%}.good{color:green}.average{color:#ff8000}.bad{color:red}.italics,.talkinto{font-style:italic}.whisper{font-style:italic;color:#ccc}.recruit{color:#5c00e6;font-weight:700;font-style:italic}.memo{color:#638500;text-align:center}.memoedit{text-align:center;font-size:75%}.connectionClosed,.fatalError{background:red;color:#fff;padding:5px}.connectionClosed.restored{background:green}.internal.boldnshit{color:#6685f5;font-weight:700}.rebooting{background:#2979af;color:#fff;padding:5px}.rebooting a{color:#fff!important;text-decoration-color:#fff!important}.text-normal{font-weight:400;font-style:normal}.hidden{display:none;visibility:hidden}.colossus{color:#7f282a;font-size:175%}.hierophant{color:#609;font-weight:700;font-style:italic}.hierophant_warning{color:#609;font-style:italic}.emoji{max-height:16px;max-width:16px}.adminticket{color:#3daf21;font-weight:700}.adminticketalt{color:#ccb847;font-weight:700}span.body .codephrases{color:#55f}span.body .coderesponses{color:#f33}.announcement h1,.announcement h2{color:#a4bad6;margin:8pt 0;line-height:1.2}.announcement p{color:#d82020;line-height:1.3}.announcement.minor h1{font-size:180%}.announcement.minor h2{font-size:170%}.announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.bolditalics{font-style:italic;font-weight:700}.boxed_message{background:#1b1c1e;border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.boxed_message.left_align_text{text-align:left}.boxed_message.red_border{background:#1e1b1b;border-color:#a00}.boxed_message.green_border{background:#1b1e1c;border-color:#0f0}.boxed_message.purple_border{background:#1d1c1f;border-color:#8000ff}.boxed_message.notice_border{background:#1b1c1e;border-color:#6685f5}.boxed_message.thick_border{border-width:thick}.oxygen{color:#449dff}.nitrogen{color:#f94541}.carbon_dioxide{color:#ccc}.plasma{color:#eb6b00}.sleeping_agent{color:#f28b89}.agent_b{color:teal}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-gold{color:#e39b0d!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .color-bg-gold{background-color:#bd810b!important}.theme-light .color-border-black{border-color:#000!important}.theme-light .color-border-white{border-color:#e6e6e6!important}.theme-light .color-border-red{border-color:#c82121!important}.theme-light .color-border-orange{border-color:#e6630d!important}.theme-light .color-border-yellow{border-color:#e5c304!important}.theme-light .color-border-olive{border-color:#a3b816!important}.theme-light .color-border-green{border-color:#1d9f3b!important}.theme-light .color-border-teal{border-color:#00a39c!important}.theme-light .color-border-blue{border-color:#1e78bb!important}.theme-light .color-border-violet{border-color:#5a30b5!important}.theme-light .color-border-purple{border-color:#932eb4!important}.theme-light .color-border-pink{border-color:#db228a!important}.theme-light .color-border-brown{border-color:#955d39!important}.theme-light .color-border-grey{border-color:#e6e6e6!important}.theme-light .color-border-good{border-color:#529923!important}.theme-light .color-border-average{border-color:#da810e!important}.theme-light .color-border-bad{border-color:#c82121!important}.theme-light .color-border-label{border-color:#353535!important}.theme-light .color-border-gold{border-color:#e39b0d!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#fff}.theme-light .Tabs--fill{height:100%}.theme-light .Section .Tabs{background-color:rgba(0,0,0,0)}.theme-light .Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.theme-light .Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.theme-light .Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.theme-light .Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.theme-light .Tab:not(.Tab--selected):hover{background-color:rgba(0,0,0,.075);transition:background-color 0}.theme-light .Tab--selected{background-color:rgba(0,0,0,.125);color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.theme-light .Tabs--vertical .Tab--selected{border-left:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#353535}.theme-light .Tab--selected.Tab--color--gold{color:#f4b73f}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#e39b0d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#e39b0d}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__rest{position:relative}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--fill>.Section__rest{flex-grow:1}.theme-light .Section--fill>.Section__rest>.Section__content{height:100%}.theme-light .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-light .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-light .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-light .Section .Section:first-child{margin-top:-.5em}.theme-light .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-light .Section .Section .Section .Section__titleText{font-size:1em}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .fas,.theme-light .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .fas,.theme-light .Button--hasContent .far{margin-right:.25em}.theme-light .Button--hasContent.Button--iconRight .fa,.theme-light .Button--hasContent.Button--iconRight .fas,.theme-light .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-light .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-light .Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.theme-light .Button--color--black:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--black:hover{background-color:#101010;color:#fff}.theme-light .Button--color--white{transition:color .1s,background-color .1s;background-color:#bfbfbf;color:#000}.theme-light .Button--color--white:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--white:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--red{transition:color .1s,background-color .1s;background-color:#a61c1c;color:#fff}.theme-light .Button--color--red:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--red:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--orange{transition:color .1s,background-color .1s;background-color:#c0530b;color:#fff}.theme-light .Button--color--orange:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--orange:hover{background-color:#e76d1d;color:#fff}.theme-light .Button--color--yellow{transition:color .1s,background-color .1s;background-color:#bfa303;color:#fff}.theme-light .Button--color--yellow:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--yellow:hover{background-color:#e7c714;color:#fff}.theme-light .Button--color--olive{transition:color .1s,background-color .1s;background-color:#889912;color:#fff}.theme-light .Button--color--olive:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--olive:hover{background-color:#a9bc25;color:#fff}.theme-light .Button--color--green{transition:color .1s,background-color .1s;background-color:#188532;color:#fff}.theme-light .Button--color--green:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--green:hover{background-color:#2ba648;color:#fff}.theme-light .Button--color--teal{transition:color .1s,background-color .1s;background-color:#008882;color:#fff}.theme-light .Button--color--teal:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--teal:hover{background-color:#10a9a2;color:#fff}.theme-light .Button--color--blue{transition:color .1s,background-color .1s;background-color:#19649c;color:#fff}.theme-light .Button--color--blue:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--blue:hover{background-color:#2c81c0;color:#fff}.theme-light .Button--color--violet{transition:color .1s,background-color .1s;background-color:#4b2897;color:#fff}.theme-light .Button--color--violet:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--violet:hover{background-color:#653db9;color:#fff}.theme-light .Button--color--purple{transition:color .1s,background-color .1s;background-color:#7a2696;color:#fff}.theme-light .Button--color--purple:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--purple:hover{background-color:#9a3bb9;color:#fff}.theme-light .Button--color--pink{transition:color .1s,background-color .1s;background-color:#b61d73;color:#fff}.theme-light .Button--color--pink:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--pink:hover{background-color:#d93591;color:#fff}.theme-light .Button--color--brown{transition:color .1s,background-color .1s;background-color:#7c4d2f;color:#fff}.theme-light .Button--color--brown:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--brown:hover{background-color:#9c6745;color:#fff}.theme-light .Button--color--grey{transition:color .1s,background-color .1s;background-color:#bfbfbf;color:#000}.theme-light .Button--color--grey:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--grey:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--good{transition:color .1s,background-color .1s;background-color:#44801d;color:#fff}.theme-light .Button--color--good:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--good:hover{background-color:#5d9f31;color:#fff}.theme-light .Button--color--average{transition:color .1s,background-color .1s;background-color:#b56b0b;color:#fff}.theme-light .Button--color--average:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--average:hover{background-color:#dc891d;color:#fff}.theme-light .Button--color--bad{transition:color .1s,background-color .1s;background-color:#a61c1c;color:#fff}.theme-light .Button--color--bad:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--bad:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--label{transition:color .1s,background-color .1s;background-color:#2c2c2c;color:#fff}.theme-light .Button--color--label:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--label:hover{background-color:#424242;color:#fff}.theme-light .Button--color--gold{transition:color .1s,background-color .1s;background-color:#bd810b;color:#fff}.theme-light .Button--color--gold:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--gold:hover{background-color:#e5a11c;color:#fff}.theme-light .Button--color--default{transition:color .1s,background-color .1s;background-color:#bbb;color:#000}.theme-light .Button--color--default:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--default:hover{background-color:#e3e3e3;color:#000}.theme-light .Button--color--caution{transition:color .1s,background-color .1s;background-color:#be6209;color:#fff}.theme-light .Button--color--caution:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-light .Button--color--danger{transition:color .1s,background-color .1s;background-color:#9a9d00;color:#fff}.theme-light .Button--color--danger:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-light .Button--color--transparent{transition:color .1s,background-color .1s;background-color:rgba(238,238,238,0);color:rgba(0,0,0,.5)}.theme-light .Button--color--transparent:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--transparent:hover{background-color:rgba(255,255,255,.81);color:#000}.theme-light .Button--color--translucent{transition:color .1s,background-color .1s;background-color:rgba(238,238,238,.6);color:rgba(0,0,0,.5)}.theme-light .Button--color--translucent:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--translucent:hover{background-color:rgba(253,253,253,.925);color:#000}.theme-light .Button--disabled{background-color:#363636!important}.theme-light .Button--selected{transition:color .1s,background-color .1s;background-color:#0668b8;color:#fff}.theme-light .Button--selected:focus{transition:color .25s,background-color .25s}.theme-light .Button--selected:hover{background-color:#1785df;color:#fff}.theme-light .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#e6e6e6;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#e6e6e6;color:#000;text-align:right}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#000;background-color:#e6e6e6;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-light .Input--disabled{color:#777;border-color:#000;border-color:rgba(0,0,0,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#000;color:inherit}.theme-light .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-light .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#e6e6e6;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-light .Knob__popupValue,.theme-light .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .Knob__popupValue--right{top:.25rem;right:-50%}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Knob--color--gold .Knob__ringFill{stroke:#e39b0d}.theme-light .Slider:not(.Slider__disabled){cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--disabled{border:1px solid #999}.theme-light .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-light .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border:.0833333333em solid #c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border:.0833333333em solid #bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border:.0833333333em solid #889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border:.0833333333em solid #188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border:.0833333333em solid #008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border:.0833333333em solid #19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border:.0833333333em solid #4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border:.0833333333em solid #7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border:.0833333333em solid #b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border:.0833333333em solid #7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--good{border:.0833333333em solid #44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border:.0833333333em solid #b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border:.0833333333em solid #2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .ProgressBar--color--gold{border:.0833333333em solid #bd810b!important}.theme-light .ProgressBar--color--gold .ProgressBar__fill{background-color:#bd810b}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout::-webkit-scrollbar,.theme-light .Layout *::-webkit-scrollbar{width:12px}.theme-light .Layout::-webkit-scrollbar-track,.theme-light .Layout *::-webkit-scrollbar-track{background:#f2f2f2}.theme-light .Layout::-webkit-scrollbar-thumb,.theme-light .Layout *::-webkit-scrollbar-thumb{background:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-light .Layout__content--flexRow{display:flex;flex-flow:row}.theme-light .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-light .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-light .Layout__content--noMargin{margin:0}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(to bottom,#eee,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(252,252,252,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s,background-color .25s}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light html,.theme-light body{padding:0;margin:0;height:100%;color:#000}.theme-light body{background:#fff;font-family:Verdana,sans-serif;font-size:13px;line-height:1.2;overflow-x:hidden;overflow-y:scroll;word-wrap:break-word}.theme-light img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}.theme-light img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.theme-light a{color:#00f}.theme-light a.popt{text-decoration:none}.theme-light .popup{position:fixed;top:50%;left:50%;background:#ddd}.theme-light .popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.theme-light .popup .close:hover{background:#999}.theme-light .popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.theme-light .popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.theme-light .popup input[type=text]:hover,.theme-light .popup input[type=text]:active,.theme-light .popup input[type=text]:focus{border-color:green}.theme-light .popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.theme-light .popup input[type=submit]:hover,.theme-light .popup input[type=submit]:focus,.theme-light .popup input[type=submit]:active{background:#aaa;cursor:pointer}.theme-light .changeFont{padding:10px}.theme-light .changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.theme-light .changeFont a:hover{background:#ccc}.theme-light .highlightPopup{padding:10px;text-align:center}.theme-light .highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.theme-light .highlightPopup input.highlightColor{background-color:#ff0}.theme-light .highlightPopup input.highlightTermSubmit{margin-top:5px}.theme-light .contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.theme-light .contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.theme-light .contextMenu a:hover{background-color:#ccc}.theme-light .filterMessages{padding:5px}.theme-light .filterMessages div{padding:2px 0}.theme-light .icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.theme-light .motd{color:#638500;font-family:Verdana,sans-serif;white-space:normal}.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6{color:#638500;text-decoration:underline}.theme-light .motd a,.theme-light .motd a:link,.theme-light .motd a:active,.theme-light .motd a:hover{color:#638500}.theme-light .italic,.theme-light .italics,.theme-light .emote{font-style:italic}.theme-light .highlight{background:#ff0}.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f;font-family:Georgia,Verdana,sans-serif}.theme-light em{font-style:normal;font-weight:700}.theme-light .darkmblue{color:#00f}.theme-light .prefix,.theme-light .ooc{font-weight:700}.theme-light .looc{color:#69c;font-weight:700}.theme-light .adminobserverooc{color:#09c;font-weight:700}.theme-light .adminooc{color:#b82e00;font-weight:700}.theme-light .adminobserver{color:#960;font-weight:700}.theme-light .admin{color:#386aff;font-weight:700}.theme-light .adminsay{color:#9611d4;font-weight:700}.theme-light .mentorhelp{color:#07b;font-weight:700}.theme-light .adminhelp{color:#a00;font-weight:700}.theme-light .playerreply{color:#80b;font-weight:700}.theme-light .pmsend{color:#00f}.theme-light .debug{color:#6d2f83}.theme-light .name,.theme-light .yell{font-weight:700}.theme-light .siliconsay{font-family:Courier New,Courier,monospace}.theme-light .deadsay{color:#5c00e6}.theme-light .radio{color:#408010}.theme-light .deptradio{color:#939}.theme-light .comradio{color:#204090}.theme-light .syndradio{color:#6d3f40}.theme-light .dsquadradio{color:#686868}.theme-light .resteamradio{color:#18bc46}.theme-light .airadio{color:#f0f}.theme-light .centradio{color:#5c5c7c}.theme-light .secradio{color:#a30000}.theme-light .engradio{color:#a66300}.theme-light .medradio{color:#009190}.theme-light .sciradio{color:#939}.theme-light .supradio{color:#7f6539}.theme-light .srvradio{color:#80a000}.theme-light .proradio{color:#e3027a}.theme-light .admin_channel{color:#9a04d1;font-weight:700}.theme-light .all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.theme-light .mentor_channel{color:#775bff;font-weight:700}.theme-light .mentor_channel_admin{color:#a35cff;font-weight:700}.theme-light .djradio{color:#630}.theme-light .binaryradio{color:#0b0050;font-family:Courier New,Courier,monospace}.theme-light .mommiradio{color:navy}.theme-light .alert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .ghostalert{color:#5c00e6;font-style:italic;font-weight:700}.theme-light .emote{font-style:italic}.theme-light .selecteddna{color:#fff;background-color:#001b1b}.theme-light .attack{color:red}.theme-light .moderate{color:#c00}.theme-light .disarm{color:#900}.theme-light .passive{color:#600}.theme-light .warning{color:red;font-style:italic}.theme-light .boldwarning{color:red;font-style:italic;font-weight:700}.theme-light .danger{color:red;font-weight:700}.theme-light .userdanger{color:red;font-weight:700;font-size:120%}.theme-light .biggerdanger{color:red;font-weight:700;font-size:150%}.theme-light .info{color:#00c}.theme-light .notice{color:#009}.theme-light .boldnotice{color:#009;font-weight:700}.theme-light .suicide{color:#ff5050;font-style:italic}.theme-light .green{color:#03bb39}.theme-light .pr_announce{color:#228b22;font-weight:700}.theme-light .boldannounceic,.theme-light .boldannounceooc{color:red;font-weight:700}.theme-light .greenannounce{color:#0f0;font-weight:700}.theme-light .alien{color:#543354}.theme-light .noticealien{color:#00c000}.theme-light .alertalien{color:#00c000;font-weight:700}.theme-light .terrorspider{color:#320e32}.theme-light .dantalion{color:#6a2148}.theme-light .chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.theme-light .chaosgood{color:#19e0c0;font-weight:700}.theme-light .chaosneutral{color:#479ac0;font-weight:700}.theme-light .chaosbad{color:#9047c0;font-weight:700}.theme-light .chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.theme-light .sinister{color:purple;font-weight:700;font-style:italic}.theme-light .blob{color:#006221;font-weight:700;font-style:italic}.theme-light .confirm{color:#00af3b}.theme-light .rose{color:#ff5050}.theme-light .sans{font-family:Comic Sans MS,cursive,sans-serif}.theme-light .wingdings{font-family:Wingdings,Webdings}.theme-light .robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.theme-light .ancient{color:#008b8b;font-style:italic}.theme-light .newscaster{color:maroon}.theme-light .mod{color:#735638;font-weight:700}.theme-light .modooc{color:#184880;font-weight:700}.theme-light .adminmod{color:#402a14;font-weight:700}.theme-light .tajaran{color:#803b56}.theme-light .skrell{color:#00ced1}.theme-light .solcom{color:#22228b}.theme-light .com_srus{color:#7c4848}.theme-light .soghun{color:#228b22}.theme-light .changeling{color:purple}.theme-light .vox{color:#a0a}.theme-light .diona{color:#804000;font-weight:700}.theme-light .trinary{color:#727272}.theme-light .kidan{color:#664205}.theme-light .slime{color:#07a}.theme-light .drask{color:#a3d4eb;font-family:Arial Black}.theme-light .moth{color:#869b29;font-family:Copperplate}.theme-light .clown{color:red}.theme-light .vulpkanin{color:#b97a57}.theme-light .abductor{color:purple;font-style:italic}.theme-light .mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.theme-light .rough{font-family:Trebuchet MS,cursive,sans-serif}.theme-light .say_quote{font-family:Georgia,Verdana,sans-serif}.theme-light .cult{color:purple;font-weight:700;font-style:italic}.theme-light .cultspeech{color:#7f0000;font-style:italic}.theme-light .cultitalic{color:#960000;font-style:italic}.theme-light .cultlarge{color:#960000;font-weight:700;font-size:120%}.theme-light .narsie{color:#960000;font-weight:700;font-size:300%}.theme-light .narsiesmall{color:#960000;font-weight:700;font-size:200%}.theme-light .zombie{color:#7c4848}.theme-light .zombielarge{color:#7c4848;font-weight:700;font-size:120%}.theme-light .interface{color:#303}.theme-light .big{font-size:150%}.theme-light .reallybig{font-size:175%}.theme-light .greentext{color:#0f0;font-size:150%}.theme-light .redtext{color:red;font-size:150%}.theme-light .bold{font-weight:700}.theme-light .his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.theme-light .center{text-align:center}.theme-light .red{color:red}.theme-light .purple{color:#5e2d79}.theme-light .skeleton{color:#585858;font-weight:700;font-style:italic}.theme-light .gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.theme-light .orange{color:orange}.theme-light .orangei{color:orange;font-style:italic}.theme-light .orangeb{color:orange;font-weight:700}.theme-light .resonate{color:#298f85}.theme-light .healthscan_oxy{color:#0074bd}.theme-light .revennotice{color:#1d2953}.theme-light .revenboldnotice{color:#1d2953;font-weight:700}.theme-light .revenbignotice{color:#1d2953;font-weight:700;font-size:120%}.theme-light .revenminor{color:#823abb}.theme-light .revenwarning{color:#760fbb;font-style:italic}.theme-light .revendanger{color:#760fbb;font-weight:700;font-size:120%}.theme-light .specialnoticebold{color:#36525e;font-weight:700;font-size:120%}.theme-light .specialnotice{color:#36525e;font-size:120%}.theme-light .medal{font-weight:700}.theme-light .good{color:green}.theme-light .average{color:#ff8000}.theme-light .bad{color:red}.theme-light .italics,.theme-light .talkinto{font-style:italic}.theme-light .whisper{font-style:italic;color:#333}.theme-light .recruit{color:#5c00e6;font-weight:700;font-style:italic}.theme-light .memo{color:#638500;text-align:center}.theme-light .memoedit{text-align:center;font-size:75%}.theme-light .connectionClosed,.theme-light .fatalError{background:red;color:#fff;padding:5px}.theme-light .connectionClosed.restored{background:green}.theme-light .internal.boldnshit{color:#00f;font-weight:700}.theme-light .rebooting{background:#2979af;color:#fff;padding:5px}.theme-light .rebooting a{color:#fff!important;text-decoration-color:#fff!important}.theme-light .text-normal{font-weight:400;font-style:normal}.theme-light .hidden{display:none;visibility:hidden}.theme-light .colossus{color:#7f282a;font-size:175%}.theme-light .hierophant{color:#609;font-weight:700;font-style:italic}.theme-light .hierophant_warning{color:#609;font-style:italic}.theme-light .emoji{max-height:16px;max-width:16px}.theme-light .adminticket{color:#3e7336;font-weight:700}.theme-light .adminticketalt{color:#014c8a;font-weight:700}.theme-light span.body .codephrases{color:#00f}.theme-light span.body .coderesponses{color:red}.theme-light .announcement h1,.theme-light .announcement h2{color:#000;margin:8pt 0;line-height:1.2}.theme-light .announcement p{color:#d82020;line-height:1.3}.theme-light .announcement.minor h1{font-size:180%}.theme-light .announcement.minor h2{font-size:170%}.theme-light .announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.theme-light .bolditalics{font-style:italic;font-weight:700}.theme-light .boxed_message{background:#f7fcff;border:1px solid #111a26;margin:.5em;padding:.5em .75em;text-align:center}.theme-light .boxed_message.left_align_text{text-align:left}.theme-light .boxed_message.red_border{background:#fff7f7;border-color:#a00}.theme-light .boxed_message.green_border{background:#f7fff7;border-color:#0f0}.theme-light .boxed_message.purple_border{background:#fdf7ff;border-color:#a0f}.theme-light .boxed_message.notice_border{background:#f7fdff;border-color:#0000bf}.theme-light .boxed_message.thick_border{border-width:thick}.theme-light .oxygen{color:#006adb}.theme-light .nitrogen{color:#d00a06}.theme-light .carbon_dioxide{color:#1f1f1f}.theme-light .plasma{color:#853c00}.theme-light .sleeping_agent{color:#e82f2c}.theme-light .agent_b{color:#004d4d}.theme-ntos .color-black{color:#1a1a1a!important}.theme-ntos .color-white{color:#fff!important}.theme-ntos .color-red{color:#df3e3e!important}.theme-ntos .color-orange{color:#f37f33!important}.theme-ntos .color-yellow{color:#fbda21!important}.theme-ntos .color-olive{color:#cbe41c!important}.theme-ntos .color-green{color:#25ca4c!important}.theme-ntos .color-teal{color:#00d6cc!important}.theme-ntos .color-blue{color:#2e93de!important}.theme-ntos .color-violet{color:#7349cf!important}.theme-ntos .color-purple{color:#ad45d0!important}.theme-ntos .color-pink{color:#e34da1!important}.theme-ntos .color-brown{color:#b97447!important}.theme-ntos .color-grey{color:#848484!important}.theme-ntos .color-good{color:#68c22d!important}.theme-ntos .color-average{color:#f29a29!important}.theme-ntos .color-bad{color:#df3e3e!important}.theme-ntos .color-label{color:#8b9bb0!important}.theme-ntos .color-gold{color:#f3b22f!important}.theme-ntos .color-bg-black{background-color:#000!important}.theme-ntos .color-bg-white{background-color:#d9d9d9!important}.theme-ntos .color-bg-red{background-color:#bd2020!important}.theme-ntos .color-bg-orange{background-color:#d95e0c!important}.theme-ntos .color-bg-yellow{background-color:#d9b804!important}.theme-ntos .color-bg-olive{background-color:#9aad14!important}.theme-ntos .color-bg-green{background-color:#1b9638!important}.theme-ntos .color-bg-teal{background-color:#009a93!important}.theme-ntos .color-bg-blue{background-color:#1c71b1!important}.theme-ntos .color-bg-violet{background-color:#552dab!important}.theme-ntos .color-bg-purple{background-color:#8b2baa!important}.theme-ntos .color-bg-pink{background-color:#cf2082!important}.theme-ntos .color-bg-brown{background-color:#8c5836!important}.theme-ntos .color-bg-grey{background-color:#646464!important}.theme-ntos .color-bg-good{background-color:#4d9121!important}.theme-ntos .color-bg-average{background-color:#cd7a0d!important}.theme-ntos .color-bg-bad{background-color:#bd2020!important}.theme-ntos .color-bg-label{background-color:#657a94!important}.theme-ntos .color-bg-gold{background-color:#d6920c!important}.theme-ntos .color-border-black{border-color:#1a1a1a!important}.theme-ntos .color-border-white{border-color:#fff!important}.theme-ntos .color-border-red{border-color:#df3e3e!important}.theme-ntos .color-border-orange{border-color:#f37f33!important}.theme-ntos .color-border-yellow{border-color:#fbda21!important}.theme-ntos .color-border-olive{border-color:#cbe41c!important}.theme-ntos .color-border-green{border-color:#25ca4c!important}.theme-ntos .color-border-teal{border-color:#00d6cc!important}.theme-ntos .color-border-blue{border-color:#2e93de!important}.theme-ntos .color-border-violet{border-color:#7349cf!important}.theme-ntos .color-border-purple{border-color:#ad45d0!important}.theme-ntos .color-border-pink{border-color:#e34da1!important}.theme-ntos .color-border-brown{border-color:#b97447!important}.theme-ntos .color-border-grey{border-color:#848484!important}.theme-ntos .color-border-good{border-color:#68c22d!important}.theme-ntos .color-border-average{border-color:#f29a29!important}.theme-ntos .color-border-bad{border-color:#df3e3e!important}.theme-ntos .color-border-label{border-color:#8b9bb0!important}.theme-ntos .color-border-gold{border-color:#f3b22f!important}.theme-ntos .Section{position:relative;margin-bottom:.5em;background-color:#121922;box-sizing:border-box}.theme-ntos .Section:last-child{margin-bottom:0}.theme-ntos .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.theme-ntos .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-ntos .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-ntos .Section__rest{position:relative}.theme-ntos .Section__content{padding:.66em .5em}.theme-ntos .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-ntos .Section--fill{display:flex;flex-direction:column;height:100%}.theme-ntos .Section--fill>.Section__rest{flex-grow:1}.theme-ntos .Section--fill>.Section__rest>.Section__content{height:100%}.theme-ntos .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-ntos .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-ntos .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-ntos .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-ntos .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-ntos .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-ntos .Section .Section:first-child{margin-top:-.5em}.theme-ntos .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-ntos .Section .Section .Section .Section__titleText{font-size:1em}.theme-ntos .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-ntos .Button:last-child{margin-right:0;margin-bottom:0}.theme-ntos .Button .fa,.theme-ntos .Button .fas,.theme-ntos .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-ntos .Button--hasContent .fa,.theme-ntos .Button--hasContent .fas,.theme-ntos .Button--hasContent .far{margin-right:.25em}.theme-ntos .Button--hasContent.Button--iconRight .fa,.theme-ntos .Button--hasContent.Button--iconRight .fas,.theme-ntos .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-ntos .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-ntos .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-ntos .Button--circular{border-radius:50%}.theme-ntos .Button--compact{padding:0 .25em;line-height:1.333em}.theme-ntos .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-ntos .Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.theme-ntos .Button--color--black:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--black:hover{background-color:#101010;color:#fff}.theme-ntos .Button--color--white{transition:color .1s,background-color .1s;background-color:#d9d9d9;color:#000}.theme-ntos .Button--color--white:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-ntos .Button--color--red{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-ntos .Button--color--red:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--orange{transition:color .1s,background-color .1s;background-color:#d95e0c;color:#fff}.theme-ntos .Button--color--orange:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-ntos .Button--color--yellow{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-ntos .Button--color--yellow:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--olive{transition:color .1s,background-color .1s;background-color:#9aad14;color:#fff}.theme-ntos .Button--color--olive:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-ntos .Button--color--green{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.theme-ntos .Button--color--green:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-ntos .Button--color--teal{transition:color .1s,background-color .1s;background-color:#009a93;color:#fff}.theme-ntos .Button--color--teal:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-ntos .Button--color--blue{transition:color .1s,background-color .1s;background-color:#1c71b1;color:#fff}.theme-ntos .Button--color--blue:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-ntos .Button--color--violet{transition:color .1s,background-color .1s;background-color:#552dab;color:#fff}.theme-ntos .Button--color--violet:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-ntos .Button--color--purple{transition:color .1s,background-color .1s;background-color:#8b2baa;color:#fff}.theme-ntos .Button--color--purple:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-ntos .Button--color--pink{transition:color .1s,background-color .1s;background-color:#cf2082;color:#fff}.theme-ntos .Button--color--pink:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-ntos .Button--color--brown{transition:color .1s,background-color .1s;background-color:#8c5836;color:#fff}.theme-ntos .Button--color--brown:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-ntos .Button--color--grey{transition:color .1s,background-color .1s;background-color:#646464;color:#fff}.theme-ntos .Button--color--grey:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-ntos .Button--color--good{transition:color .1s,background-color .1s;background-color:#4d9121;color:#fff}.theme-ntos .Button--color--good:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-ntos .Button--color--average{transition:color .1s,background-color .1s;background-color:#cd7a0d;color:#fff}.theme-ntos .Button--color--average:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-ntos .Button--color--bad{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-ntos .Button--color--bad:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--label{transition:color .1s,background-color .1s;background-color:#657a94;color:#fff}.theme-ntos .Button--color--label:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--label:hover{background-color:#8a9aae;color:#fff}.theme-ntos .Button--color--gold{transition:color .1s,background-color .1s;background-color:#d6920c;color:#fff}.theme-ntos .Button--color--gold:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-ntos .Button--color--default{transition:color .1s,background-color .1s;background-color:#384e68;color:#fff}.theme-ntos .Button--color--default:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--default:hover{background-color:#4f6885;color:#fff}.theme-ntos .Button--color--caution{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-ntos .Button--color--caution:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--danger{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-ntos .Button--color--danger:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--danger:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--transparent{transition:color .1s,background-color .1s;background-color:rgba(27,38,51,0);color:rgba(255,255,255,.5)}.theme-ntos .Button--color--transparent:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--transparent:hover{background-color:rgba(44,57,73,.81);color:#fff}.theme-ntos .Button--color--translucent{transition:color .1s,background-color .1s;background-color:rgba(27,38,51,.6);color:rgba(255,255,255,.5)}.theme-ntos .Button--color--translucent:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--translucent:hover{background-color:rgba(48,61,76,.925);color:#fff}.theme-ntos .Button--disabled{background-color:#999!important}.theme-ntos .Button--selected{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.theme-ntos .Button--selected:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--selected:hover{background-color:#2fb94f;color:#fff}.theme-ntos .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-ntos .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-ntos .NumberInput--fluid{display:block}.theme-ntos .NumberInput__content{margin-left:.5em}.theme-ntos .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-ntos .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.theme-ntos .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-ntos .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-ntos .Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-ntos .Input--fluid{display:block;width:auto}.theme-ntos .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-ntos .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-ntos .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-ntos .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-ntos .TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-ntos .TextArea--fluid{display:block;width:auto;height:auto}.theme-ntos .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-ntos .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-ntos .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-ntos .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-ntos .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-ntos .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-ntos .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-ntos .Knob__popupValue,.theme-ntos .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .Knob__popupValue--right{top:.25rem;right:-50%}.theme-ntos .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-ntos .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-ntos .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-ntos .Knob__ringFillPivot{transform:rotate(135deg)}.theme-ntos .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-ntos .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-ntos .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-ntos .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-ntos .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-ntos .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-ntos .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-ntos .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-ntos .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-ntos .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-ntos .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-ntos .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-ntos .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-ntos .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-ntos .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-ntos .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-ntos .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-ntos .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-ntos .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-ntos .Slider:not(.Slider__disabled){cursor:e-resize}.theme-ntos .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-ntos .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-ntos .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-ntos .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-ntos .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-ntos .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-ntos .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-ntos .ProgressBar--color--default{border:.0833333333em solid #3e6189}.theme-ntos .ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.theme-ntos .ProgressBar--color--disabled{border:1px solid #999}.theme-ntos .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-ntos .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-ntos .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-ntos .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-ntos .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-ntos .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-ntos .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-ntos .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-ntos .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-ntos .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-ntos .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-ntos .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-ntos .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-ntos .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-ntos .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-ntos .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-ntos .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-ntos .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-ntos .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-ntos .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-ntos .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-ntos .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-ntos .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-ntos .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-ntos .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-ntos .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-ntos .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-ntos .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-ntos .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-ntos .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-ntos .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-ntos .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--label{border:.0833333333em solid #657a94!important}.theme-ntos .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-ntos .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-ntos .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-ntos .Chat{color:#abc6ec}.theme-ntos .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-ntos .Chat__badge:before{content:"x"}.theme-ntos .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-ntos .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-ntos .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-ntos .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#121922}.theme-ntos .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-ntos .Chat__highlight{color:#000}.theme-ntos .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-ntos .ChatMessage{word-wrap:break-word}.theme-ntos .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-ntos .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-ntos .Layout,.theme-ntos .Layout *{scrollbar-base-color:#141d26;scrollbar-face-color:#2a3b4f;scrollbar-3dlight-color:#1b2633;scrollbar-highlight-color:#1b2633;scrollbar-track-color:#141d26;scrollbar-arrow-color:#7290b4;scrollbar-shadow-color:#2a3b4f}.theme-ntos .Layout::-webkit-scrollbar,.theme-ntos .Layout *::-webkit-scrollbar{width:12px}.theme-ntos .Layout::-webkit-scrollbar-track,.theme-ntos .Layout *::-webkit-scrollbar-track{background:#141d26}.theme-ntos .Layout::-webkit-scrollbar-thumb,.theme-ntos .Layout *::-webkit-scrollbar-thumb{background:#2a3b4f}.theme-ntos .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-ntos .Layout__content--flexRow{display:flex;flex-flow:row}.theme-ntos .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-ntos .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-ntos .Layout__content--noMargin{margin:0}.theme-ntos .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1b2633;background-image:linear-gradient(to bottom,#1b2633,#1b2633)}.theme-ntos .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-ntos .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-ntos .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-ntos .Window__contentPadding:after{height:0}.theme-ntos .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-ntos .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(50,63,78,.25);pointer-events:none}.theme-ntos .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-ntos .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-ntos .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-ntos .TitleBar{background-color:#1b2633;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-ntos .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#1b2633;transition:color .25s,background-color .25s}.theme-ntos .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-ntos .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-ntos .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-ntos .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-ntos .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-ntos .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-ntos .boxed_message{background:#1c242e;border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-ntos .boxed_message.left_align_text{text-align:left}.theme-ntos .boxed_message.red_border{background:#2e1c1c;border-color:#a00}.theme-ntos .boxed_message.green_border{background:#1c2e22;border-color:#0f0}.theme-ntos .boxed_message.purple_border{background:#221c2e;border-color:#8000ff}.theme-ntos .boxed_message.notice_border{background:#1f2633;border-color:#6685f5}.theme-ntos .boxed_message.thick_border{border-width:thick}.theme-syndicate .color-black{color:#1a1a1a!important}.theme-syndicate .color-white{color:#fff!important}.theme-syndicate .color-red{color:#df3e3e!important}.theme-syndicate .color-orange{color:#f37f33!important}.theme-syndicate .color-yellow{color:#fbda21!important}.theme-syndicate .color-olive{color:#cbe41c!important}.theme-syndicate .color-green{color:#25ca4c!important}.theme-syndicate .color-teal{color:#00d6cc!important}.theme-syndicate .color-blue{color:#2e93de!important}.theme-syndicate .color-violet{color:#7349cf!important}.theme-syndicate .color-purple{color:#ad45d0!important}.theme-syndicate .color-pink{color:#e34da1!important}.theme-syndicate .color-brown{color:#b97447!important}.theme-syndicate .color-grey{color:#848484!important}.theme-syndicate .color-good{color:#68c22d!important}.theme-syndicate .color-average{color:#f29a29!important}.theme-syndicate .color-bad{color:#df3e3e!important}.theme-syndicate .color-label{color:#8b9bb0!important}.theme-syndicate .color-gold{color:#f3b22f!important}.theme-syndicate .color-bg-black{background-color:#000!important}.theme-syndicate .color-bg-white{background-color:#d9d9d9!important}.theme-syndicate .color-bg-red{background-color:#bd2020!important}.theme-syndicate .color-bg-orange{background-color:#d95e0c!important}.theme-syndicate .color-bg-yellow{background-color:#d9b804!important}.theme-syndicate .color-bg-olive{background-color:#9aad14!important}.theme-syndicate .color-bg-green{background-color:#1b9638!important}.theme-syndicate .color-bg-teal{background-color:#009a93!important}.theme-syndicate .color-bg-blue{background-color:#1c71b1!important}.theme-syndicate .color-bg-violet{background-color:#552dab!important}.theme-syndicate .color-bg-purple{background-color:#8b2baa!important}.theme-syndicate .color-bg-pink{background-color:#cf2082!important}.theme-syndicate .color-bg-brown{background-color:#8c5836!important}.theme-syndicate .color-bg-grey{background-color:#646464!important}.theme-syndicate .color-bg-good{background-color:#4d9121!important}.theme-syndicate .color-bg-average{background-color:#cd7a0d!important}.theme-syndicate .color-bg-bad{background-color:#bd2020!important}.theme-syndicate .color-bg-label{background-color:#657a94!important}.theme-syndicate .color-bg-gold{background-color:#d6920c!important}.theme-syndicate .color-border-black{border-color:#1a1a1a!important}.theme-syndicate .color-border-white{border-color:#fff!important}.theme-syndicate .color-border-red{border-color:#df3e3e!important}.theme-syndicate .color-border-orange{border-color:#f37f33!important}.theme-syndicate .color-border-yellow{border-color:#fbda21!important}.theme-syndicate .color-border-olive{border-color:#cbe41c!important}.theme-syndicate .color-border-green{border-color:#25ca4c!important}.theme-syndicate .color-border-teal{border-color:#00d6cc!important}.theme-syndicate .color-border-blue{border-color:#2e93de!important}.theme-syndicate .color-border-violet{border-color:#7349cf!important}.theme-syndicate .color-border-purple{border-color:#ad45d0!important}.theme-syndicate .color-border-pink{border-color:#e34da1!important}.theme-syndicate .color-border-brown{border-color:#b97447!important}.theme-syndicate .color-border-grey{border-color:#848484!important}.theme-syndicate .color-border-good{border-color:#68c22d!important}.theme-syndicate .color-border-average{border-color:#f29a29!important}.theme-syndicate .color-border-bad{border-color:#df3e3e!important}.theme-syndicate .color-border-label{border-color:#8b9bb0!important}.theme-syndicate .color-border-gold{border-color:#f3b22f!important}.theme-syndicate .Section{position:relative;margin-bottom:.5em;background-color:#2b0101;box-sizing:border-box}.theme-syndicate .Section:last-child{margin-bottom:0}.theme-syndicate .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #397439}.theme-syndicate .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-syndicate .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-syndicate .Section__rest{position:relative}.theme-syndicate .Section__content{padding:.66em .5em}.theme-syndicate .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-syndicate .Section--fill{display:flex;flex-direction:column;height:100%}.theme-syndicate .Section--fill>.Section__rest{flex-grow:1}.theme-syndicate .Section--fill>.Section__rest>.Section__content{height:100%}.theme-syndicate .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-syndicate .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-syndicate .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-syndicate .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-syndicate .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-syndicate .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-syndicate .Section .Section:first-child{margin-top:-.5em}.theme-syndicate .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-syndicate .Section .Section .Section .Section__titleText{font-size:1em}.theme-syndicate .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-syndicate .Button:last-child{margin-right:0;margin-bottom:0}.theme-syndicate .Button .fa,.theme-syndicate .Button .fas,.theme-syndicate .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-syndicate .Button--hasContent .fa,.theme-syndicate .Button--hasContent .fas,.theme-syndicate .Button--hasContent .far{margin-right:.25em}.theme-syndicate .Button--hasContent.Button--iconRight .fa,.theme-syndicate .Button--hasContent.Button--iconRight .fas,.theme-syndicate .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-syndicate .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-syndicate .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-syndicate .Button--circular{border-radius:50%}.theme-syndicate .Button--compact{padding:0 .25em;line-height:1.333em}.theme-syndicate .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-syndicate .Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.theme-syndicate .Button--color--black:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--black:hover{background-color:#101010;color:#fff}.theme-syndicate .Button--color--white{transition:color .1s,background-color .1s;background-color:#d9d9d9;color:#000}.theme-syndicate .Button--color--white:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-syndicate .Button--color--red{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-syndicate .Button--color--red:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--orange{transition:color .1s,background-color .1s;background-color:#d95e0c;color:#fff}.theme-syndicate .Button--color--orange:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-syndicate .Button--color--yellow{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-syndicate .Button--color--yellow:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-syndicate .Button--color--olive{transition:color .1s,background-color .1s;background-color:#9aad14;color:#fff}.theme-syndicate .Button--color--olive:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-syndicate .Button--color--green{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.theme-syndicate .Button--color--green:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-syndicate .Button--color--teal{transition:color .1s,background-color .1s;background-color:#009a93;color:#fff}.theme-syndicate .Button--color--teal:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-syndicate .Button--color--blue{transition:color .1s,background-color .1s;background-color:#1c71b1;color:#fff}.theme-syndicate .Button--color--blue:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-syndicate .Button--color--violet{transition:color .1s,background-color .1s;background-color:#552dab;color:#fff}.theme-syndicate .Button--color--violet:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-syndicate .Button--color--purple{transition:color .1s,background-color .1s;background-color:#8b2baa;color:#fff}.theme-syndicate .Button--color--purple:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-syndicate .Button--color--pink{transition:color .1s,background-color .1s;background-color:#cf2082;color:#fff}.theme-syndicate .Button--color--pink:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-syndicate .Button--color--brown{transition:color .1s,background-color .1s;background-color:#8c5836;color:#fff}.theme-syndicate .Button--color--brown:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-syndicate .Button--color--grey{transition:color .1s,background-color .1s;background-color:#646464;color:#fff}.theme-syndicate .Button--color--grey:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-syndicate .Button--color--good{transition:color .1s,background-color .1s;background-color:#4d9121;color:#fff}.theme-syndicate .Button--color--good:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-syndicate .Button--color--average{transition:color .1s,background-color .1s;background-color:#cd7a0d;color:#fff}.theme-syndicate .Button--color--average:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-syndicate .Button--color--bad{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-syndicate .Button--color--bad:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--label{transition:color .1s,background-color .1s;background-color:#657a94;color:#fff}.theme-syndicate .Button--color--label:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--label:hover{background-color:#8a9aae;color:#fff}.theme-syndicate .Button--color--gold{transition:color .1s,background-color .1s;background-color:#d6920c;color:#fff}.theme-syndicate .Button--color--gold:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-syndicate .Button--color--default{transition:color .1s,background-color .1s;background-color:#397439;color:#fff}.theme-syndicate .Button--color--default:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--default:hover{background-color:#509350;color:#fff}.theme-syndicate .Button--color--caution{transition:color .1s,background-color .1s;background-color:#be6209;color:#fff}.theme-syndicate .Button--color--caution:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-syndicate .Button--color--danger{transition:color .1s,background-color .1s;background-color:#9a9d00;color:#fff}.theme-syndicate .Button--color--danger:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-syndicate .Button--color--transparent{transition:color .1s,background-color .1s;background-color:rgba(77,2,2,0);color:rgba(255,255,255,.5)}.theme-syndicate .Button--color--transparent:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--transparent:hover{background-color:rgba(103,14,14,.81);color:#fff}.theme-syndicate .Button--color--translucent{transition:color .1s,background-color .1s;background-color:rgba(77,2,2,.6);color:rgba(255,255,255,.5)}.theme-syndicate .Button--color--translucent:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--translucent:hover{background-color:rgba(105,20,20,.925);color:#fff}.theme-syndicate .Button--disabled{background-color:#363636!important}.theme-syndicate .Button--selected{transition:color .1s,background-color .1s;background-color:#9d0808;color:#fff}.theme-syndicate .Button--selected:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--selected:hover{background-color:#c11919;color:#fff}.theme-syndicate .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-syndicate .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#fff;background-color:#910101;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.theme-syndicate .NoticeBox--color--black{color:#fff;background-color:#000}.theme-syndicate .NoticeBox--color--white{color:#000;background-color:#b3b3b3}.theme-syndicate .NoticeBox--color--red{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--orange{color:#fff;background-color:#854114}.theme-syndicate .NoticeBox--color--yellow{color:#000;background-color:#83710d}.theme-syndicate .NoticeBox--color--olive{color:#000;background-color:#576015}.theme-syndicate .NoticeBox--color--green{color:#fff;background-color:#174e24}.theme-syndicate .NoticeBox--color--teal{color:#fff;background-color:#064845}.theme-syndicate .NoticeBox--color--blue{color:#fff;background-color:#1b4565}.theme-syndicate .NoticeBox--color--violet{color:#fff;background-color:#3b2864}.theme-syndicate .NoticeBox--color--purple{color:#fff;background-color:#542663}.theme-syndicate .NoticeBox--color--pink{color:#fff;background-color:#802257}.theme-syndicate .NoticeBox--color--brown{color:#fff;background-color:#4c3729}.theme-syndicate .NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.theme-syndicate .NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.theme-syndicate .NoticeBox--color--average{color:#fff;background-color:#7b4e13}.theme-syndicate .NoticeBox--color--bad{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--label{color:#fff;background-color:#53565a}.theme-syndicate .NoticeBox--color--gold{color:#fff;background-color:#825d13}.theme-syndicate .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-syndicate .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-syndicate .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-syndicate .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-syndicate .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;color:#87ce87;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-syndicate .NumberInput--fluid{display:block}.theme-syndicate .NumberInput__content{margin-left:.5em}.theme-syndicate .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-syndicate .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #87ce87;background-color:#87ce87}.theme-syndicate .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-syndicate .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-syndicate .Input--disabled{color:#777;border-color:#6b6b6b;border-color:rgba(107,107,107,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-syndicate .Input--fluid{display:block;width:auto}.theme-syndicate .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-syndicate .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-syndicate .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-syndicate .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-syndicate .TextArea{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-syndicate .TextArea--fluid{display:block;width:auto;height:auto}.theme-syndicate .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-syndicate .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-syndicate .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-syndicate .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-syndicate .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-syndicate .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-syndicate .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-syndicate .Knob__popupValue,.theme-syndicate .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .Knob__popupValue--right{top:.25rem;right:-50%}.theme-syndicate .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-syndicate .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-syndicate .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-syndicate .Knob__ringFillPivot{transform:rotate(135deg)}.theme-syndicate .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-syndicate .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-syndicate .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-syndicate .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-syndicate .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-syndicate .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-syndicate .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-syndicate .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-syndicate .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-syndicate .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-syndicate .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-syndicate .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-syndicate .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-syndicate .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-syndicate .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-syndicate .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-syndicate .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-syndicate .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-syndicate .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-syndicate .Slider:not(.Slider__disabled){cursor:e-resize}.theme-syndicate .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-syndicate .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-syndicate .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-syndicate .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-syndicate .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-syndicate .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-syndicate .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-syndicate .ProgressBar--color--default{border:.0833333333em solid #306330}.theme-syndicate .ProgressBar--color--default .ProgressBar__fill{background-color:#306330}.theme-syndicate .ProgressBar--color--disabled{border:1px solid #999}.theme-syndicate .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-syndicate .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-syndicate .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-syndicate .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-syndicate .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-syndicate .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-syndicate .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-syndicate .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-syndicate .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-syndicate .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-syndicate .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-syndicate .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-syndicate .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-syndicate .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-syndicate .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-syndicate .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-syndicate .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-syndicate .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-syndicate .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-syndicate .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-syndicate .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-syndicate .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-syndicate .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-syndicate .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-syndicate .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-syndicate .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-syndicate .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-syndicate .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-syndicate .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-syndicate .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-syndicate .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-syndicate .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--label{border:.0833333333em solid #657a94!important}.theme-syndicate .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-syndicate .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-syndicate .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-syndicate .Chat{color:#abc6ec}.theme-syndicate .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-syndicate .Chat__badge:before{content:"x"}.theme-syndicate .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-syndicate .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-syndicate .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-syndicate .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#2b0101}.theme-syndicate .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-syndicate .Chat__highlight{color:#000}.theme-syndicate .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-syndicate .ChatMessage{word-wrap:break-word}.theme-syndicate .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-syndicate .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-syndicate .Layout,.theme-syndicate .Layout *{scrollbar-base-color:#3a0202;scrollbar-face-color:#770303;scrollbar-3dlight-color:#4d0202;scrollbar-highlight-color:#4d0202;scrollbar-track-color:#3a0202;scrollbar-arrow-color:#fa2d2d;scrollbar-shadow-color:#770303}.theme-syndicate .Layout::-webkit-scrollbar,.theme-syndicate .Layout *::-webkit-scrollbar{width:12px}.theme-syndicate .Layout::-webkit-scrollbar-track,.theme-syndicate .Layout *::-webkit-scrollbar-track{background:#3a0202}.theme-syndicate .Layout::-webkit-scrollbar-thumb,.theme-syndicate .Layout *::-webkit-scrollbar-thumb{background:#770303}.theme-syndicate .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-syndicate .Layout__content--flexRow{display:flex;flex-flow:row}.theme-syndicate .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-syndicate .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-syndicate .Layout__content--noMargin{margin:0}.theme-syndicate .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#4d0202;background-image:linear-gradient(to bottom,#4d0202,#4d0202)}.theme-syndicate .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-syndicate .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-syndicate .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-syndicate .Window__contentPadding:after{height:0}.theme-syndicate .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-syndicate .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(108,22,22,.25);pointer-events:none}.theme-syndicate .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-syndicate .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-syndicate .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-syndicate .TitleBar{background-color:#910101;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-syndicate .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#910101;transition:color .25s,background-color .25s}.theme-syndicate .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-syndicate .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-syndicate .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-syndicate .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-syndicate .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-syndicate .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-syndicate .adminooc{color:#29ccbe}.theme-syndicate .debug{color:#8f39e6}.theme-syndicate .boxed_message{background:rgba(20,20,35,.25);border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-syndicate .boxed_message.left_align_text{text-align:left}.theme-syndicate .boxed_message.red_border{background:rgba(0,0,0,.2);border-color:red}.theme-syndicate .boxed_message.green_border{background:rgba(0,75,0,.25);border-color:#0f0}.theme-syndicate .boxed_message.purple_border{background:rgba(25,0,50,.25);border-color:#8000ff}.theme-syndicate .boxed_message.notice_border{background:rgba(0,0,75,.25);border-color:#6685f5}.theme-syndicate .boxed_message.thick_border{border-width:thick}.theme-paradise .color-black{color:#1a1a1a!important}.theme-paradise .color-white{color:#fff!important}.theme-paradise .color-red{color:#df3e3e!important}.theme-paradise .color-orange{color:#f37f33!important}.theme-paradise .color-yellow{color:#fbda21!important}.theme-paradise .color-olive{color:#cbe41c!important}.theme-paradise .color-green{color:#25ca4c!important}.theme-paradise .color-teal{color:#00d6cc!important}.theme-paradise .color-blue{color:#2e93de!important}.theme-paradise .color-violet{color:#7349cf!important}.theme-paradise .color-purple{color:#ad45d0!important}.theme-paradise .color-pink{color:#e34da1!important}.theme-paradise .color-brown{color:#b97447!important}.theme-paradise .color-grey{color:#848484!important}.theme-paradise .color-good{color:#68c22d!important}.theme-paradise .color-average{color:#f29a29!important}.theme-paradise .color-bad{color:#df3e3e!important}.theme-paradise .color-label{color:#955d4b!important}.theme-paradise .color-gold{color:#f3b22f!important}.theme-paradise .color-bg-black{background-color:#000!important}.theme-paradise .color-bg-white{background-color:#d9d9d9!important}.theme-paradise .color-bg-red{background-color:#bd2020!important}.theme-paradise .color-bg-orange{background-color:#d95e0c!important}.theme-paradise .color-bg-yellow{background-color:#d9b804!important}.theme-paradise .color-bg-olive{background-color:#9aad14!important}.theme-paradise .color-bg-green{background-color:#1b9638!important}.theme-paradise .color-bg-teal{background-color:#009a93!important}.theme-paradise .color-bg-blue{background-color:#1c71b1!important}.theme-paradise .color-bg-violet{background-color:#552dab!important}.theme-paradise .color-bg-purple{background-color:#8b2baa!important}.theme-paradise .color-bg-pink{background-color:#cf2082!important}.theme-paradise .color-bg-brown{background-color:#8c5836!important}.theme-paradise .color-bg-grey{background-color:#646464!important}.theme-paradise .color-bg-good{background-color:#4d9121!important}.theme-paradise .color-bg-average{background-color:#cd7a0d!important}.theme-paradise .color-bg-bad{background-color:#bd2020!important}.theme-paradise .color-bg-label{background-color:#6d4436!important}.theme-paradise .color-bg-gold{background-color:#d6920c!important}.theme-paradise .color-border-black{border-color:#1a1a1a!important}.theme-paradise .color-border-white{border-color:#fff!important}.theme-paradise .color-border-red{border-color:#df3e3e!important}.theme-paradise .color-border-orange{border-color:#f37f33!important}.theme-paradise .color-border-yellow{border-color:#fbda21!important}.theme-paradise .color-border-olive{border-color:#cbe41c!important}.theme-paradise .color-border-green{border-color:#25ca4c!important}.theme-paradise .color-border-teal{border-color:#00d6cc!important}.theme-paradise .color-border-blue{border-color:#2e93de!important}.theme-paradise .color-border-violet{border-color:#7349cf!important}.theme-paradise .color-border-purple{border-color:#ad45d0!important}.theme-paradise .color-border-pink{border-color:#e34da1!important}.theme-paradise .color-border-brown{border-color:#b97447!important}.theme-paradise .color-border-grey{border-color:#848484!important}.theme-paradise .color-border-good{border-color:#68c22d!important}.theme-paradise .color-border-average{border-color:#f29a29!important}.theme-paradise .color-border-bad{border-color:#df3e3e!important}.theme-paradise .color-border-label{border-color:#955d4b!important}.theme-paradise .color-border-gold{border-color:#f3b22f!important}.theme-paradise .Section{position:relative;margin-bottom:.5em;background-color:#40071a;background-color:rgba(0,0,0,.5);box-sizing:border-box}.theme-paradise .Section:last-child{margin-bottom:0}.theme-paradise .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #208080}.theme-paradise .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-paradise .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-paradise .Section__rest{position:relative}.theme-paradise .Section__content{padding:.66em .5em}.theme-paradise .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-paradise .Section--fill{display:flex;flex-direction:column;height:100%}.theme-paradise .Section--fill>.Section__rest{flex-grow:1}.theme-paradise .Section--fill>.Section__rest>.Section__content{height:100%}.theme-paradise .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-paradise .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-paradise .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-paradise .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-paradise .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-paradise .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-paradise .Section .Section:first-child{margin-top:-.5em}.theme-paradise .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-paradise .Section .Section .Section .Section__titleText{font-size:1em}.theme-paradise .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-paradise .Button:last-child{margin-right:0;margin-bottom:0}.theme-paradise .Button .fa,.theme-paradise .Button .fas,.theme-paradise .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-paradise .Button--hasContent .fa,.theme-paradise .Button--hasContent .fas,.theme-paradise .Button--hasContent .far{margin-right:.25em}.theme-paradise .Button--hasContent.Button--iconRight .fa,.theme-paradise .Button--hasContent.Button--iconRight .fas,.theme-paradise .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-paradise .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-paradise .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-paradise .Button--circular{border-radius:50%}.theme-paradise .Button--compact{padding:0 .25em;line-height:1.333em}.theme-paradise .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-paradise .Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.theme-paradise .Button--color--black:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--black:hover{background-color:#101010;color:#fff}.theme-paradise .Button--color--white{transition:color .1s,background-color .1s;background-color:#d9d9d9;color:#000}.theme-paradise .Button--color--white:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-paradise .Button--color--red{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-paradise .Button--color--red:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--orange{transition:color .1s,background-color .1s;background-color:#d95e0c;color:#fff}.theme-paradise .Button--color--orange:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-paradise .Button--color--yellow{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-paradise .Button--color--yellow:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--olive{transition:color .1s,background-color .1s;background-color:#9aad14;color:#fff}.theme-paradise .Button--color--olive:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-paradise .Button--color--green{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.theme-paradise .Button--color--green:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-paradise .Button--color--teal{transition:color .1s,background-color .1s;background-color:#009a93;color:#fff}.theme-paradise .Button--color--teal:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-paradise .Button--color--blue{transition:color .1s,background-color .1s;background-color:#1c71b1;color:#fff}.theme-paradise .Button--color--blue:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-paradise .Button--color--violet{transition:color .1s,background-color .1s;background-color:#552dab;color:#fff}.theme-paradise .Button--color--violet:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-paradise .Button--color--purple{transition:color .1s,background-color .1s;background-color:#8b2baa;color:#fff}.theme-paradise .Button--color--purple:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-paradise .Button--color--pink{transition:color .1s,background-color .1s;background-color:#cf2082;color:#fff}.theme-paradise .Button--color--pink:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-paradise .Button--color--brown{transition:color .1s,background-color .1s;background-color:#8c5836;color:#fff}.theme-paradise .Button--color--brown:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-paradise .Button--color--grey{transition:color .1s,background-color .1s;background-color:#646464;color:#fff}.theme-paradise .Button--color--grey:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-paradise .Button--color--good{transition:color .1s,background-color .1s;background-color:#4d9121;color:#fff}.theme-paradise .Button--color--good:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-paradise .Button--color--average{transition:color .1s,background-color .1s;background-color:#cd7a0d;color:#fff}.theme-paradise .Button--color--average:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-paradise .Button--color--bad{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-paradise .Button--color--bad:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--label{transition:color .1s,background-color .1s;background-color:#6d4436;color:#fff}.theme-paradise .Button--color--label:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--label:hover{background-color:#8b5d4d;color:#fff}.theme-paradise .Button--color--gold{transition:color .1s,background-color .1s;background-color:#d6920c;color:#fff}.theme-paradise .Button--color--gold:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-paradise .Button--color--default{transition:color .1s,background-color .1s;background-color:#208080;color:#fff}.theme-paradise .Button--color--default:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--default:hover{background-color:#34a0a0;color:#fff}.theme-paradise .Button--color--caution{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-paradise .Button--color--caution:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--danger{transition:color .1s,background-color .1s;background-color:#8c1eff;color:#fff}.theme-paradise .Button--color--danger:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--danger:hover{background-color:#ae61ff;color:#fff}.theme-paradise .Button--color--transparent{transition:color .1s,background-color .1s;background-color:rgba(128,13,51,0);color:rgba(255,255,255,.5)}.theme-paradise .Button--color--transparent:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--transparent:hover{background-color:rgba(164,27,73,.81);color:#fff}.theme-paradise .Button--color--translucent{transition:color .1s,background-color .1s;background-color:rgba(128,13,51,.6);color:rgba(255,255,255,.5)}.theme-paradise .Button--color--translucent:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--translucent:hover{background-color:rgba(164,32,76,.925);color:#fff}.theme-paradise .Button--disabled{background-color:#999!important}.theme-paradise .Button--selected{transition:color .1s,background-color .1s;background-color:#bf6030;color:#fff}.theme-paradise .Button--selected:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--selected:hover{background-color:#d4835a;color:#fff}.theme-paradise .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-paradise .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;color:#e65c2e;background-color:rgba(0,0,0,.25);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-paradise .NumberInput--fluid{display:block}.theme-paradise .NumberInput__content{margin-left:.5em}.theme-paradise .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-paradise .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #e65c2e;background-color:#e65c2e}.theme-paradise .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,.25);color:#fff;text-align:right}.theme-paradise .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-paradise .Input--disabled{color:#777;border-color:#4a4a4a;border-color:rgba(74,74,74,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-paradise .Input--fluid{display:block;width:auto}.theme-paradise .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-paradise .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-paradise .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-paradise .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-paradise .TextArea{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-paradise .TextArea--fluid{display:block;width:auto;height:auto}.theme-paradise .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-paradise .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-paradise .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-paradise .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-paradise .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-paradise .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-paradise .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-paradise .Knob__popupValue,.theme-paradise .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .Knob__popupValue--right{top:.25rem;right:-50%}.theme-paradise .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-paradise .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-paradise .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-paradise .Knob__ringFillPivot{transform:rotate(135deg)}.theme-paradise .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-paradise .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-paradise .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-paradise .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-paradise .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-paradise .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-paradise .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-paradise .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-paradise .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-paradise .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-paradise .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-paradise .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-paradise .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-paradise .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-paradise .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-paradise .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-paradise .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-paradise .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--label .Knob__ringFill{stroke:#955d4b}.theme-paradise .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-paradise .Slider:not(.Slider__disabled){cursor:e-resize}.theme-paradise .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-paradise .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-paradise .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-paradise .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-paradise .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-paradise .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-paradise .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-paradise .ProgressBar--color--default{border:.0833333333em solid #1b6d6d}.theme-paradise .ProgressBar--color--default .ProgressBar__fill{background-color:#1b6d6d}.theme-paradise .ProgressBar--color--disabled{border:1px solid #999}.theme-paradise .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-paradise .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-paradise .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-paradise .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-paradise .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-paradise .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-paradise .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-paradise .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-paradise .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-paradise .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-paradise .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-paradise .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-paradise .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-paradise .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-paradise .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-paradise .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-paradise .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-paradise .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-paradise .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-paradise .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-paradise .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-paradise .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-paradise .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-paradise .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-paradise .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-paradise .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-paradise .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-paradise .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-paradise .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-paradise .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-paradise .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-paradise .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--label{border:.0833333333em solid #6d4436!important}.theme-paradise .ProgressBar--color--label .ProgressBar__fill{background-color:#6d4436}.theme-paradise .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-paradise .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-paradise .Chat{color:#abc6ec}.theme-paradise .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-paradise .Chat__badge:before{content:"x"}.theme-paradise .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-paradise .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-paradise .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-paradise .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#fff;background-color:#db2828}.theme-paradise .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-paradise .Chat__highlight{color:#000}.theme-paradise .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-paradise .ChatMessage{word-wrap:break-word}.theme-paradise .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-paradise .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-paradise .Layout,.theme-paradise .Layout *{scrollbar-base-color:#680b29;scrollbar-face-color:#99103d;scrollbar-3dlight-color:#800d33;scrollbar-highlight-color:#800d33;scrollbar-track-color:#680b29;scrollbar-arrow-color:#ea2e6c;scrollbar-shadow-color:#99103d}.theme-paradise .Layout::-webkit-scrollbar,.theme-paradise .Layout *::-webkit-scrollbar{width:12px}.theme-paradise .Layout::-webkit-scrollbar-track,.theme-paradise .Layout *::-webkit-scrollbar-track{background:#680b29}.theme-paradise .Layout::-webkit-scrollbar-thumb,.theme-paradise .Layout *::-webkit-scrollbar-thumb{background:#99103d}.theme-paradise .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-paradise .Layout__content--flexRow{display:flex;flex-flow:row}.theme-paradise .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-paradise .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-paradise .Layout__content--noMargin{margin:0}.theme-paradise .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#800d33;background-image:linear-gradient(to bottom,#80014b,#80460d)}.theme-paradise .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-paradise .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-paradise .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-paradise .Window__contentPadding:after{height:0}.theme-paradise .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-paradise .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(166,34,78,.25);pointer-events:none}.theme-paradise .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-paradise .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-paradise .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-paradise .TitleBar{background-color:#800d33;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-paradise .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#800d33;transition:color .25s,background-color .25s}.theme-paradise .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-paradise .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-paradise .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-paradise .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-paradise .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-paradise .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-paradise .adminooc{color:#29ccbe}.theme-paradise .debug{color:#8f39e6}.theme-paradise .boxed_message{background:rgba(0,0,0,.25);border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-paradise .boxed_message.left_align_text{text-align:left}.theme-paradise .boxed_message.red_border{background:rgba(0,0,0,.25);border-color:#a00}.theme-paradise .boxed_message.green_border{background:rgba(0,0,0,.25);border-color:#0f0}.theme-paradise .boxed_message.purple_border{background:rgba(0,0,0,.25);border-color:#8000ff}.theme-paradise .boxed_message.notice_border{background:rgba(0,0,0,.25);border-color:#6685f5}.theme-paradise .boxed_message.thick_border{border-width:thick} diff --git a/tgui/public/tgui-panel.bundle.js b/tgui/public/tgui-panel.bundle.js index 32f69b26ec20..79a783a47046 100644 --- a/tgui/public/tgui-panel.bundle.js +++ b/tgui/public/tgui-panel.bundle.js @@ -1,30 +1,30 @@ -(function(){(function(){var xn={96376:function(S,e,t){"use strict";e.__esModule=!0,e.createPopper=void 0,e.popperGenerator=p;var n=i(t(74758)),r=i(t(28811)),o=i(t(98309)),a=i(t(44896)),u=i(t(33118)),s=i(t(10579)),c=i(t(56500)),h=i(t(17633));e.detectOverflow=h.default;var f=t(75573);function i(g){return g&&g.__esModule?g:{default:g}}var d={placement:"bottom",modifiers:[],strategy:"absolute"};function l(){for(var g=arguments.length,m=new Array(g),C=0;C0&&(0,r.round)(i.width)/c.offsetWidth||1,l=c.offsetHeight>0&&(0,r.round)(i.height)/c.offsetHeight||1);var p=(0,n.isElement)(c)?(0,o.default)(c):window,v=p.visualViewport,g=!(0,a.default)()&&f,m=(i.left+(g&&v?v.offsetLeft:0))/d,C=(i.top+(g&&v?v.offsetTop:0))/l,T=i.width/d,I=i.height/l;return{width:T,height:I,top:C,right:m+T,bottom:C+I,left:m,x:m,y:C}}},49035:function(S,e,t){"use strict";e.__esModule=!0,e.default=I;var n=t(46206),r=g(t(87991)),o=g(t(79752)),a=g(t(98309)),u=g(t(44896)),s=g(t(40600)),c=g(t(16599)),h=t(75573),f=g(t(37786)),i=g(t(57819)),d=g(t(4206)),l=g(t(12972)),p=g(t(81666)),v=t(63618);function g(b){return b&&b.__esModule?b:{default:b}}function m(b,y){var E=(0,f.default)(b,!1,y==="fixed");return E.top=E.top+b.clientTop,E.left=E.left+b.clientLeft,E.bottom=E.top+b.clientHeight,E.right=E.left+b.clientWidth,E.width=b.clientWidth,E.height=b.clientHeight,E.x=E.left,E.y=E.top,E}function C(b,y,E){return y===n.viewport?(0,p.default)((0,r.default)(b,E)):(0,h.isElement)(y)?m(y,E):(0,p.default)((0,o.default)((0,s.default)(b)))}function T(b){var y=(0,a.default)((0,i.default)(b)),E=["absolute","fixed"].indexOf((0,c.default)(b).position)>=0,A=E&&(0,h.isHTMLElement)(b)?(0,u.default)(b):b;return(0,h.isElement)(A)?y.filter(function(N){return(0,h.isElement)(N)&&(0,d.default)(N,A)&&(0,l.default)(N)!=="body"}):[]}function I(b,y,E,A){var N=y==="clippingParents"?T(b):[].concat(y),M=[].concat(N,[E]),w=M[0],L=M.reduce(function(B,x){var j=C(b,x,A);return B.top=(0,v.max)(j.top,B.top),B.right=(0,v.min)(j.right,B.right),B.bottom=(0,v.min)(j.bottom,B.bottom),B.left=(0,v.max)(j.left,B.left),B},C(b,w,A));return L.width=L.right-L.left,L.height=L.bottom-L.top,L.x=L.left,L.y=L.top,L}},74758:function(S,e,t){"use strict";e.__esModule=!0,e.default=d;var n=f(t(37786)),r=f(t(13390)),o=f(t(12972)),a=t(75573),u=f(t(79697)),s=f(t(40600)),c=f(t(10798)),h=t(63618);function f(l){return l&&l.__esModule?l:{default:l}}function i(l){var p=l.getBoundingClientRect(),v=(0,h.round)(p.width)/l.offsetWidth||1,g=(0,h.round)(p.height)/l.offsetHeight||1;return v!==1||g!==1}function d(l,p,v){v===void 0&&(v=!1);var g=(0,a.isHTMLElement)(p),m=(0,a.isHTMLElement)(p)&&i(p),C=(0,s.default)(p),T=(0,n.default)(l,m,v),I={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(g||!g&&!v)&&(((0,o.default)(p)!=="body"||(0,c.default)(C))&&(I=(0,r.default)(p)),(0,a.isHTMLElement)(p)?(b=(0,n.default)(p,!0),b.x+=p.clientLeft,b.y+=p.clientTop):C&&(b.x=(0,u.default)(C))),{x:T.left+I.scrollLeft-b.x,y:T.top+I.scrollTop-b.y,width:T.width,height:T.height}}},16599:function(S,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(95115));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){return(0,n.default)(a).getComputedStyle(a)}},40600:function(S,e,t){"use strict";e.__esModule=!0,e.default=r;var n=t(75573);function r(o){return(((0,n.isElement)(o)?o.ownerDocument:o.document)||window.document).documentElement}},79752:function(S,e,t){"use strict";e.__esModule=!0,e.default=c;var n=s(t(40600)),r=s(t(16599)),o=s(t(79697)),a=s(t(43750)),u=t(63618);function s(h){return h&&h.__esModule?h:{default:h}}function c(h){var f,i=(0,n.default)(h),d=(0,a.default)(h),l=(f=h.ownerDocument)==null?void 0:f.body,p=(0,u.max)(i.scrollWidth,i.clientWidth,l?l.scrollWidth:0,l?l.clientWidth:0),v=(0,u.max)(i.scrollHeight,i.clientHeight,l?l.scrollHeight:0,l?l.clientHeight:0),g=-d.scrollLeft+(0,o.default)(h),m=-d.scrollTop;return(0,r.default)(l||i).direction==="rtl"&&(g+=(0,u.max)(i.clientWidth,l?l.clientWidth:0)-p),{width:p,height:v,x:g,y:m}}},3073:function(S,e){"use strict";e.__esModule=!0,e.default=t;function t(n){return{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}}},28811:function(S,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(37786));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){var u=(0,n.default)(a),s=a.offsetWidth,c=a.offsetHeight;return Math.abs(u.width-s)<=1&&(s=u.width),Math.abs(u.height-c)<=1&&(c=u.height),{x:a.offsetLeft,y:a.offsetTop,width:s,height:c}}},12972:function(S,e){"use strict";e.__esModule=!0,e.default=t;function t(n){return n?(n.nodeName||"").toLowerCase():null}},13390:function(S,e,t){"use strict";e.__esModule=!0,e.default=s;var n=u(t(43750)),r=u(t(95115)),o=t(75573),a=u(t(3073));function u(c){return c&&c.__esModule?c:{default:c}}function s(c){return c===(0,r.default)(c)||!(0,o.isHTMLElement)(c)?(0,n.default)(c):(0,a.default)(c)}},44896:function(S,e,t){"use strict";e.__esModule=!0,e.default=d;var n=h(t(95115)),r=h(t(12972)),o=h(t(16599)),a=t(75573),u=h(t(87031)),s=h(t(57819)),c=h(t(35366));function h(l){return l&&l.__esModule?l:{default:l}}function f(l){return!(0,a.isHTMLElement)(l)||(0,o.default)(l).position==="fixed"?null:l.offsetParent}function i(l){var p=/firefox/i.test((0,c.default)()),v=/Trident/i.test((0,c.default)());if(v&&(0,a.isHTMLElement)(l)){var g=(0,o.default)(l);if(g.position==="fixed")return null}var m=(0,s.default)(l);for((0,a.isShadowRoot)(m)&&(m=m.host);(0,a.isHTMLElement)(m)&&["html","body"].indexOf((0,r.default)(m))<0;){var C=(0,o.default)(m);if(C.transform!=="none"||C.perspective!=="none"||C.contain==="paint"||["transform","perspective"].indexOf(C.willChange)!==-1||p&&C.willChange==="filter"||p&&C.filter&&C.filter!=="none")return m;m=m.parentNode}return null}function d(l){for(var p=(0,n.default)(l),v=f(l);v&&(0,u.default)(v)&&(0,o.default)(v).position==="static";)v=f(v);return v&&((0,r.default)(v)==="html"||(0,r.default)(v)==="body"&&(0,o.default)(v).position==="static")?p:v||i(l)||p}},57819:function(S,e,t){"use strict";e.__esModule=!0,e.default=u;var n=a(t(12972)),r=a(t(40600)),o=t(75573);function a(s){return s&&s.__esModule?s:{default:s}}function u(s){return(0,n.default)(s)==="html"?s:s.assignedSlot||s.parentNode||((0,o.isShadowRoot)(s)?s.host:null)||(0,r.default)(s)}},24426:function(S,e,t){"use strict";e.__esModule=!0,e.default=s;var n=u(t(57819)),r=u(t(10798)),o=u(t(12972)),a=t(75573);function u(c){return c&&c.__esModule?c:{default:c}}function s(c){return["html","body","#document"].indexOf((0,o.default)(c))>=0?c.ownerDocument.body:(0,a.isHTMLElement)(c)&&(0,r.default)(c)?c:s((0,n.default)(c))}},87991:function(S,e,t){"use strict";e.__esModule=!0,e.default=s;var n=u(t(95115)),r=u(t(40600)),o=u(t(79697)),a=u(t(89331));function u(c){return c&&c.__esModule?c:{default:c}}function s(c,h){var f=(0,n.default)(c),i=(0,r.default)(c),d=f.visualViewport,l=i.clientWidth,p=i.clientHeight,v=0,g=0;if(d){l=d.width,p=d.height;var m=(0,a.default)();(m||!m&&h==="fixed")&&(v=d.offsetLeft,g=d.offsetTop)}return{width:l,height:p,x:v+(0,o.default)(c),y:g}}},95115:function(S,e){"use strict";e.__esModule=!0,e.default=t;function t(n){if(n==null)return window;if(n.toString()!=="[object Window]"){var r=n.ownerDocument;return r&&r.defaultView||window}return n}},43750:function(S,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(95115));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){var u=(0,n.default)(a),s=u.pageXOffset,c=u.pageYOffset;return{scrollLeft:s,scrollTop:c}}},79697:function(S,e,t){"use strict";e.__esModule=!0,e.default=u;var n=a(t(37786)),r=a(t(40600)),o=a(t(43750));function a(s){return s&&s.__esModule?s:{default:s}}function u(s){return(0,n.default)((0,r.default)(s)).left+(0,o.default)(s).scrollLeft}},75573:function(S,e,t){"use strict";e.__esModule=!0,e.isElement=o,e.isHTMLElement=a,e.isShadowRoot=u;var n=r(t(95115));function r(s){return s&&s.__esModule?s:{default:s}}function o(s){var c=(0,n.default)(s).Element;return s instanceof c||s instanceof Element}function a(s){var c=(0,n.default)(s).HTMLElement;return s instanceof c||s instanceof HTMLElement}function u(s){if(typeof ShadowRoot=="undefined")return!1;var c=(0,n.default)(s).ShadowRoot;return s instanceof c||s instanceof ShadowRoot}},89331:function(S,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(35366));function r(a){return a&&a.__esModule?a:{default:a}}function o(){return!/^((?!chrome|android).)*safari/i.test((0,n.default)())}},10798:function(S,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(16599));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){var u=(0,n.default)(a),s=u.overflow,c=u.overflowX,h=u.overflowY;return/auto|scroll|overlay|hidden/.test(s+h+c)}},87031:function(S,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(12972));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){return["table","td","th"].indexOf((0,n.default)(a))>=0}},98309:function(S,e,t){"use strict";e.__esModule=!0,e.default=s;var n=u(t(24426)),r=u(t(57819)),o=u(t(95115)),a=u(t(10798));function u(c){return c&&c.__esModule?c:{default:c}}function s(c,h){var f;h===void 0&&(h=[]);var i=(0,n.default)(c),d=i===((f=c.ownerDocument)==null?void 0:f.body),l=(0,o.default)(i),p=d?[l].concat(l.visualViewport||[],(0,a.default)(i)?i:[]):i,v=h.concat(p);return d?v:v.concat(s((0,r.default)(p)))}},46206:function(S,e){"use strict";e.__esModule=!0,e.write=e.viewport=e.variationPlacements=e.top=e.start=e.right=e.reference=e.read=e.popper=e.placements=e.modifierPhases=e.main=e.left=e.end=e.clippingParents=e.bottom=e.beforeWrite=e.beforeRead=e.beforeMain=e.basePlacements=e.auto=e.afterWrite=e.afterRead=e.afterMain=void 0;var t=e.top="top",n=e.bottom="bottom",r=e.right="right",o=e.left="left",a=e.auto="auto",u=e.basePlacements=[t,n,r,o],s=e.start="start",c=e.end="end",h=e.clippingParents="clippingParents",f=e.viewport="viewport",i=e.popper="popper",d=e.reference="reference",l=e.variationPlacements=u.reduce(function(N,M){return N.concat([M+"-"+s,M+"-"+c])},[]),p=e.placements=[].concat(u,[a]).reduce(function(N,M){return N.concat([M,M+"-"+s,M+"-"+c])},[]),v=e.beforeRead="beforeRead",g=e.read="read",m=e.afterRead="afterRead",C=e.beforeMain="beforeMain",T=e.main="main",I=e.afterMain="afterMain",b=e.beforeWrite="beforeWrite",y=e.write="write",E=e.afterWrite="afterWrite",A=e.modifierPhases=[v,g,m,C,T,I,b,y,E]},95996:function(S,e,t){"use strict";e.__esModule=!0;var n={popperGenerator:!0,detectOverflow:!0,createPopperBase:!0,createPopper:!0,createPopperLite:!0};e.popperGenerator=e.detectOverflow=e.createPopperLite=e.createPopperBase=e.createPopper=void 0;var r=t(46206);Object.keys(r).forEach(function(c){c==="default"||c==="__esModule"||Object.prototype.hasOwnProperty.call(n,c)||c in e&&e[c]===r[c]||(e[c]=r[c])});var o=t(39805);Object.keys(o).forEach(function(c){c==="default"||c==="__esModule"||Object.prototype.hasOwnProperty.call(n,c)||c in e&&e[c]===o[c]||(e[c]=o[c])});var a=t(96376);e.popperGenerator=a.popperGenerator,e.detectOverflow=a.detectOverflow,e.createPopperBase=a.createPopper;var u=t(83312);e.createPopper=u.createPopper;var s=t(2473);e.createPopperLite=s.createPopper},19975:function(S,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=o(t(12972)),r=t(75573);function o(c){return c&&c.__esModule?c:{default:c}}function a(c){var h=c.state;Object.keys(h.elements).forEach(function(f){var i=h.styles[f]||{},d=h.attributes[f]||{},l=h.elements[f];!(0,r.isHTMLElement)(l)||!(0,n.default)(l)||(Object.assign(l.style,i),Object.keys(d).forEach(function(p){var v=d[p];v===!1?l.removeAttribute(p):l.setAttribute(p,v===!0?"":v)}))})}function u(c){var h=c.state,f={popper:{position:h.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(h.elements.popper.style,f.popper),h.styles=f,h.elements.arrow&&Object.assign(h.elements.arrow.style,f.arrow),function(){Object.keys(h.elements).forEach(function(i){var d=h.elements[i],l=h.attributes[i]||{},p=Object.keys(h.styles.hasOwnProperty(i)?h.styles[i]:f[i]),v=p.reduce(function(g,m){return g[m]="",g},{});!(0,r.isHTMLElement)(d)||!(0,n.default)(d)||(Object.assign(d.style,v),Object.keys(l).forEach(function(g){d.removeAttribute(g)}))})}}var s=e.default={name:"applyStyles",enabled:!0,phase:"write",fn:a,effect:u,requires:["computeStyles"]}},52744:function(S,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=i(t(83104)),r=i(t(28811)),o=i(t(4206)),a=i(t(44896)),u=i(t(41199)),s=t(28595),c=i(t(43286)),h=i(t(81447)),f=t(46206);function i(g){return g&&g.__esModule?g:{default:g}}var d=function(){function g(m,C){return m=typeof m=="function"?m(Object.assign({},C.rects,{placement:C.placement})):m,(0,c.default)(typeof m!="number"?m:(0,h.default)(m,f.basePlacements))}return g}();function l(g){var m,C=g.state,T=g.name,I=g.options,b=C.elements.arrow,y=C.modifiersData.popperOffsets,E=(0,n.default)(C.placement),A=(0,u.default)(E),N=[f.left,f.right].indexOf(E)>=0,M=N?"height":"width";if(!(!b||!y)){var w=d(I.padding,C),L=(0,r.default)(b),B=A==="y"?f.top:f.left,x=A==="y"?f.bottom:f.right,j=C.rects.reference[M]+C.rects.reference[A]-y[A]-C.rects.popper[M],V=y[A]-C.rects.reference[A],Y=(0,a.default)(b),D=Y?A==="y"?Y.clientHeight||0:Y.clientWidth||0:0,U=j/2-V/2,G=w[B],K=D-L[M]-w[x],$=D/2-L[M]/2+U,H=(0,s.within)(G,$,K),tt=A;C.modifiersData[T]=(m={},m[tt]=H,m.centerOffset=H-$,m)}}function p(g){var m=g.state,C=g.options,T=C.element,I=T===void 0?"[data-popper-arrow]":T;I!=null&&(typeof I=="string"&&(I=m.elements.popper.querySelector(I),!I)||(0,o.default)(m.elements.popper,I)&&(m.elements.arrow=I))}var v=e.default={name:"arrow",enabled:!0,phase:"main",fn:l,effect:p,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]}},59894:function(S,e,t){"use strict";e.__esModule=!0,e.default=void 0,e.mapToStyles=l;var n=t(46206),r=f(t(44896)),o=f(t(95115)),a=f(t(40600)),u=f(t(16599)),s=f(t(83104)),c=f(t(45)),h=t(63618);function f(g){return g&&g.__esModule?g:{default:g}}var i={top:"auto",right:"auto",bottom:"auto",left:"auto"};function d(g,m){var C=g.x,T=g.y,I=m.devicePixelRatio||1;return{x:(0,h.round)(C*I)/I||0,y:(0,h.round)(T*I)/I||0}}function l(g){var m,C=g.popper,T=g.popperRect,I=g.placement,b=g.variation,y=g.offsets,E=g.position,A=g.gpuAcceleration,N=g.adaptive,M=g.roundOffsets,w=g.isFixed,L=y.x,B=L===void 0?0:L,x=y.y,j=x===void 0?0:x,V=typeof M=="function"?M({x:B,y:j}):{x:B,y:j};B=V.x,j=V.y;var Y=y.hasOwnProperty("x"),D=y.hasOwnProperty("y"),U=n.left,G=n.top,K=window;if(N){var $=(0,r.default)(C),H="clientHeight",tt="clientWidth";if($===(0,o.default)(C)&&($=(0,a.default)(C),(0,u.default)($).position!=="static"&&E==="absolute"&&(H="scrollHeight",tt="scrollWidth")),$=$,I===n.top||(I===n.left||I===n.right)&&b===n.end){G=n.bottom;var it=w&&$===K&&K.visualViewport?K.visualViewport.height:$[H];j-=it-T.height,j*=A?1:-1}if(I===n.left||(I===n.top||I===n.bottom)&&b===n.end){U=n.right;var ht=w&&$===K&&K.visualViewport?K.visualViewport.width:$[tt];B-=ht-T.width,B*=A?1:-1}}var k=Object.assign({position:E},N&&i),J=M===!0?d({x:B,y:j},(0,o.default)(C)):{x:B,y:j};if(B=J.x,j=J.y,A){var nt;return Object.assign({},k,(nt={},nt[G]=D?"0":"",nt[U]=Y?"0":"",nt.transform=(K.devicePixelRatio||1)<=1?"translate("+B+"px, "+j+"px)":"translate3d("+B+"px, "+j+"px, 0)",nt))}return Object.assign({},k,(m={},m[G]=D?j+"px":"",m[U]=Y?B+"px":"",m.transform="",m))}function p(g){var m=g.state,C=g.options,T=C.gpuAcceleration,I=T===void 0?!0:T,b=C.adaptive,y=b===void 0?!0:b,E=C.roundOffsets,A=E===void 0?!0:E,N={placement:(0,s.default)(m.placement),variation:(0,c.default)(m.placement),popper:m.elements.popper,popperRect:m.rects.popper,gpuAcceleration:I,isFixed:m.options.strategy==="fixed"};m.modifiersData.popperOffsets!=null&&(m.styles.popper=Object.assign({},m.styles.popper,l(Object.assign({},N,{offsets:m.modifiersData.popperOffsets,position:m.options.strategy,adaptive:y,roundOffsets:A})))),m.modifiersData.arrow!=null&&(m.styles.arrow=Object.assign({},m.styles.arrow,l(Object.assign({},N,{offsets:m.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:A})))),m.attributes.popper=Object.assign({},m.attributes.popper,{"data-popper-placement":m.placement})}var v=e.default={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:p,data:{}}},36692:function(S,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=r(t(95115));function r(s){return s&&s.__esModule?s:{default:s}}var o={passive:!0};function a(s){var c=s.state,h=s.instance,f=s.options,i=f.scroll,d=i===void 0?!0:i,l=f.resize,p=l===void 0?!0:l,v=(0,n.default)(c.elements.popper),g=[].concat(c.scrollParents.reference,c.scrollParents.popper);return d&&g.forEach(function(m){m.addEventListener("scroll",h.update,o)}),p&&v.addEventListener("resize",h.update,o),function(){d&&g.forEach(function(m){m.removeEventListener("scroll",h.update,o)}),p&&v.removeEventListener("resize",h.update,o)}}var u=e.default={name:"eventListeners",enabled:!0,phase:"write",fn:function(){function s(){}return s}(),effect:a,data:{}}},23798:function(S,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=h(t(71376)),r=h(t(83104)),o=h(t(86459)),a=h(t(17633)),u=h(t(9041)),s=t(46206),c=h(t(45));function h(l){return l&&l.__esModule?l:{default:l}}function f(l){if((0,r.default)(l)===s.auto)return[];var p=(0,n.default)(l);return[(0,o.default)(l),p,(0,o.default)(p)]}function i(l){var p=l.state,v=l.options,g=l.name;if(!p.modifiersData[g]._skip){for(var m=v.mainAxis,C=m===void 0?!0:m,T=v.altAxis,I=T===void 0?!0:T,b=v.fallbackPlacements,y=v.padding,E=v.boundary,A=v.rootBoundary,N=v.altBoundary,M=v.flipVariations,w=M===void 0?!0:M,L=v.allowedAutoPlacements,B=p.options.placement,x=(0,r.default)(B),j=x===B,V=b||(j||!w?[(0,n.default)(B)]:f(B)),Y=[B].concat(V).reduce(function(yt,_){return yt.concat((0,r.default)(_)===s.auto?(0,u.default)(p,{placement:_,boundary:E,rootBoundary:A,padding:y,flipVariations:w,allowedAutoPlacements:L}):_)},[]),D=p.rects.reference,U=p.rects.popper,G=new Map,K=!0,$=Y[0],H=0;H=0,J=k?"width":"height",nt=(0,a.default)(p,{placement:tt,boundary:E,rootBoundary:A,altBoundary:N,padding:y}),st=k?ht?s.right:s.left:ht?s.bottom:s.top;D[J]>U[J]&&(st=(0,n.default)(st));var ot=(0,n.default)(st),pt=[];if(C&&pt.push(nt[it]<=0),I&&pt.push(nt[st]<=0,nt[ot]<=0),pt.every(function(yt){return yt})){$=tt,K=!1;break}G.set(tt,pt)}if(K)for(var Nt=w?3:1,rt=function(){function yt(_){var X=Y.find(function(ct){var Tt=G.get(ct);if(Tt)return Tt.slice(0,_).every(function(St){return St})});if(X)return $=X,"break"}return yt}(),et=Nt;et>0;et--){var dt=rt(et);if(dt==="break")break}p.placement!==$&&(p.modifiersData[g]._skip=!0,p.placement=$,p.reset=!0)}}var d=e.default={name:"flip",enabled:!0,phase:"main",fn:i,requiresIfExists:["offset"],data:{_skip:!1}}},83761:function(S,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=t(46206),r=o(t(17633));function o(h){return h&&h.__esModule?h:{default:h}}function a(h,f,i){return i===void 0&&(i={x:0,y:0}),{top:h.top-f.height-i.y,right:h.right-f.width+i.x,bottom:h.bottom-f.height+i.y,left:h.left-f.width-i.x}}function u(h){return[n.top,n.right,n.bottom,n.left].some(function(f){return h[f]>=0})}function s(h){var f=h.state,i=h.name,d=f.rects.reference,l=f.rects.popper,p=f.modifiersData.preventOverflow,v=(0,r.default)(f,{elementContext:"reference"}),g=(0,r.default)(f,{altBoundary:!0}),m=a(v,d),C=a(g,l,p),T=u(m),I=u(C);f.modifiersData[i]={referenceClippingOffsets:m,popperEscapeOffsets:C,isReferenceHidden:T,hasPopperEscaped:I},f.attributes.popper=Object.assign({},f.attributes.popper,{"data-popper-reference-hidden":T,"data-popper-escaped":I})}var c=e.default={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:s}},39805:function(S,e,t){"use strict";e.__esModule=!0,e.preventOverflow=e.popperOffsets=e.offset=e.hide=e.flip=e.eventListeners=e.computeStyles=e.arrow=e.applyStyles=void 0;var n=i(t(19975));e.applyStyles=n.default;var r=i(t(52744));e.arrow=r.default;var o=i(t(59894));e.computeStyles=o.default;var a=i(t(36692));e.eventListeners=a.default;var u=i(t(23798));e.flip=u.default;var s=i(t(83761));e.hide=s.default;var c=i(t(61410));e.offset=c.default;var h=i(t(40107));e.popperOffsets=h.default;var f=i(t(75137));e.preventOverflow=f.default;function i(d){return d&&d.__esModule?d:{default:d}}},61410:function(S,e,t){"use strict";e.__esModule=!0,e.default=void 0,e.distanceAndSkiddingToXY=a;var n=o(t(83104)),r=t(46206);function o(c){return c&&c.__esModule?c:{default:c}}function a(c,h,f){var i=(0,n.default)(c),d=[r.left,r.top].indexOf(i)>=0?-1:1,l=typeof f=="function"?f(Object.assign({},h,{placement:c})):f,p=l[0],v=l[1];return p=p||0,v=(v||0)*d,[r.left,r.right].indexOf(i)>=0?{x:v,y:p}:{x:p,y:v}}function u(c){var h=c.state,f=c.options,i=c.name,d=f.offset,l=d===void 0?[0,0]:d,p=r.placements.reduce(function(C,T){return C[T]=a(T,h.rects,l),C},{}),v=p[h.placement],g=v.x,m=v.y;h.modifiersData.popperOffsets!=null&&(h.modifiersData.popperOffsets.x+=g,h.modifiersData.popperOffsets.y+=m),h.modifiersData[i]=p}var s=e.default={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:u}},40107:function(S,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=r(t(89951));function r(u){return u&&u.__esModule?u:{default:u}}function o(u){var s=u.state,c=u.name;s.modifiersData[c]=(0,n.default)({reference:s.rects.reference,element:s.rects.popper,strategy:"absolute",placement:s.placement})}var a=e.default={name:"popperOffsets",enabled:!0,phase:"read",fn:o,data:{}}},75137:function(S,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=t(46206),r=l(t(83104)),o=l(t(41199)),a=l(t(28066)),u=t(28595),s=l(t(28811)),c=l(t(44896)),h=l(t(17633)),f=l(t(45)),i=l(t(34780)),d=t(63618);function l(g){return g&&g.__esModule?g:{default:g}}function p(g){var m=g.state,C=g.options,T=g.name,I=C.mainAxis,b=I===void 0?!0:I,y=C.altAxis,E=y===void 0?!1:y,A=C.boundary,N=C.rootBoundary,M=C.altBoundary,w=C.padding,L=C.tether,B=L===void 0?!0:L,x=C.tetherOffset,j=x===void 0?0:x,V=(0,h.default)(m,{boundary:A,rootBoundary:N,padding:w,altBoundary:M}),Y=(0,r.default)(m.placement),D=(0,f.default)(m.placement),U=!D,G=(0,o.default)(Y),K=(0,a.default)(G),$=m.modifiersData.popperOffsets,H=m.rects.reference,tt=m.rects.popper,it=typeof j=="function"?j(Object.assign({},m.rects,{placement:m.placement})):j,ht=typeof it=="number"?{mainAxis:it,altAxis:it}:Object.assign({mainAxis:0,altAxis:0},it),k=m.modifiersData.offset?m.modifiersData.offset[m.placement]:null,J={x:0,y:0};if($){if(b){var nt,st=G==="y"?n.top:n.left,ot=G==="y"?n.bottom:n.right,pt=G==="y"?"height":"width",Nt=$[G],rt=Nt+V[st],et=Nt-V[ot],dt=B?-tt[pt]/2:0,yt=D===n.start?H[pt]:tt[pt],_=D===n.start?-tt[pt]:-H[pt],X=m.elements.arrow,ct=B&&X?(0,s.default)(X):{width:0,height:0},Tt=m.modifiersData["arrow#persistent"]?m.modifiersData["arrow#persistent"].padding:(0,i.default)(),St=Tt[st],ut=Tt[ot],gt=(0,u.within)(0,H[pt],ct[pt]),Ot=U?H[pt]/2-dt-gt-St-ht.mainAxis:yt-gt-St-ht.mainAxis,q=U?-H[pt]/2+dt+gt+ut+ht.mainAxis:_+gt+ut+ht.mainAxis,ft=m.elements.arrow&&(0,c.default)(m.elements.arrow),mt=ft?G==="y"?ft.clientTop||0:ft.clientLeft||0:0,At=(nt=k==null?void 0:k[G])!=null?nt:0,Dt=Nt+Ot-At-mt,jt=Nt+q-At,bt=(0,u.within)(B?(0,d.min)(rt,Dt):rt,Nt,B?(0,d.max)(et,jt):et);$[G]=bt,J[G]=bt-Nt}if(E){var lt,vt=G==="x"?n.top:n.left,It=G==="x"?n.bottom:n.right,Et=$[K],Pt=K==="y"?"height":"width",Ft=Et+V[vt],Vt=Et-V[It],Gt=[n.top,n.left].indexOf(Y)!==-1,Wt=(lt=k==null?void 0:k[K])!=null?lt:0,Kt=Gt?Ft:Et-H[Pt]-tt[Pt]-Wt+ht.altAxis,Ht=Gt?Et+H[Pt]+tt[Pt]-Wt-ht.altAxis:Vt,Zt=B&&Gt?(0,u.withinMaxClamp)(Kt,Et,Ht):(0,u.within)(B?Kt:Ft,Et,B?Ht:Vt);$[K]=Zt,J[K]=Zt-Et}m.modifiersData[T]=J}}var v=e.default={name:"preventOverflow",enabled:!0,phase:"main",fn:p,requiresIfExists:["offset"]}},2473:function(S,e,t){"use strict";e.__esModule=!0,e.defaultModifiers=e.createPopper=void 0;var n=t(96376);e.popperGenerator=n.popperGenerator,e.detectOverflow=n.detectOverflow;var r=s(t(36692)),o=s(t(40107)),a=s(t(59894)),u=s(t(19975));function s(f){return f&&f.__esModule?f:{default:f}}var c=e.defaultModifiers=[r.default,o.default,a.default,u.default],h=e.createPopper=(0,n.popperGenerator)({defaultModifiers:c})},83312:function(S,e,t){"use strict";e.__esModule=!0;var n={createPopper:!0,createPopperLite:!0,defaultModifiers:!0,popperGenerator:!0,detectOverflow:!0};e.defaultModifiers=e.createPopperLite=e.createPopper=void 0;var r=t(96376);e.popperGenerator=r.popperGenerator,e.detectOverflow=r.detectOverflow;var o=v(t(36692)),a=v(t(40107)),u=v(t(59894)),s=v(t(19975)),c=v(t(61410)),h=v(t(23798)),f=v(t(75137)),i=v(t(52744)),d=v(t(83761)),l=t(2473);e.createPopperLite=l.createPopper;var p=t(39805);Object.keys(p).forEach(function(C){C==="default"||C==="__esModule"||Object.prototype.hasOwnProperty.call(n,C)||C in e&&e[C]===p[C]||(e[C]=p[C])});function v(C){return C&&C.__esModule?C:{default:C}}var g=e.defaultModifiers=[o.default,a.default,u.default,s.default,c.default,h.default,f.default,i.default,d.default],m=e.createPopperLite=e.createPopper=(0,r.popperGenerator)({defaultModifiers:g})},9041:function(S,e,t){"use strict";e.__esModule=!0,e.default=s;var n=u(t(45)),r=t(46206),o=u(t(17633)),a=u(t(83104));function u(c){return c&&c.__esModule?c:{default:c}}function s(c,h){h===void 0&&(h={});var f=h,i=f.placement,d=f.boundary,l=f.rootBoundary,p=f.padding,v=f.flipVariations,g=f.allowedAutoPlacements,m=g===void 0?r.placements:g,C=(0,n.default)(i),T=C?v?r.variationPlacements:r.variationPlacements.filter(function(y){return(0,n.default)(y)===C}):r.basePlacements,I=T.filter(function(y){return m.indexOf(y)>=0});I.length===0&&(I=T);var b=I.reduce(function(y,E){return y[E]=(0,o.default)(c,{placement:E,boundary:d,rootBoundary:l,padding:p})[(0,a.default)(E)],y},{});return Object.keys(b).sort(function(y,E){return b[y]-b[E]})}},89951:function(S,e,t){"use strict";e.__esModule=!0,e.default=s;var n=u(t(83104)),r=u(t(45)),o=u(t(41199)),a=t(46206);function u(c){return c&&c.__esModule?c:{default:c}}function s(c){var h=c.reference,f=c.element,i=c.placement,d=i?(0,n.default)(i):null,l=i?(0,r.default)(i):null,p=h.x+h.width/2-f.width/2,v=h.y+h.height/2-f.height/2,g;switch(d){case a.top:g={x:p,y:h.y-f.height};break;case a.bottom:g={x:p,y:h.y+h.height};break;case a.right:g={x:h.x+h.width,y:v};break;case a.left:g={x:h.x-f.width,y:v};break;default:g={x:h.x,y:h.y}}var m=d?(0,o.default)(d):null;if(m!=null){var C=m==="y"?"height":"width";switch(l){case a.start:g[m]=g[m]-(h[C]/2-f[C]/2);break;case a.end:g[m]=g[m]+(h[C]/2-f[C]/2);break;default:}}return g}},10579:function(S,e){"use strict";e.__esModule=!0,e.default=t;function t(n){var r;return function(){return r||(r=new Promise(function(o){Promise.resolve().then(function(){r=void 0,o(n())})})),r}}},17633:function(S,e,t){"use strict";e.__esModule=!0,e.default=d;var n=i(t(49035)),r=i(t(40600)),o=i(t(37786)),a=i(t(89951)),u=i(t(81666)),s=t(46206),c=t(75573),h=i(t(43286)),f=i(t(81447));function i(l){return l&&l.__esModule?l:{default:l}}function d(l,p){p===void 0&&(p={});var v=p,g=v.placement,m=g===void 0?l.placement:g,C=v.strategy,T=C===void 0?l.strategy:C,I=v.boundary,b=I===void 0?s.clippingParents:I,y=v.rootBoundary,E=y===void 0?s.viewport:y,A=v.elementContext,N=A===void 0?s.popper:A,M=v.altBoundary,w=M===void 0?!1:M,L=v.padding,B=L===void 0?0:L,x=(0,h.default)(typeof B!="number"?B:(0,f.default)(B,s.basePlacements)),j=N===s.popper?s.reference:s.popper,V=l.rects.popper,Y=l.elements[w?j:N],D=(0,n.default)((0,c.isElement)(Y)?Y:Y.contextElement||(0,r.default)(l.elements.popper),b,E,T),U=(0,o.default)(l.elements.reference),G=(0,a.default)({reference:U,element:V,strategy:"absolute",placement:m}),K=(0,u.default)(Object.assign({},V,G)),$=N===s.popper?K:U,H={top:D.top-$.top+x.top,bottom:$.bottom-D.bottom+x.bottom,left:D.left-$.left+x.left,right:$.right-D.right+x.right},tt=l.modifiersData.offset;if(N===s.popper&&tt){var it=tt[m];Object.keys(H).forEach(function(ht){var k=[s.right,s.bottom].indexOf(ht)>=0?1:-1,J=[s.top,s.bottom].indexOf(ht)>=0?"y":"x";H[ht]+=it[J]*k})}return H}},81447:function(S,e){"use strict";e.__esModule=!0,e.default=t;function t(n,r){return r.reduce(function(o,a){return o[a]=n,o},{})}},28066:function(S,e){"use strict";e.__esModule=!0,e.default=t;function t(n){return n==="x"?"y":"x"}},83104:function(S,e,t){"use strict";e.__esModule=!0,e.default=r;var n=t(46206);function r(o){return o.split("-")[0]}},34780:function(S,e){"use strict";e.__esModule=!0,e.default=t;function t(){return{top:0,right:0,bottom:0,left:0}}},41199:function(S,e){"use strict";e.__esModule=!0,e.default=t;function t(n){return["top","bottom"].indexOf(n)>=0?"x":"y"}},71376:function(S,e){"use strict";e.__esModule=!0,e.default=n;var t={left:"right",right:"left",bottom:"top",top:"bottom"};function n(r){return r.replace(/left|right|bottom|top/g,function(o){return t[o]})}},86459:function(S,e){"use strict";e.__esModule=!0,e.default=n;var t={start:"end",end:"start"};function n(r){return r.replace(/start|end/g,function(o){return t[o]})}},45:function(S,e){"use strict";e.__esModule=!0,e.default=t;function t(n){return n.split("-")[1]}},63618:function(S,e){"use strict";e.__esModule=!0,e.round=e.min=e.max=void 0;var t=e.max=Math.max,n=e.min=Math.min,r=e.round=Math.round},56500:function(S,e){"use strict";e.__esModule=!0,e.default=t;function t(n){var r=n.reduce(function(o,a){var u=o[a.name];return o[a.name]=u?Object.assign({},u,a,{options:Object.assign({},u.options,a.options),data:Object.assign({},u.data,a.data)}):a,o},{});return Object.keys(r).map(function(o){return r[o]})}},43286:function(S,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(34780));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){return Object.assign({},(0,n.default)(),a)}},33118:function(S,e,t){"use strict";e.__esModule=!0,e.default=o;var n=t(46206);function r(a){var u=new Map,s=new Set,c=[];a.forEach(function(f){u.set(f.name,f)});function h(f){s.add(f.name);var i=[].concat(f.requires||[],f.requiresIfExists||[]);i.forEach(function(d){if(!s.has(d)){var l=u.get(d);l&&h(l)}}),c.push(f)}return a.forEach(function(f){s.has(f.name)||h(f)}),c}function o(a){var u=r(a);return n.modifierPhases.reduce(function(s,c){return s.concat(u.filter(function(h){return h.phase===c}))},[])}},81666:function(S,e){"use strict";e.__esModule=!0,e.default=t;function t(n){return Object.assign({},n,{left:n.x,top:n.y,right:n.x+n.width,bottom:n.y+n.height})}},35366:function(S,e){"use strict";e.__esModule=!0,e.default=t;function t(){var n=navigator.userAgentData;return n!=null&&n.brands&&Array.isArray(n.brands)?n.brands.map(function(r){return r.brand+"/"+r.version}).join(" "):navigator.userAgent}},28595:function(S,e,t){"use strict";e.__esModule=!0,e.within=r,e.withinMaxClamp=o;var n=t(63618);function r(a,u,s){return(0,n.max)(a,(0,n.min)(u,s))}function o(a,u,s){var c=r(a,u,s);return c>s?s:c}},22734:function(S){"use strict";/*! @license DOMPurify 2.5.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.5.0/LICENSE */(function(e,t){S.exports=t()})(void 0,function(){"use strict";function e(q){"@babel/helpers - typeof";return e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(ft){return typeof ft}:function(ft){return ft&&typeof Symbol=="function"&&ft.constructor===Symbol&&ft!==Symbol.prototype?"symbol":typeof ft},e(q)}function t(q,ft){return t=Object.setPrototypeOf||function(){function mt(At,Dt){return At.__proto__=Dt,At}return mt}(),t(q,ft)}function n(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(q){return!1}}function r(q,ft,mt){return n()?r=Reflect.construct:r=function(){function At(Dt,jt,bt){var lt=[null];lt.push.apply(lt,jt);var vt=Function.bind.apply(Dt,lt),It=new vt;return bt&&t(It,bt.prototype),It}return At}(),r.apply(null,arguments)}function o(q){return a(q)||u(q)||s(q)||h()}function a(q){if(Array.isArray(q))return c(q)}function u(q){if(typeof Symbol!="undefined"&&q[Symbol.iterator]!=null||q["@@iterator"]!=null)return Array.from(q)}function s(q,ft){if(q){if(typeof q=="string")return c(q,ft);var mt=Object.prototype.toString.call(q).slice(8,-1);if(mt==="Object"&&q.constructor&&(mt=q.constructor.name),mt==="Map"||mt==="Set")return Array.from(q);if(mt==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(mt))return c(q,ft)}}function c(q,ft){(ft==null||ft>q.length)&&(ft=q.length);for(var mt=0,At=new Array(ft);mt1?mt-1:0),Dt=1;Dt/gm),rt=g(/\${[\w\W]*}/gm),et=g(/^data-[\-\w.\u00B7-\uFFFF]/),dt=g(/^aria-[\-\w]+$/),yt=g(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),_=g(/^(?:\w+script|data):/i),X=g(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ct=g(/^html$/i),Tt=g(/^[a-z][.\w]*(-[.\w]+)+$/i),St=function(){function q(){return typeof window=="undefined"?null:window}return q}(),ut=function(){function q(ft,mt){if(e(ft)!=="object"||typeof ft.createPolicy!="function")return null;var At=null,Dt="data-tt-policy-suffix";mt.currentScript&&mt.currentScript.hasAttribute(Dt)&&(At=mt.currentScript.getAttribute(Dt));var jt="dompurify"+(At?"#"+At:"");try{return ft.createPolicy(jt,{createHTML:function(){function bt(lt){return lt}return bt}(),createScriptURL:function(){function bt(lt){return lt}return bt}()})}catch(bt){return null}}return q}();function gt(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:St(),ft=function(){function O(P){return gt(P)}return O}();if(ft.version="2.5.0",ft.removed=[],!q||!q.document||q.document.nodeType!==9)return ft.isSupported=!1,ft;var mt=q.document,At=q.document,Dt=q.DocumentFragment,jt=q.HTMLTemplateElement,bt=q.Node,lt=q.Element,vt=q.NodeFilter,It=q.NamedNodeMap,Et=It===void 0?q.NamedNodeMap||q.MozNamedAttrMap:It,Pt=q.HTMLFormElement,Ft=q.DOMParser,Vt=q.trustedTypes,Gt=lt.prototype,Wt=G(Gt,"cloneNode"),Kt=G(Gt,"nextSibling"),Ht=G(Gt,"childNodes"),Zt=G(Gt,"parentNode");if(typeof jt=="function"){var Le=At.createElement("template");Le.content&&Le.content.ownerDocument&&(At=Le.content.ownerDocument)}var _t=ut(Vt,mt),Pe=_t?_t.createHTML(""):"",Ne=At,me=Ne.implementation,ye=Ne.createNodeIterator,an=Ne.createDocumentFragment,un=Ne.getElementsByTagName,Tn=mt.importNode,Ye={};try{Ye=U(At).documentMode?At.documentMode:{}}catch(O){}var re={};ft.isSupported=typeof Zt=="function"&&me&&me.createHTMLDocument!==void 0&&Ye!==9;var $e=pt,He=Nt,Be=rt,sn=et,In=dt,cn=_,ln=X,An=Tt,Se=yt,zt=null,te=D({},[].concat(o(K),o($),o(H),o(it),o(k))),Yt=null,Ee=D({},[].concat(o(J),o(nt),o(st),o(ot))),kt=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),le=null,Ce=null,We=!0,ze=!0,fn=!1,dn=!0,be=!1,De=!0,fe=!1,Fe=!1,xe=!1,de=!1,Xt=!1,Ve=!1,vn=!0,ke=!1,hn="user-content-",ue=!0,Me=!1,Te={},Ie=null,Xe=D({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Je=null,gn=D({},["audio","video","img","source","image","track"]),je=null,pn=D({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ee="http://www.w3.org/1998/Math/MathML",Ue="http://www.w3.org/2000/svg",se="http://www.w3.org/1999/xhtml",Ae=se,Qe=!1,Ze=null,On=D({},[ee,Ue,se],N),ce,Pn=["application/xhtml+xml","text/html"],mn="text/html",Jt,Oe=null,Nn=At.createElement("form"),yn=function(){function O(P){return P instanceof RegExp||P instanceof Function}return O}(),qe=function(){function O(P){Oe&&Oe===P||((!P||e(P)!=="object")&&(P={}),P=U(P),ce=Pn.indexOf(P.PARSER_MEDIA_TYPE)===-1?ce=mn:ce=P.PARSER_MEDIA_TYPE,Jt=ce==="application/xhtml+xml"?N:A,zt="ALLOWED_TAGS"in P?D({},P.ALLOWED_TAGS,Jt):te,Yt="ALLOWED_ATTR"in P?D({},P.ALLOWED_ATTR,Jt):Ee,Ze="ALLOWED_NAMESPACES"in P?D({},P.ALLOWED_NAMESPACES,N):On,je="ADD_URI_SAFE_ATTR"in P?D(U(pn),P.ADD_URI_SAFE_ATTR,Jt):pn,Je="ADD_DATA_URI_TAGS"in P?D(U(gn),P.ADD_DATA_URI_TAGS,Jt):gn,Ie="FORBID_CONTENTS"in P?D({},P.FORBID_CONTENTS,Jt):Xe,le="FORBID_TAGS"in P?D({},P.FORBID_TAGS,Jt):{},Ce="FORBID_ATTR"in P?D({},P.FORBID_ATTR,Jt):{},Te="USE_PROFILES"in P?P.USE_PROFILES:!1,We=P.ALLOW_ARIA_ATTR!==!1,ze=P.ALLOW_DATA_ATTR!==!1,fn=P.ALLOW_UNKNOWN_PROTOCOLS||!1,dn=P.ALLOW_SELF_CLOSE_IN_ATTR!==!1,be=P.SAFE_FOR_TEMPLATES||!1,De=P.SAFE_FOR_XML!==!1,fe=P.WHOLE_DOCUMENT||!1,de=P.RETURN_DOM||!1,Xt=P.RETURN_DOM_FRAGMENT||!1,Ve=P.RETURN_TRUSTED_TYPE||!1,xe=P.FORCE_BODY||!1,vn=P.SANITIZE_DOM!==!1,ke=P.SANITIZE_NAMED_PROPS||!1,ue=P.KEEP_CONTENT!==!1,Me=P.IN_PLACE||!1,Se=P.ALLOWED_URI_REGEXP||Se,Ae=P.NAMESPACE||se,kt=P.CUSTOM_ELEMENT_HANDLING||{},P.CUSTOM_ELEMENT_HANDLING&&yn(P.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(kt.tagNameCheck=P.CUSTOM_ELEMENT_HANDLING.tagNameCheck),P.CUSTOM_ELEMENT_HANDLING&&yn(P.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(kt.attributeNameCheck=P.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),P.CUSTOM_ELEMENT_HANDLING&&typeof P.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(kt.allowCustomizedBuiltInElements=P.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),be&&(ze=!1),Xt&&(de=!0),Te&&(zt=D({},o(k)),Yt=[],Te.html===!0&&(D(zt,K),D(Yt,J)),Te.svg===!0&&(D(zt,$),D(Yt,nt),D(Yt,ot)),Te.svgFilters===!0&&(D(zt,H),D(Yt,nt),D(Yt,ot)),Te.mathMl===!0&&(D(zt,it),D(Yt,st),D(Yt,ot))),P.ADD_TAGS&&(zt===te&&(zt=U(zt)),D(zt,P.ADD_TAGS,Jt)),P.ADD_ATTR&&(Yt===Ee&&(Yt=U(Yt)),D(Yt,P.ADD_ATTR,Jt)),P.ADD_URI_SAFE_ATTR&&D(je,P.ADD_URI_SAFE_ATTR,Jt),P.FORBID_CONTENTS&&(Ie===Xe&&(Ie=U(Ie)),D(Ie,P.FORBID_CONTENTS,Jt)),ue&&(zt["#text"]=!0),fe&&D(zt,["html","head","body"]),zt.table&&(D(zt,["tbody"]),delete le.tbody),v&&v(P),Oe=P)}return O}(),Sn=D({},["mi","mo","mn","ms","mtext"]),oe=D({},["foreignobject","desc","title","annotation-xml"]),Ge=D({},["title","style","font","a","script"]),Re=D({},$);D(Re,H),D(Re,tt);var _e=D({},it);D(_e,ht);var Mn=function(){function O(P){var R=Zt(P);(!R||!R.tagName)&&(R={namespaceURI:Ae,tagName:"template"});var F=A(P.tagName),W=A(R.tagName);return Ze[P.namespaceURI]?P.namespaceURI===Ue?R.namespaceURI===se?F==="svg":R.namespaceURI===ee?F==="svg"&&(W==="annotation-xml"||Sn[W]):!!Re[F]:P.namespaceURI===ee?R.namespaceURI===se?F==="math":R.namespaceURI===Ue?F==="math"&&oe[W]:!!_e[F]:P.namespaceURI===se?R.namespaceURI===Ue&&!oe[W]||R.namespaceURI===ee&&!Sn[W]?!1:!_e[F]&&(Ge[F]||!Re[F]):!!(ce==="application/xhtml+xml"&&Ze[P.namespaceURI]):!1}return O}(),ne=function(){function O(P){E(ft.removed,{element:P});try{P.parentNode.removeChild(P)}catch(R){try{P.outerHTML=Pe}catch(F){P.remove()}}}return O}(),Ke=function(){function O(P,R){try{E(ft.removed,{attribute:R.getAttributeNode(P),from:R})}catch(F){E(ft.removed,{attribute:null,from:R})}if(R.removeAttribute(P),P==="is"&&!Yt[P])if(de||Xt)try{ne(R)}catch(F){}else try{R.setAttribute(P,"")}catch(F){}}return O}(),En=function(){function O(P){var R,F;if(xe)P=""+P;else{var W=M(P,/^[\r\n\t ]+/);F=W&&W[0]}ce==="application/xhtml+xml"&&Ae===se&&(P=''+P+"");var Q=_t?_t.createHTML(P):P;if(Ae===se)try{R=new Ft().parseFromString(Q,ce)}catch(at){}if(!R||!R.documentElement){R=me.createDocument(Ae,"template",null);try{R.documentElement.innerHTML=Qe?Pe:Q}catch(at){}}var Z=R.body||R.documentElement;return P&&F&&Z.insertBefore(At.createTextNode(F),Z.childNodes[0]||null),Ae===se?un.call(R,fe?"html":"body")[0]:fe?R.documentElement:Z}return O}(),we=function(){function O(P){return ye.call(P.ownerDocument||P,P,vt.SHOW_ELEMENT|vt.SHOW_COMMENT|vt.SHOW_TEXT|vt.SHOW_PROCESSING_INSTRUCTION|vt.SHOW_CDATA_SECTION,null,!1)}return O}(),Rn=function(){function O(P){return P instanceof Pt&&(typeof P.nodeName!="string"||typeof P.textContent!="string"||typeof P.removeChild!="function"||!(P.attributes instanceof Et)||typeof P.removeAttribute!="function"||typeof P.setAttribute!="function"||typeof P.namespaceURI!="string"||typeof P.insertBefore!="function"||typeof P.hasChildNodes!="function")}return O}(),he=function(){function O(P){return e(bt)==="object"?P instanceof bt:P&&e(P)==="object"&&typeof P.nodeType=="number"&&typeof P.nodeName=="string"}return O}(),ae=function(){function O(P,R,F){re[P]&&b(re[P],function(W){W.call(ft,R,F,Oe)})}return O}(),Cn=function(){function O(P){var R;if(ae("beforeSanitizeElements",P,null),Rn(P)||x(/[\u0080-\uFFFF]/,P.nodeName))return ne(P),!0;var F=Jt(P.nodeName);if(ae("uponSanitizeElement",P,{tagName:F,allowedTags:zt}),P.hasChildNodes()&&!he(P.firstElementChild)&&(!he(P.content)||!he(P.content.firstElementChild))&&x(/<[/\w]/g,P.innerHTML)&&x(/<[/\w]/g,P.textContent)||F==="select"&&x(/